# Conflicts: # pom.xml # src/main/ui/static/payment/cashiers/templates/cashiers.htmlmaster
@ -0,0 +1,26 @@
|
||||
package au.com.royalpay.payment.manage.mappers.system;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yixsoft.support.mybatis.autosql.annotations.AdvanceSelect;
|
||||
import com.yixsoft.support.mybatis.autosql.annotations.AutoMapper;
|
||||
import com.yixsoft.support.mybatis.autosql.annotations.AutoSql;
|
||||
import com.yixsoft.support.mybatis.autosql.annotations.SqlType;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by yishuqian on 06/03/2017.
|
||||
*/
|
||||
@AutoMapper(tablename = "sys_merchant_warrior_files", pkName = "file_id")
|
||||
public interface ClientMWFilesMapper {
|
||||
@AutoSql(SqlType.INSERT)
|
||||
void save(JSONObject partner);
|
||||
|
||||
@AutoSql(SqlType.UPDATE)
|
||||
void update(JSONObject partner);
|
||||
|
||||
@AutoSql(SqlType.SELECT)
|
||||
@AdvanceSelect(addonWhereClause = "is_valid = 1")
|
||||
List<JSONObject> findClientFile(@Param("client_id") int clientId);
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package au.com.royalpay.payment.manage.merchants.beans;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
/**
|
||||
* Created by yishuqian on 07/03/2017.
|
||||
*/
|
||||
public class ClientMWAuthFilesInfo {
|
||||
private String upay_application_form;
|
||||
private String upay_agreement_file;
|
||||
private String upay_offer_letter;
|
||||
private String upay_driver_license;
|
||||
private String upay_residence_certificate;
|
||||
private String upay_risk_level;
|
||||
private String upay_risk_remark;
|
||||
|
||||
public JSONObject toJson(){
|
||||
return (JSONObject)JSONObject.toJSON(this);
|
||||
}
|
||||
|
||||
public JSONObject toRiskInfoJson() {
|
||||
JSONObject params = new JSONObject();
|
||||
if (StringUtils.isNotBlank(upay_risk_level)) {
|
||||
params.put("upay_risk_level", upay_risk_level);
|
||||
}
|
||||
if (StringUtils.isNotBlank(upay_risk_remark)) {
|
||||
params.put("upay_risk_remark", upay_risk_remark);
|
||||
}
|
||||
return params;
|
||||
}
|
||||
|
||||
public String getUpay_agreement_file() {
|
||||
return upay_agreement_file;
|
||||
}
|
||||
|
||||
public String getUpay_application_form() {
|
||||
return upay_application_form;
|
||||
}
|
||||
|
||||
public String getUpay_driver_license() {
|
||||
return upay_driver_license;
|
||||
}
|
||||
|
||||
public String getUpay_offer_letter() {
|
||||
return upay_offer_letter;
|
||||
}
|
||||
|
||||
public void setUpay_agreement_file(String upay_agreement_file) {
|
||||
this.upay_agreement_file = upay_agreement_file;
|
||||
}
|
||||
|
||||
public void setUpay_application_form(String upay_application_form) {
|
||||
this.upay_application_form = upay_application_form;
|
||||
}
|
||||
|
||||
public String getUpay_residence_certificate() {
|
||||
return upay_residence_certificate;
|
||||
}
|
||||
|
||||
public String getUpay_risk_level() {
|
||||
return upay_risk_level;
|
||||
}
|
||||
|
||||
public void setUpay_driver_license(String upay_driver_license) {
|
||||
this.upay_driver_license = upay_driver_license;
|
||||
}
|
||||
|
||||
public void setUpay_offer_letter(String upay_offer_letter) {
|
||||
this.upay_offer_letter = upay_offer_letter;
|
||||
}
|
||||
|
||||
public void setUpay_residence_certificate(String upay_residence_certificate) {
|
||||
this.upay_residence_certificate = upay_residence_certificate;
|
||||
}
|
||||
|
||||
public String getUpay_risk_remark() {
|
||||
return upay_risk_remark;
|
||||
}
|
||||
|
||||
public void setUpay_risk_level(String upay_risk_level) {
|
||||
this.upay_risk_level = upay_risk_level;
|
||||
}
|
||||
|
||||
public void setUpay_risk_remark(String upay_risk_remark) {
|
||||
this.upay_risk_remark = upay_risk_remark;
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package au.com.royalpay.payment.manage.merchants.enums;
|
||||
|
||||
public enum UPayAuthFileEnum {
|
||||
ALL(""),
|
||||
UPAY_APPLICATION_FORM("upay_application_form"),
|
||||
UPAY_AGREEMENT_FILE("upay_agreement_file"),
|
||||
UPAY_OFFER_LETTER("upay_offer_letter"),
|
||||
UPAY_DRIVER_LICENSE("upay_driver_license"),
|
||||
UPAY_RESIDENCE_CERTIFICATE("upay_residence_certificate");
|
||||
|
||||
private final String fileName;
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
UPayAuthFileEnum(String fileName) {
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public String[] getFileNameArrays() {
|
||||
return new String[]{UPAY_APPLICATION_FORM.getFileName(),
|
||||
UPAY_AGREEMENT_FILE.getFileName(),
|
||||
UPAY_OFFER_LETTER.getFileName(),
|
||||
UPAY_DRIVER_LICENSE.getFileName(),
|
||||
UPAY_RESIDENCE_CERTIFICATE.getFileName()};
|
||||
}
|
||||
}
|
@ -1,15 +1,15 @@
|
||||
spring:
|
||||
datasource:
|
||||
master:
|
||||
host: 192.168.0.4:3306
|
||||
host: 192.168.0.84:3306
|
||||
jdbc-url: jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
|
||||
password: taylor
|
||||
schema-name: royalpay_production
|
||||
username: taylor
|
||||
password: rpayplus
|
||||
schema-name: royalpay
|
||||
username: root
|
||||
slave:
|
||||
host: 192.168.0.4:3306
|
||||
host: 192.168.0.84:3306
|
||||
jdbc-url: jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
|
||||
password: taylor
|
||||
schema-name: royalpay_production
|
||||
username: taylor
|
||||
password: rpayplus
|
||||
schema-name: royalpay
|
||||
username: root
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
|
@ -1,177 +1,187 @@
|
||||
.qrpay-background {
|
||||
position: fixed;
|
||||
background: #f2f2f2;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
section.content {
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
bottom: 64px;
|
||||
.logo-container {
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
left: 0;
|
||||
text-align: center;
|
||||
padding: 30px 0px;
|
||||
}
|
||||
|
||||
.qrpay-container {
|
||||
width: 700px;
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 40px auto;
|
||||
background: #fff;
|
||||
overflow: visible;
|
||||
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.30);
|
||||
.logo {
|
||||
width: 137px;
|
||||
height: 29px;
|
||||
}
|
||||
|
||||
.qrpay-container .qr-brand {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
padding-top: 20px;
|
||||
.price {
|
||||
color: #FF6600;
|
||||
letter-spacing: 0;
|
||||
text-align: center;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.qrpay-container .qr-brand.wechat {
|
||||
background: #09bb07;
|
||||
.card-pay-table {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.qrpay-container .qr-brand.alipay {
|
||||
background: #1eabeb;
|
||||
.card-pay-title {
|
||||
font-size: 14px;
|
||||
color: #9B9B9B;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.qrpay-container .qr-brand > .wechat-logo {
|
||||
display: block;
|
||||
margin: auto;
|
||||
height: 40px;
|
||||
.card-pay-content {
|
||||
font-size: 14px;
|
||||
color: #202020;
|
||||
letter-spacing: 0;
|
||||
}
|
||||
|
||||
.qrpay-container .price-box {
|
||||
position: relative;
|
||||
display: block;
|
||||
margin: 15px auto;
|
||||
width: 240px;
|
||||
.row-height {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.qrpay-container .price-box:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
.card-pay-footer {
|
||||
position: fixed;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 14px;
|
||||
color: #DDDDDD;
|
||||
letter-spacing: 0;
|
||||
bottom: 15px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.qrpay-container .price-box .exchange-rate {
|
||||
font-size: 16px;
|
||||
display: block;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
.form-container {
|
||||
width: 100%;
|
||||
padding: 22px 20px;
|
||||
}
|
||||
|
||||
.form-content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.qrpay-container .price-box .price {
|
||||
font-size: 22px;
|
||||
float: left;
|
||||
line-height: 28px;
|
||||
.card-pay-table-container {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.card-line {
|
||||
width: 92%;
|
||||
margin: 0 auto;
|
||||
border-bottom: 1px solid #DDDDDD;
|
||||
}
|
||||
|
||||
.form-button {
|
||||
width: 92%;
|
||||
margin: 30px 0;
|
||||
border-radius: 4px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.qrpay-container .price-box .price-left {
|
||||
font-weight: bold;
|
||||
border-right: 2px solid #666;
|
||||
padding-right: 10px;
|
||||
@media screen and (min-width: 768px) {
|
||||
.form-container {
|
||||
width: 50%;
|
||||
margin: 0 auto;
|
||||
padding: 22px 20px;
|
||||
}
|
||||
|
||||
.form-content {
|
||||
width: 50%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.card-pay-table-container {
|
||||
width: 40%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.card-line {
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
border-bottom: 1px solid #DDDDDD;
|
||||
}
|
||||
|
||||
.form-button {
|
||||
width: 60%;
|
||||
margin: 30px 0;
|
||||
border-radius: 4px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
.qrpay-container .price-box .price-right {
|
||||
padding-left: 10px;
|
||||
width: 49%;
|
||||
white-space: nowrap;
|
||||
text-align: left;
|
||||
.btn-warning {
|
||||
color: #fff;
|
||||
background-color: #FF6600 !important;
|
||||
border-color: #FF6600 !important;
|
||||
}
|
||||
|
||||
.qrpay-container .card-input-box {
|
||||
.card-input-box {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.qrpay-container .qrcode-img {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
position: relative;
|
||||
.loading-container {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background: rgba(255, 255, 255, .8);
|
||||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
.loading-container.hide{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.qrpay-container .qr-footer {
|
||||
.loading-container > .loading-box {
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
border-radius: 0 0 10px 10px;
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
background: #f7f7f7;
|
||||
color: #000;
|
||||
margin: auto;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.qrpay-container .qr-footer .form-group {
|
||||
margin-bottom: 2px;
|
||||
font-size: 12px;
|
||||
line-height: 12px;
|
||||
.loading-container > .loading-box > .loading-text {
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-size: 2em;
|
||||
color: #aaa;
|
||||
text-shadow: 2px -1px 4px;
|
||||
}
|
||||
|
||||
.qrpay-container .qr-desc {
|
||||
position: absolute;
|
||||
height: 150px;
|
||||
z-index: 999;
|
||||
top: 140px;
|
||||
right: 30px;
|
||||
.loading-container .loading {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.qrpay-container .btn{
|
||||
border-radius: 0;
|
||||
.loading-container .loading span {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 100%;
|
||||
background-color: #ff6600;
|
||||
margin: 35px 5px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
.loading-container .loading span:nth-child(1) {
|
||||
animation: opacitychange 1s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@media (max-width: 997px) {
|
||||
section.content {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
bottom: 0;
|
||||
top: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.qrpay-container {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#footer {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.qr-desc {
|
||||
display: none;
|
||||
}
|
||||
.loading-container .loading span:nth-child(2) {
|
||||
animation: opacitychange 1s ease-in-out 0.33s infinite;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.dl-horizontal dd {
|
||||
margin-left: 180px;
|
||||
line-height: 32px;
|
||||
}
|
||||
.loading-container .loading span:nth-child(3) {
|
||||
animation: opacitychange 1s ease-in-out 0.66s infinite;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.dl-horizontal dt {
|
||||
float: left;
|
||||
width: 160px;
|
||||
overflow: hidden;
|
||||
clear: left;
|
||||
text-align: right;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
line-height: 32px;
|
||||
@keyframes opacitychange {
|
||||
0%, 100% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
60% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 7.8 KiB |
@ -0,0 +1,498 @@
|
||||
[
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "Veterinary Services",
|
||||
"mccCode": "0742"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Agricultural Cooperatives",
|
||||
"mccCode": "0763"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Horticultural and Landscaping Services",
|
||||
"mccCode": "0780"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "General Contractors—Residential and Commercial",
|
||||
"mccCode": "1520"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Air Conditioning, Heating, and Plumbing Contractors",
|
||||
"mccCode": "1711"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Electrical Contractors",
|
||||
"mccCode": "1731"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Insulation, Masonry, Plastering, Stonework, and Tile Setting",
|
||||
"mccCode": "1740"
|
||||
}
|
||||
],
|
||||
"label": "Extended",
|
||||
"mccCode": "1"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "Carpentry Contractors",
|
||||
"mccCode": "1750"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Roofing and Siding, Sheet Metal Work Contractors",
|
||||
"mccCode": "1761"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Concrete Work Contractors",
|
||||
"mccCode": "1771"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Contractors, Special Trade—not elsewhere classified",
|
||||
"mccCode": "1799"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Miscellaneous Publishing and Printing",
|
||||
"mccCode": "2741"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Typesetting, Plate Making, and Related Services",
|
||||
"mccCode": "2791"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Sanitation, Polishing, and Specialty Cleaning Preparations",
|
||||
"mccCode": "2842"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Airlines, Air Carriers",
|
||||
"mccCode": "3000"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Car Rental Agencies",
|
||||
"mccCode": "3351"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Lodging—Hotels, Motels, Resorts",
|
||||
"mccCode": "3501"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Railroads—Freight",
|
||||
"mccCode": "4011"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Transportation—Suburban and Local Commuter Passenger, including",
|
||||
"mccCode": "4111"
|
||||
}
|
||||
],
|
||||
"label": "Contractors",
|
||||
"mccCode": "2"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "培训类",
|
||||
"mccCode": "30001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "移民留学",
|
||||
"mccCode": "30002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "私人幼儿园",
|
||||
"mccCode": "30003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "舞厅、舞蹈房和舞蹈学校",
|
||||
"mccCode": "30004"
|
||||
}
|
||||
],
|
||||
"label": "教育",
|
||||
"mccCode": "3"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "换汇",
|
||||
"mccCode": "40001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "房产",
|
||||
"mccCode": "40002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "会计、审计和记账服务",
|
||||
"mccCode": "40003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "律师,法律服务",
|
||||
"mccCode": "40004"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "租房中介",
|
||||
"mccCode": "40005"
|
||||
}
|
||||
],
|
||||
"label": "商务咨询",
|
||||
"mccCode": "4"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "公众号服务商",
|
||||
"mccCode": "50001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "各种媒体类宣传",
|
||||
"mccCode": "50002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "广告服务",
|
||||
"mccCode": "50003"
|
||||
}
|
||||
],
|
||||
"label": "传媒",
|
||||
"mccCode": "5",
|
||||
"value": "{\"category\":\"SERVICE\",\"code\":\"7542\",\"description\":\"Car Washes\",\"parentCode\":\"S10\"}"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "美容院",
|
||||
"mccCode": "60001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "医疗美容",
|
||||
"mccCode": "60002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "药店、药房",
|
||||
"mccCode": "60003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "牙科/实验室/医疗/眼科医院器材和用品",
|
||||
"mccCode": "60004"
|
||||
}
|
||||
],
|
||||
"label": "医美",
|
||||
"mccCode": "6"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"label": "超市",
|
||||
"mccCode": "70001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "服装店",
|
||||
"mccCode": "70002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "鞋店",
|
||||
"mccCode": "70003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "珠宝店",
|
||||
"mccCode": "70004"
|
||||
},{
|
||||
"children": [],
|
||||
"label": "箱包",
|
||||
"mccCode": "70005"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "自动售卖机",
|
||||
"mccCode": "70006"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "文具用品商店、各类办公用品商店",
|
||||
"mccCode": "70007"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "报亭、报摊",
|
||||
"mccCode": "70008"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "花店",
|
||||
"mccCode": "70009"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "宠物商店、宠物食品及用品",
|
||||
"mccCode": "70010"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "各类杂货店、便利店",
|
||||
"mccCode": "70011"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "电子设备商店",
|
||||
"mccCode": "70012"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "礼品、卡片、装饰品、纪念品商店",
|
||||
"mccCode": "70013"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "化妆品商店",
|
||||
"mccCode": "70014"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "免税店",
|
||||
"mccCode": "70015"
|
||||
}
|
||||
],
|
||||
"label": "零售",
|
||||
"mccCode": "7"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "桌游吧",
|
||||
"mccCode": "80001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "演唱会",
|
||||
"mccCode": "80002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "马术训练",
|
||||
"mccCode": "80003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "瑜伽",
|
||||
"mccCode": "80004"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "健身",
|
||||
"mccCode": "80005"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "社团",
|
||||
"mccCode": "80006"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "网吧",
|
||||
"mccCode": "80007"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "KTV",
|
||||
"mccCode": "80008"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "电影",
|
||||
"mccCode": "80009"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "按摩店",
|
||||
"mccCode": "80010"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "游乐园、马戏团、嘉年华、占卜",
|
||||
"mccCode": "80011"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "大型游戏机和游戏场所",
|
||||
"mccCode": "80012"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "玩具、游戏店",
|
||||
"mccCode": "80013"
|
||||
}
|
||||
],
|
||||
"label": "休闲娱乐",
|
||||
"mccCode": "8"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "摄影",
|
||||
"mccCode": "90001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "massage",
|
||||
"mccCode": "90002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "通讯运营商",
|
||||
"mccCode": "90003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "车行",
|
||||
"mccCode": "90004"
|
||||
},
|
||||
{
|
||||
"children:":[],
|
||||
"label":"软件服务",
|
||||
"mccCode":"90005"
|
||||
},
|
||||
{
|
||||
"children:":[],
|
||||
"label":"计算机网络/信息服务",
|
||||
"mccCode":"90006"
|
||||
},
|
||||
{
|
||||
"children:":[],
|
||||
"label":"使领馆",
|
||||
"mccCode":"90007"
|
||||
},
|
||||
{
|
||||
"children:":[],
|
||||
"label":"汽车零配件商店",
|
||||
"mccCode":"90008"
|
||||
},
|
||||
{
|
||||
"children:":[],
|
||||
"label":"车体维修店",
|
||||
"mccCode":"90009"
|
||||
},
|
||||
{
|
||||
"children:":[],
|
||||
"label":"电子修理店",
|
||||
"mccCode":"90010"
|
||||
}
|
||||
],
|
||||
"label": "其他服务类",
|
||||
"mccCode": "9"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "Hotel",
|
||||
"mccCode": "100001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "Motel",
|
||||
"mccCode": "100002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "住宿服务(旅馆、酒店、汽车旅馆、度假村等)",
|
||||
"mccCode": "100003"
|
||||
}
|
||||
],
|
||||
"label": "酒店",
|
||||
"mccCode": "10"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "代购",
|
||||
"mccCode": "110001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "物流(大宗出口贸易)",
|
||||
"mccCode": "110002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "红酒出口",
|
||||
"mccCode": "110003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "综合电商",
|
||||
"mccCode": "110004"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "酒庄",
|
||||
"mccCode": "110005"
|
||||
}
|
||||
],
|
||||
"label": "出口贸易",
|
||||
"mccCode": "11"
|
||||
},
|
||||
{
|
||||
"children": [
|
||||
{
|
||||
"children": [],
|
||||
"label": "建材",
|
||||
"mccCode": "120001"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "家居",
|
||||
"mccCode": "120002"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "太阳能板",
|
||||
"mccCode": "120003"
|
||||
},
|
||||
{
|
||||
"children": [],
|
||||
"label": "五金器具店",
|
||||
"mccCode": "120004"
|
||||
}
|
||||
],
|
||||
"label": "家居建材",
|
||||
"mccCode": "12"
|
||||
}
|
||||
]
|
After Width: | Height: | Size: 495 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 502 B |
After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,194 @@
|
||||
<style type="text/css">
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Audit Files
|
||||
<a class="btn-group btn btn-success" ng-if="file" ng-href="{{downloadAsZip()}}" target="_blank">
|
||||
<i class="fa fa-cloud-download">一键下载</i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="form-horizontal">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading"><h4>
|
||||
Merchant Warrior商户风险评级
|
||||
<a class="small" role="button" ng-if="!id_info_form.edit" ng-click="id_info_form.edit=true">
|
||||
<i class="fa fa-edit"></i></a>
|
||||
</h4></div>
|
||||
<div class="panel-body">
|
||||
<div class="row form-horizontal">
|
||||
<div class="form-group" ng-if="id_info_form.edit">
|
||||
<label class="control-label col-sm-2">* 商户风险等级 </label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<select class="form-control"
|
||||
ng-model="file.upay_risk_level" style="width: 250px">
|
||||
<option value="">Please Choose</option>
|
||||
<option value="low" class="risk-options" style="color: green">低风险</option>
|
||||
<option value="medium" class="risk-options" style="color: orange">中风险</option>
|
||||
<option value="high" class="risk-options" style="color: red">高风险</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="id_info_form.edit">
|
||||
<label class="control-label col-sm-2">风控备注</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<textarea class="form-control" ng-model="file.upay_risk_remark" style="height: 100px"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="!id_info_form.edit">
|
||||
<label class="control-label col-sm-2">商户风险等级 </label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<span ng-if="file.upay_risk_level=='low'" style="color: green">低风险</span>
|
||||
<span ng-if="file.upay_risk_level=='medium'" style="color: orange">中风险</span>
|
||||
<span ng-if="file.upay_risk_level=='high'" style="color: red">高风险</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="!id_info_form.edit">
|
||||
<label class="control-label col-sm-2">风控备注</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<textarea class="form-control" ng-model="file.upay_risk_remark" style="height: 100px" disabled></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-footer" ng-if="id_info_form.edit">
|
||||
<button class="btn btn-success" ng-click="saveIdInfo()">保存</button>
|
||||
<button class="btn btn-danger" ng-click="cancelIdInfo()">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">* Merchant Warrior申请表</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<button class="btn btn-primary" type="button"
|
||||
ngf-select="uploadApplyFile($file)">
|
||||
<i class="fa fa-upload"></i> Upload
|
||||
</button>
|
||||
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
|
||||
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_application_form}}" ><i class="fa fa-download"></i></a>
|
||||
</div>
|
||||
<uib-progressbar value="bankFileProgress.value" ng-if="bankFileProgress"></uib-progressbar>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file.upay_application_form}}">
|
||||
<img ng-src="{{file.upay_application_form}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">* Letter of Offer邀约信 </label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<button class="btn btn-primary" type="button"
|
||||
ngf-select="uploadOfferFile($file)">
|
||||
<i class="fa fa-upload"></i> Upload
|
||||
</button>
|
||||
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
|
||||
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_offer_letter}}" ><i class="fa fa-download"></i></a>
|
||||
</div>
|
||||
<uib-progressbar value="idFileProgress.value" ng-if="idFileProgress"></uib-progressbar>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_offer_letter}}">
|
||||
<img ng-src="{{file.upay_offer_letter}}"class="col-sm-6"onerror="this.src='/static/images/file_close.png'">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">* Merchant Warrior商户签署协议</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<button class="btn btn-primary" type="button"
|
||||
ngf-select="uploadAgreementFile($file)">
|
||||
<i class="fa fa-upload"></i> Upload
|
||||
</button>
|
||||
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
|
||||
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_agreement_file}}" ><i class="fa fa-download"></i></a>
|
||||
</div>
|
||||
<uib-progressbar value="companyFileProgress.value" ng-if="companyFileProgress"></uib-progressbar>
|
||||
<table><tbody>
|
||||
<tr>
|
||||
<td><a ng-if="companyIsImage" target="_blank" ng-href="{{file.upay_agreement_file}}">
|
||||
<img ng-src="{{file.upay_agreement_file}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">* 最终受益人驾驶执照</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<button class="btn btn-primary" type="button"
|
||||
ngf-select="uploadDriverFile($file)">
|
||||
<i class="fa fa-upload"></i> Upload
|
||||
</button>
|
||||
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
|
||||
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_driver_license}}" ><i class="fa fa-download"></i></a>
|
||||
</div>
|
||||
<uib-progressbar value="agreementFileProgress.value" ng-if="agreementFileProgress"></uib-progressbar>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_driver_license}}">
|
||||
<img ng-src="{{file.upay_driver_license}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-2">* 受益人居住证明文件</label>
|
||||
<div class="col-sm-4">
|
||||
<div class="form-control-static">
|
||||
<button class="btn btn-primary" type="button"
|
||||
ngf-select="uploadResidenceFile($file)">
|
||||
<i class="fa fa-upload"></i> Upload
|
||||
</button>
|
||||
<i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
|
||||
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_residence_certificate}}" ><i class="fa fa-download"></i></a>
|
||||
</div>
|
||||
<uib-progressbar value="bankFileProgress.value" ng-if="applyFileProgress"></uib-progressbar>
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_residence_certificate}}">
|
||||
<img ng-src="{{file.upay_residence_certificate}}" class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,147 @@
|
||||
<div class="modal-header">
|
||||
<h4>New {{cardRateConfig.title}} Rate</h4>
|
||||
<a role="button" ng-click="switchCardRateConfig()"><i class="fa fa-refresh"></i>Switch {{card_payment_switch_title}} Rate Config</a>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger" ng-if="errmsg" ng-bind="errmsg"></div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form class="form-horizontal" novalidate name="rate_form">
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4">{{cardRateConfig.title}} Clear Days</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<select class="form-control" ng-model="rate.clean_days" id="cleanDays" ng-change="changeDays()">
|
||||
<option value="1">T+1</option>
|
||||
<option value="2">T+2</option>
|
||||
<option value="3">T+3</option>
|
||||
</select>
|
||||
<div>{{rateConfig}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="cardRateConfig.type=='rpaypmt_card'"
|
||||
ng-class="{'has-error':rate_form.domestic_rate_value.$invalid && rate_form.domestic_rate_value.$dirty}">
|
||||
<label class="control-label col-sm-4" for="domestic_rate_value_input">Domestic Rate Value</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="domestic_rate_value" stringToNumber2 class="form-control" ng-model="rate.rate_value"
|
||||
min="0" max="5" step="0.1" id="domestic_rate_value_input" required>
|
||||
<div class="input-group-addon">%</div>
|
||||
</div>
|
||||
<div ng-messages="rate_form.domestic_rate_value.$error" ng-if="rate_form.domestic_rate_value.$dirty">
|
||||
<div class="small text-danger" ng-message="max">
|
||||
<i class="glyphicon glyphicon-alert"></i> No more than 5.0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="min">
|
||||
<i class="glyphicon glyphicon-alert"></i> No less than 0.0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="required">
|
||||
<i class="glyphicon glyphicon-alert"></i> Required Field
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="cardRateConfig.type=='rpaypmt_card'"
|
||||
ng-class="{'has-error':rate_form.international_rate_value.$invalid && rate_form.international_rate_value.$dirty}">
|
||||
<label class="control-label col-sm-4" for="international_rate_value_input">International Rate Value</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="international_rate_value" stringToNumber2 class="form-control" ng-model="rate.ext_rates.international_rate_value"
|
||||
min="0" max="5" step="0.1" id="international_rate_value_input" required>
|
||||
<div class="input-group-addon">%</div>
|
||||
</div>
|
||||
<div ng-messages="rate_form.international_rate_value.$error" ng-if="rate_form.international_rate_value.$dirty">
|
||||
<div class="small text-danger" ng-message="max">
|
||||
<i class="glyphicon glyphicon-alert"></i> No more than 5.0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="min">
|
||||
<i class="glyphicon glyphicon-alert"></i> No less than 0.0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="required">
|
||||
<i class="glyphicon glyphicon-alert"></i> Required Field
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" ng-if="cardRateConfig.type=='rpaypmt_dd'"
|
||||
ng-class="{'has-error':rate_form.direct_debit_rate_value.$invalid && rate_form.direct_debit_rate_value.$dirty}">
|
||||
<label class="control-label col-sm-4" for="direct_debit_rate_value_input">Direct Debit Rate Value</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="direct_debit_rate_value" stringToNumber2 class="form-control" ng-model="rate.rate_value"
|
||||
min="0" max="5" step="0.1" id="direct_debit_rate_value_input" required>
|
||||
<div class="input-group-addon">%</div>
|
||||
</div>
|
||||
<div ng-messages="rate_form.direct_debit_rate_value.$error" ng-if="rate_form.rate_value.$dirty">
|
||||
<div class="small text-danger" ng-message="max">
|
||||
<i class="glyphicon glyphicon-alert"></i> No more than 5.0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="min">
|
||||
<i class="glyphicon glyphicon-alert"></i> No less than 0.0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="required">
|
||||
<i class="glyphicon glyphicon-alert"></i> Required Field
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 新增transaction_fee -->
|
||||
<div class="form-group"
|
||||
ng-class="{'has-error':rate_form.transaction_fee.$invalid && rate_form.transaction_fee.$dirty}">
|
||||
<label class="control-label col-sm-4" for="transaction_fee_input">Transaction Fee</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="Transaction_fee_value" stringToNumber2 class="form-control" ng-model="rate.transaction_fee"
|
||||
min="0" step="0.1" id="transaction_fee_input" required>
|
||||
<div class="input-group-addon">$</div>
|
||||
</div>
|
||||
<div ng-messages="rate_form.transaction_fee.$error" ng-if="rate_form.transaction_fee.$dirty">
|
||||
<div class="small text-danger" ng-message="min">
|
||||
<i class="glyphicon glyphicon-alert"></i> No less than 0
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="required">
|
||||
<i class="glyphicon glyphicon-alert"></i> Required Field
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4" for="active_time_input">Active Date</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" ng-model="rate.active_time" id="active_time_input"
|
||||
uib-datepicker-popup size="10" placeholder="Active Date"
|
||||
is-open="activeDate.open" ng-click="activeDate.open=true"
|
||||
datepicker-options="{maxDate:rate.expiry_time}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4" for="expire_time_input">Expire Date</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" ng-model="rate.expiry_time" id="expire_time_input"
|
||||
uib-datepicker-popup size="10" placeholder="Expire Date"
|
||||
is-open="expireDate.open" ng-click="expireDate.open=true"
|
||||
datepicker-options="{minDate:rate.active_time}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-sm-4" for="remark_text">Remark</label>
|
||||
<div class="col-sm-6">
|
||||
<input class="form-control" ng-model="rate.remark" id="remark_text" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-success" type="button" ng-click="saveRate(rate_form)" ng-disabled="ctrl.sending">Submit</button>
|
||||
<button class="btn btn-danger" type="button" ng-click="$dismiss()">Cancel</button>
|
||||
</div>
|
@ -0,0 +1,47 @@
|
||||
.commit-button{
|
||||
width: 100%;
|
||||
border-radius: 25px;
|
||||
background-color: #ED2424;
|
||||
color: #FFFFFF;
|
||||
font-size: 16px;
|
||||
line-height: 40px;
|
||||
border: 0px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
label{
|
||||
color: #9B9B9B;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.bill-info-right{
|
||||
float: right;
|
||||
}
|
||||
|
||||
.margin-body{
|
||||
margin: 15px
|
||||
}
|
||||
|
||||
.row-line-height{
|
||||
height: 20px;
|
||||
margin: 15px 0px 15px -15px;
|
||||
}
|
||||
|
||||
.row-line-height-plus{
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
}
|
||||
|
||||
.border-top-line{
|
||||
border-top: 1px solid #EEEEEE
|
||||
}
|
||||
|
||||
.border-button-line{
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
|
||||
}
|
||||
|
||||
#timer{
|
||||
font-weight: 600;
|
||||
color: #ED2424;
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
body{
|
||||
padding: 3% 10%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.head{
|
||||
padding-bottom: 20px;
|
||||
border-bottom: 2px solid #DCDCDC;
|
||||
}
|
||||
|
||||
.pc-cash{
|
||||
font-size: 28px;
|
||||
position: absolute;
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
.order-box{
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.count-down{
|
||||
text-align: center;
|
||||
font-size: 20px;
|
||||
margin: 20px;
|
||||
line-height: 97px;
|
||||
background-color: #FEF4F4;
|
||||
}
|
||||
|
||||
label{
|
||||
color: #ED2424;
|
||||
font-size: 20px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.bill-info-right{
|
||||
float: right;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.margin-body{
|
||||
margin: 15px
|
||||
}
|
||||
|
||||
.row-line-height{
|
||||
height: 20px;
|
||||
margin: 15px 0px 15px -15px;
|
||||
}
|
||||
|
||||
.row-line-height-plus{
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
}
|
||||
|
||||
.border-top-line{
|
||||
border-top: 1px solid #EEEEEE
|
||||
}
|
||||
|
||||
.border-button-line{
|
||||
border-bottom: 1px solid #EEEEEE;
|
||||
padding: 20px 5px;
|
||||
}
|
||||
|
||||
#timer{
|
||||
font-weight: 600;
|
||||
color: #ED2424;
|
||||
}
|
||||
|
||||
.info-body{
|
||||
background-color: #FEF4F4;
|
||||
height: 650px;
|
||||
margin-top: 20px;
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
}
|
||||
.info-body-title{
|
||||
background: #ED2424;
|
||||
line-height: 50px;
|
||||
font-size: 25px;
|
||||
color: #FFF;
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
}
|
||||
|
||||
.pay-fun{
|
||||
font-family: PingFang-SC-Bold;
|
||||
font-size: 20px;
|
||||
color: #ED2424;
|
||||
font-weight: 600;
|
||||
margin: 50px;
|
||||
}
|
||||
|
||||
#commit-btn{
|
||||
width: 30%;
|
||||
border-radius: 5px;
|
||||
background-color: #ED2424;
|
||||
color: #FFFFFF;
|
||||
font-size: 16px;
|
||||
line-height: 40px;
|
||||
border: 0px;
|
||||
margin: 100px 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.select-pay-fun{
|
||||
text-align: center;
|
||||
width: 80%;
|
||||
height: 120% ;
|
||||
border: 1px solid #ED2424;
|
||||
padding: 10px 0px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.no-select-pay-fun{
|
||||
text-align: center;
|
||||
width: 80%;
|
||||
height: 120% ;
|
||||
border: 1px solid #EAEAEA;
|
||||
padding: 10px 0px;
|
||||
margin: 5px 0px 5px 0px;
|
||||
}
|
||||
|
||||
#qrImg{
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.img-size{
|
||||
height: 58px;
|
||||
}
|
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 5.1 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 559 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 5.5 KiB |
@ -0,0 +1,252 @@
|
||||
/**
|
||||
* Created by dulingling on 2020-03-25.
|
||||
*/
|
||||
$(document).ready(function () {
|
||||
var paymentFun = '';
|
||||
var selectPaymentHTML = " <img src='/static/templates/billCode/img/bill_select.png'>";
|
||||
var maxtime = window.maxtime;
|
||||
var hasPayment =true;//可支付
|
||||
|
||||
if(window.openmobilefun == 'wechat'|| window.openmobilefun == 'other'){
|
||||
paymentFun = 'Wechat'
|
||||
}else{
|
||||
paymentFun = 'Alipay'
|
||||
$(".select_wechat").empty();
|
||||
$(".select_alipay").append(selectPaymentHTML);
|
||||
$(".select_bank").empty();
|
||||
}
|
||||
|
||||
setInterval(function(){
|
||||
if(maxtime>0){
|
||||
var countdown=document.getElementById("timer");
|
||||
maxtime=maxtime-1;
|
||||
var minute=parseInt(maxtime/60);
|
||||
var second=parseInt(maxtime%60);
|
||||
countdown.innerHTML=minute+'分'+second+'秒';
|
||||
}else{
|
||||
$('#commit-btn').css({"background-color":"#eee",});
|
||||
hasPayment = false;
|
||||
}
|
||||
},1000);
|
||||
|
||||
|
||||
$("#select_wechat").click(function(){
|
||||
if(paymentFun != 'Wechat'){
|
||||
paymentFun = 'Wechat'
|
||||
$(".select_wechat").append(selectPaymentHTML);
|
||||
$(".select_alipay").empty();
|
||||
$(".select_bank").empty();
|
||||
}
|
||||
})
|
||||
$("#select_alipay").click(function(){
|
||||
if(paymentFun != 'Alipay'){
|
||||
paymentFun = 'Alipay'
|
||||
$(".select_wechat").empty();
|
||||
$(".select_alipay").append(selectPaymentHTML);
|
||||
$(".select_bank").empty();
|
||||
}
|
||||
})
|
||||
$("#select_bank").click(function(){
|
||||
if(paymentFun != 'Bank'){
|
||||
paymentFun = 'Bank'
|
||||
$(".select_wechat").empty();
|
||||
$(".select_alipay").empty();
|
||||
$(".select_bank").append(selectPaymentHTML);
|
||||
}
|
||||
})
|
||||
|
||||
$("#commit-btn").click(function () {
|
||||
if(hasPayment){
|
||||
if(window.openmobilefun != 'other'){
|
||||
appPayment()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function appPayment(){
|
||||
var payUrl = getShareLink();
|
||||
$("#commit-btn").css({"background-color":"#eee",});
|
||||
$("#commit-btn").val("订单创建中...");
|
||||
hasPayment = false;
|
||||
$.ajax({
|
||||
url: payUrl,
|
||||
method: 'get',
|
||||
contentType: 'application/json',
|
||||
dataType: 'json',
|
||||
success: function (res) {
|
||||
if(paymentFun == 'Wechat'){
|
||||
if( window.openmobilefun == 'wechat'){
|
||||
invokePay(res.order_id,res.jsapi);
|
||||
}else{
|
||||
redirectH5Payment(res.partner_order_id,res.client_moniker)
|
||||
}
|
||||
}
|
||||
if(paymentFun == 'Alipay'){
|
||||
if(window.openmobilefun == 'alipay'){
|
||||
callPayment(res);
|
||||
}else{
|
||||
redirectH5Payment(res.partner_order_id,res.client_moniker)
|
||||
}
|
||||
}
|
||||
if(paymentFun == 'Bank'){
|
||||
cbbankPayment(res);
|
||||
}
|
||||
},
|
||||
error: function (jqXHR) {
|
||||
alert(jqXHR.responseJSON.message);
|
||||
$("#commit-btn").css({"background-color":"#ED2424",});
|
||||
$("#commit-btn").val("支付");
|
||||
if(maxtime>0){
|
||||
hasPayment = true;
|
||||
}else{
|
||||
hasPayment = false;
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function redirectH5Payment(orderId,clientMoniker){
|
||||
window.location.href='/api/v1.0/share_code/business/bills/'+clientMoniker+'/orders/'+orderId+'/pay';
|
||||
}
|
||||
|
||||
function getShareLink(){
|
||||
var paymentLink = ''
|
||||
if(window.sharetype != 'app'){
|
||||
//PC端扫码访问
|
||||
if(paymentFun == 'Wechat'){
|
||||
if(window.openmobilefun == 'wechat'){
|
||||
paymentLink = '/api/v1.0/share_code/business/bills/'+window.billInfo.bill_code_id+'/wechat/mobile';
|
||||
}else{
|
||||
paymentLink = '/api/v1.0/share_code/business/bills/'+window.billInfo.bill_code_id+'/alipay/mobile/redirectApp?priorityChannel=Wechat';
|
||||
}
|
||||
}
|
||||
if(paymentFun == 'Alipay'){
|
||||
if(window.openmobilefun == 'alipay'){
|
||||
paymentLink = '/api/v1.0/share_code/business/bills/'+window.billInfo.bill_code_id+'/alipay/mobile';
|
||||
}else{
|
||||
paymentLink = '/api/v1.0/share_code/business/bills/'+window.billInfo.bill_code_id+'/alipay/mobile/redirectApp?priorityChannel=Alipay';
|
||||
}
|
||||
}
|
||||
if(paymentFun == 'Bank'){
|
||||
paymentLink = '/api/v1.0/share_code/business/bills/'+window.billInfo.bill_code_id+'/cbbank/mobile?partner_moniker='+window.clientmoniker;
|
||||
}
|
||||
}else{
|
||||
//app扫码访问
|
||||
if(paymentFun == 'Wechat'){
|
||||
if(window.openmobilefun == 'wechat'){
|
||||
paymentLink = '/api/v1.0/share_code/bills/payment/orders/'+window.billInfo.bill_code_id+'/wechat/share_link';
|
||||
}else{
|
||||
paymentLink = '/api/v1.0/share_code/bills/payment/'+window.billInfo.bill_code_id+'/alipay/mobile/redirectApp?priorityChannel=Wechat';
|
||||
}
|
||||
}
|
||||
if(paymentFun == 'Alipay'){
|
||||
if(window.openmobilefun == 'alipay'){
|
||||
paymentLink = '/api/v1.0/share_code/bills/payment/orders/'+window.billInfo.bill_code_id+'/alipay/share_link'
|
||||
}else{
|
||||
paymentLink = '/api/v1.0/share_code/bills/payment/'+window.billInfo.bill_code_id+'/alipay/mobile/redirectApp?priorityChannel=Alipay';
|
||||
|
||||
}
|
||||
}
|
||||
if(paymentFun == 'Bank'){
|
||||
paymentLink = '/api/v1.0/share_code/bills/payment/orders/'+window.billInfo.bill_code_id+'/cbbank/share_link?partner_moniker='+window.clientmoniker;
|
||||
}
|
||||
}
|
||||
return paymentLink;
|
||||
}
|
||||
|
||||
//微信支付方式
|
||||
function invokePay(orderId,paydata) {
|
||||
WeixinJSBridge.invoke('getBrandWCPayRequest', {
|
||||
'appId': paydata.appId,
|
||||
'timeStamp': paydata.timeStamp,
|
||||
'nonceStr': paydata.nonceStr,
|
||||
'package': paydata.package,
|
||||
'signType': paydata.signType,
|
||||
'paySign': paydata.paySign
|
||||
}, function (res) {
|
||||
var redirect = "/api/payment/v1.0/wechat_jsapi_payment/partners/" + window.clientmoniker + "/orders/" + orderId+"?";
|
||||
if (res.err_msg == 'get_brand_wcpay_request:ok') {
|
||||
startCheckOrder(orderId,redirect + (redirect.indexOf('?') < 0 ? '?' : '&') + 'success=true')
|
||||
} else {
|
||||
if (res.err_msg == 'get_brand_wcpay_request:cancel') {
|
||||
hasPayment = true;
|
||||
$("#commit-btn").css({"background-color":"#ED2424",});
|
||||
$("#commit-btn").val("支付");
|
||||
}
|
||||
if( res.err_msg == 'get_brand_wcpay_request:fail'){
|
||||
hasPayment = true;
|
||||
$("#commit-btn").css({"background-color":"#ED2424",});
|
||||
$("#commit-btn").val("支付");
|
||||
location.href = redirect + (redirect.indexOf('?') < 0 ? '?' : '&') + 'success=false';
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//支付宝支付方式
|
||||
function callPayment(paydata) {
|
||||
try {
|
||||
if(typeof paydata.trade_no == 'undefined'){
|
||||
window.location.href = paydata.mweb_url
|
||||
}else {
|
||||
AlipayJSBridge.call('tradePay', {
|
||||
tradeNO: paydata.trade_no
|
||||
}, function (res) {
|
||||
if (res.resultCode == '9000') {
|
||||
AlipayJSBridge.call('startApp', {
|
||||
appId: '20000056',
|
||||
param: {
|
||||
actionType: 'showSuccPage',
|
||||
payResult: res.result
|
||||
},
|
||||
closeCurrentApp: false
|
||||
});
|
||||
startCheckOrder(paydata.order_id, '/api/v1.0/alipay_direct/partners/' + window.clientmoniker + '/orders/' + paydata.order_id + '/result');
|
||||
} else {
|
||||
hasPayment = true;
|
||||
$("#commit-btn").css({"background-color": "#ED2424",});
|
||||
$("#commit-btn").val("支付");
|
||||
}
|
||||
})
|
||||
}
|
||||
} catch (err) {
|
||||
alert(err);
|
||||
$('#wdiv').hide();
|
||||
}
|
||||
}
|
||||
|
||||
//银联支付方式
|
||||
function cbbankPayment(res){
|
||||
if('SUCCESS' !== res.return_code && typeof res.return_code !== 'undefined'){
|
||||
$("#commit-btn").css({"background-color":"#ED2424",});
|
||||
if(maxtime>0){
|
||||
hasPayment = true;
|
||||
}else{
|
||||
hasPayment = false;
|
||||
}
|
||||
}else {
|
||||
location.href = res.pay_url;
|
||||
}
|
||||
}
|
||||
|
||||
//调用查询订单状态方法
|
||||
function startCheckOrder(orderId, url) {
|
||||
function checkOrderStd() {
|
||||
$.ajax({
|
||||
url: '/api/v1.0/payment/orders/' + orderId + '/status',
|
||||
method: 'GET',
|
||||
dataType: 'json',
|
||||
success: function (res) {
|
||||
if (res.paid) {
|
||||
location.href = url;
|
||||
} else {
|
||||
setTimeout(checkOrderStd, 500);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
checkOrderStd();
|
||||
}
|
||||
|
||||
});
|
@ -0,0 +1,159 @@
|
||||
/**
|
||||
* Created by dulingling on 2020-03-25.
|
||||
*/
|
||||
$(document).ready(function () {
|
||||
var paymentFun = 'Wechat';
|
||||
var maxtime = window.maxtime;
|
||||
var hasPayment =true;//可支付
|
||||
|
||||
if(document.documentElement.clientWidth<500){
|
||||
$('.img-size').css({"height":"28px",})
|
||||
}
|
||||
|
||||
if(window.clientInfo.enable_wechat){
|
||||
var paymentFun = 'Wechat';
|
||||
showQRcode();
|
||||
}else if(window.clientInfo.enable_alipay){
|
||||
var paymentFun = 'Alipay';
|
||||
showQRcode();
|
||||
}else if(window.clientInfo.enable_cb_bankpay){
|
||||
var paymentFun = 'Bank';
|
||||
showQRcode();
|
||||
}
|
||||
|
||||
startCheckOrder();
|
||||
|
||||
setInterval(function(){
|
||||
if(maxtime>0){
|
||||
var countdown=document.getElementById("timer");
|
||||
maxtime=maxtime-1;
|
||||
var minute=parseInt(maxtime/60);
|
||||
var second=parseInt(maxtime%60);
|
||||
countdown.innerHTML=minute+'分'+second+'秒';
|
||||
}else{
|
||||
hasPayment = false;
|
||||
$('#qrImg').empty();
|
||||
}
|
||||
},1000);
|
||||
|
||||
|
||||
$("#select_wechat").click(function(){
|
||||
if(paymentFun != 'Wechat'){
|
||||
paymentFun = 'Wechat'
|
||||
$("#select_wechat").removeClass("no-select-pay-fun").addClass("select-pay-fun");
|
||||
$("#select_alipay").removeClass("select-pay-fun").addClass("no-select-pay-fun");
|
||||
$("#select_bank").removeClass("select-pay-fun").addClass("no-select-pay-fun");
|
||||
showQRcode();
|
||||
}
|
||||
})
|
||||
$("#select_alipay").click(function(){
|
||||
if(paymentFun != 'Alipay'){
|
||||
paymentFun = 'Alipay'
|
||||
$("#select_wechat").removeClass("select-pay-fun").addClass("no-select-pay-fun");
|
||||
$("#select_alipay").removeClass("no-select-pay-fun").addClass("select-pay-fun");
|
||||
$("#select_bank").removeClass("select-pay-fun").addClass("no-select-pay-fun");
|
||||
showQRcode();
|
||||
}
|
||||
})
|
||||
$("#select_bank").click(function(){
|
||||
if(paymentFun != 'Bank'){
|
||||
paymentFun = 'Bank'
|
||||
$("#select_wechat").removeClass("select-pay-fun").addClass("no-select-pay-fun");
|
||||
$("#select_alipay").removeClass("select-pay-fun").addClass("no-select-pay-fun");
|
||||
$("#select_bank").removeClass("no-select-pay-fun").addClass("select-pay-fun");
|
||||
showQRcode();
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
function showQRcode() {
|
||||
if (hasPayment) {
|
||||
var payUrl = '';
|
||||
var orderId = window.clientmoniker + dateFormat() + String(Math.random()).substring(2, 8).toUpperCase();
|
||||
var channelName = paymentFun == 'Wechat' ? '微信' : '支付宝'
|
||||
if (paymentFun == 'Wechat') {
|
||||
$('#qrImg').empty();
|
||||
document.getElementById("qrImg").style.display = 'block';
|
||||
var selectPaymentHTML =
|
||||
"<p style='font-size: 20px;font-weight: 800'>请使用" + channelName + "客户端扫码支付</p>" +
|
||||
"<img src='" + window.wechatqrcode + "'>";
|
||||
$('#qrImg').append(selectPaymentHTML)
|
||||
} else if (paymentFun == 'Alipay') {
|
||||
$('#qrImg').empty();
|
||||
document.getElementById("qrImg").style.display = 'block';
|
||||
var selectPaymentHTML =
|
||||
"<p style='font-size: 20px;font-weight: 800'>请使用" + channelName + "客户端扫码支付</p>" +
|
||||
"<img src='" + window.alipayqrcode + "'>";
|
||||
$('#qrImg').append(selectPaymentHTML)
|
||||
} else if (paymentFun == 'Bank') {
|
||||
$('#qrImg').empty();
|
||||
document.getElementById("qrImg").style.display = 'block';
|
||||
if( hasPayment){
|
||||
createCBBankOrder();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function createCBBankOrder() {
|
||||
$.ajax({
|
||||
url: window.cbbankpaymentlink,
|
||||
method: 'get',
|
||||
contentType: 'application/json',
|
||||
dataType: 'json',
|
||||
success: function (res) {
|
||||
cbbankPayment(res);
|
||||
},
|
||||
error: function (jqXHR) {
|
||||
alert(jqXHR.responseJSON.message);
|
||||
if(maxtime>0){
|
||||
hasPayment = true;
|
||||
}else{
|
||||
hasPayment = false;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
function cbbankPayment(res){
|
||||
if('SUCCESS' !== res.return_code && typeof res.return_code !== 'undefined'){
|
||||
}else {
|
||||
location.href = res.pay_url;
|
||||
}
|
||||
}
|
||||
|
||||
//做个每5秒查询查询一次订单状态
|
||||
function startCheckOrder(orderId) {
|
||||
//通知URL
|
||||
|
||||
function checkOrderStd() {
|
||||
$.ajax({
|
||||
url: '/api/v1.0/payment/billOrder/' + window.billInfo.client_order_id + '/status',
|
||||
method: 'GET',
|
||||
dataType: 'json',
|
||||
success: function (res) {
|
||||
if (res.paid) {
|
||||
location.href = res.redirect;
|
||||
} else {
|
||||
setTimeout(checkOrderStd, 500);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
checkOrderStd();
|
||||
}
|
||||
|
||||
function dateFormat() {
|
||||
var date = new Date();
|
||||
var formatTimeStr = '';
|
||||
formatTimeStr += date.getFullYear();
|
||||
formatTimeStr += date.getMonth()+1;
|
||||
formatTimeStr += date.getDate();
|
||||
formatTimeStr += date.getHours();
|
||||
formatTimeStr += date.getMinutes();
|
||||
formatTimeStr += date.getSeconds();
|
||||
return formatTimeStr;
|
||||
}
|
||||
});
|