From 2954926da8dd76ae0c3a0cca82bbb9c6707e5fbd Mon Sep 17 00:00:00 2001 From: luoyang Date: Tue, 25 Jun 2019 15:39:30 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E7=BD=91=E9=93=B6=E5=BF=AB=E6=8D=B7?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E6=96=B0=E7=89=88=E6=94=AF=E4=BB=98=E9=A1=B5?= =?UTF-8?q?=EF=BC=8C=E5=8F=AF=E8=87=AA=E7=94=B1=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/ClientInfoCacheSupport.java | 4 + .../manage/merchants/core/ClientManager.java | 4 + .../impls/ClientInfoCacheSupportImpl.java | 17 + .../core/impls/ClientManagerImpl.java | 26 + .../impls/CBBankPaypadVersionModify.java | 29 + .../web/PartnerManageController.java | 5 + .../merchants/web/PartnerViewController.java | 6 + .../static/images/cbbank_payment_page_v1.jpg | Bin 0 -> 54038 bytes .../static/images/cbbank_payment_page_v2.jpg | Bin 0 -> 25627 bytes .../static/payment/partner/partner-manage.js | 16 + src/main/ui/static/payment/partner/partner.js | 15 + .../templates/client_payment_info.html | 17 +- .../templates/partner_payment_info.html | 17 + .../cbpay/css/{ => v1}/gateway_phone.css | 0 .../templates/cbpay/css/v2/gateway_phone.css | 719 ++++++++++++++++++ .../cbpay/lakala/v2/gateway_jsapi_phone.js | 89 +++ .../cbpay/yeepay/v2/gateway_jsapi_phone.js | 116 +++ .../static/templates/payment/v4/payment.css | 17 +- 18 files changed, 1093 insertions(+), 4 deletions(-) create mode 100644 src/main/java/au/com/royalpay/payment/manage/merchants/entity/impls/CBBankPaypadVersionModify.java create mode 100644 src/main/ui/static/images/cbbank_payment_page_v1.jpg create mode 100644 src/main/ui/static/images/cbbank_payment_page_v2.jpg rename src/main/ui/static/templates/cbpay/css/{ => v1}/gateway_phone.css (100%) create mode 100644 src/main/ui/static/templates/cbpay/css/v2/gateway_phone.css create mode 100644 src/main/ui/static/templates/cbpay/lakala/v2/gateway_jsapi_phone.js create mode 100644 src/main/ui/static/templates/cbpay/yeepay/v2/gateway_jsapi_phone.js diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientInfoCacheSupport.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientInfoCacheSupport.java index fcbe2b634..653a7b10f 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientInfoCacheSupport.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientInfoCacheSupport.java @@ -6,4 +6,8 @@ public interface ClientInfoCacheSupport { void clearClientCache(int clientId); void clearClientMonikerCache(String clientMoniker); + + void clearClientConfigCache(int clientId); + + void clearClientMonikerConfigCache(String clientMoniker); } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java index 27451135c..efdf669d4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java @@ -241,6 +241,8 @@ public interface ClientManager { void changePaymentPage(JSONObject manager, String clientMoniker, String paypad_version); + void changeCBBankPaymentPage(JSONObject manager, String clientMoniker, String paypad_version); + void changePaymentSuccessPage(JSONObject manager, String clientMoniker, String paysuccess_version); void switchChildEachRefund(JSONObject manager, String clientMoniker, boolean childEachRefund); @@ -251,6 +253,8 @@ public interface ClientManager { void changePaymentPage(JSONObject account, String paypad_version); + void changeCBBankPaymentPage(JSONObject account, String paypad_version); + void changeManualSettle(JSONObject account , int client_id, boolean manual_settle,String operator_id,int type,String operation); void changeQRCodePaySurcharge(JSONObject account, boolean paySurcharge); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientInfoCacheSupportImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientInfoCacheSupportImpl.java index 47b6308cf..3b9ce12ac 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientInfoCacheSupportImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientInfoCacheSupportImpl.java @@ -1,6 +1,7 @@ package au.com.royalpay.payment.manage.merchants.core.impls; import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper; +import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper; import au.com.royalpay.payment.manage.merchants.core.ClientInfoCacheSupport; import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.signin.core.SignInAccountService; @@ -20,6 +21,8 @@ public class ClientInfoCacheSupportImpl implements ClientInfoCacheSupport{ @Resource private ClientManager clientManager; @Resource + private ClientConfigMapper clientConfigMapper; + @Resource private ClientInfoCacheSupport clientInfoCacheSupport; @Override @@ -39,4 +42,18 @@ public class ClientInfoCacheSupportImpl implements ClientInfoCacheSupport{ @CacheEvict(value = ":app_client_info_moniker:", key = "#clientMoniker") public void clearClientMonikerCache(String clientMoniker) { } + + @Override + @CacheEvict(value = ":app_client_config_info:", key = "''+#clientId") + public void clearClientConfigCache(int clientId) { + JSONObject client = clientConfigMapper.find(clientId); + if(client!=null){ + clientInfoCacheSupport.clearClientMonikerConfigCache(client.getString("client_moniker")); + } + } + + @Override + @CacheEvict(value = ":app_client_config_info_moniker:", key = "#clientMoniker") + public void clearClientMonikerConfigCache(String clientMoniker) { + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index db36e43d5..e4f595761 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -3220,6 +3220,19 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid clientModifySupport.processClientConfigModify(new PaypadVersionModify(manager, clientMoniker, paypad_version)); } + @Override + public void changeCBBankPaymentPage(JSONObject manager, String clientMoniker, String paypad_version) { + JSONObject client = getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new InvalidShortIdException(); + } + checkOrgPermission(manager, client); + JSONObject clientConfig = clientConfigMapper.find(client.getIntValue("client_id")); + clientConfig.put("cbbank_paypad_version", paypad_version); + clientConfigMapper.update(clientConfig); + clientInfoCacheSupport.clearClientMonikerConfigCache(clientMoniker); + } + @Override public void changeGatewayVersion(JSONObject account, boolean enable_gateway_v2) { int clientId = account.getIntValue("client_id"); @@ -3328,6 +3341,19 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } + @Override + public void changeCBBankPaymentPage(JSONObject account, String paypad_version) { + int clientId = account.getIntValue("client_id"); + JSONObject client = getClientInfo(clientId); + if (client == null) { + throw new InvalidShortIdException(); + } + JSONObject clientConfig = clientConfigMapper.find(client.getIntValue("client_id")); + clientConfig.put("cbbank_paypad_version", paypad_version); + clientConfigMapper.update(clientConfig); + clientInfoCacheSupport.clearClientMonikerConfigCache(client.getString("client_moniker")); + } + @Override @Transactional public void changeManualSettle(JSONObject account, int client_id, boolean manual_settle, String operator_id, int type, String operation) { diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/entity/impls/CBBankPaypadVersionModify.java b/src/main/java/au/com/royalpay/payment/manage/merchants/entity/impls/CBBankPaypadVersionModify.java new file mode 100644 index 000000000..4c4db3701 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/entity/impls/CBBankPaypadVersionModify.java @@ -0,0 +1,29 @@ +package au.com.royalpay.payment.manage.merchants.entity.impls; + +import au.com.royalpay.payment.manage.merchants.entity.ClientConfigModify; +import com.alibaba.fastjson.JSONObject; + +/** + * Create by yixian at 2018-04-12 16:43 + */ +public class CBBankPaypadVersionModify extends ClientConfigModify { + private String cbbank_paypad_version; + + public CBBankPaypadVersionModify(JSONObject account, String clientMoniker, String paypad_version) { + super(account, clientMoniker); + this.cbbank_paypad_version = paypad_version; + } + + @Override + protected String business() { + + return ""; + } + + @Override + protected JSONObject getModifyResult() { + JSONObject modify = new JSONObject(); + modify.put("cbbank_paypad_version", cbbank_paypad_version); + return modify; + } +} \ No newline at end of file diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java index 03fd08425..9723ecf91 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerManageController.java @@ -321,6 +321,11 @@ public class PartnerManageController { clientManager.changePaymentPage(manager, clientMoniker, pass.getString("paypad_version")); } + @ManagerMapping(value = "/{clientMoniker}/cbbank_payment_page_version", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER}) + public void changeCBBankPaymentPage(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { + clientManager.changeCBBankPaymentPage(manager, clientMoniker, pass.getString("cbbank_paypad_version")); + } + @ManagerMapping(value = "/{clientMoniker}/paysuccess_version", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER}) public void changePaymentSuccessPage(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { clientManager.changePaymentSuccessPage(manager, clientMoniker, pass.getString("paysuccess_version")); diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java index fd72b9942..be7823494 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/web/PartnerViewController.java @@ -395,6 +395,12 @@ public class PartnerViewController { clientManager.changePaymentPage(account, pass.getString("paypad_version")); } + @PartnerMapping(value = "/cbbank_payment_page_version", method = RequestMethod.PUT) + @ResponseBody + public void changeCBBankPaymentPage(@RequestBody JSONObject pass, @ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account) { + clientManager.changeCBBankPaymentPage(account, pass.getString("cbbank_paypad_version")); + } + @PartnerMapping(value = "/qrcode_surcharge", method = RequestMethod.PUT) @ResponseBody public void changeQRCodePaySurCharge(@RequestBody JSONObject pass, @ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account) { diff --git a/src/main/ui/static/images/cbbank_payment_page_v1.jpg b/src/main/ui/static/images/cbbank_payment_page_v1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b53f20290ea162aaff06c7599d222ac56eb7d90 GIT binary patch literal 54038 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

- @@ -365,6 +364,22 @@ +
+ +
+ +
+
+ +
+ + +
+
+
diff --git a/src/main/ui/static/payment/partner/templates/partner_payment_info.html b/src/main/ui/static/payment/partner/templates/partner_payment_info.html index 337691ee6..3ac68bc59 100644 --- a/src/main/ui/static/payment/partner/templates/partner_payment_info.html +++ b/src/main/ui/static/payment/partner/templates/partner_payment_info.html @@ -450,6 +450,23 @@

+
+ +
+ +
+
+ +
+ + +
+
+
+ diff --git a/src/main/ui/static/templates/cbpay/css/gateway_phone.css b/src/main/ui/static/templates/cbpay/css/v1/gateway_phone.css similarity index 100% rename from src/main/ui/static/templates/cbpay/css/gateway_phone.css rename to src/main/ui/static/templates/cbpay/css/v1/gateway_phone.css diff --git a/src/main/ui/static/templates/cbpay/css/v2/gateway_phone.css b/src/main/ui/static/templates/cbpay/css/v2/gateway_phone.css new file mode 100644 index 000000000..4ee6caf8f --- /dev/null +++ b/src/main/ui/static/templates/cbpay/css/v2/gateway_phone.css @@ -0,0 +1,719 @@ +.header-banner { + background: url(/static/images/pay_v4_banner.png) no-repeat; + background-size: 92% 100%; + background-position: center; + box-shadow: 0 0 10px #dddddd inset; +} + +.merchant-title { + font-family: PingFang-SC-Medium; + font-size: 13px; + color: #4A4A4A; + letter-spacing: 0; +} + +.line { + padding-left: 30px; + color: #FFD194; +} + +body { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + box-sizing: border-box; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +div, span, p, ul, li { + box-sizing: border-box; +} + +.warning-sm { + color: red; + font-size: 10px; + transform-origin: left; + transform: scale(0.8); +} + +.weui_grid { + padding: 7px; + height: 53px; +} + +.ff.key { + position: relative; +} + +.ff { + font-size: 26px; + color: #FFFFFF; +} + +.ff img { + margin: 10px auto; + display: block; + width: 34px; +} + +div.wait { + top: 0; + margin-left: auto; + margin-right: auto; + left: 0; + right: 0; + position: absolute; + vertical-align: middle; + text-align: center; + bottom: 0; + opacity: .5; + background-color: gray; + z-index: 10000; +} + +.bisnam { + font-size: 16px; + color: #aaaaaa; + text-align: left; + padding: 0; +} + +.rmbcurrency { + font-size: 13px; + color: #FFFFFF; + vertical-align: text-bottom; + line-height: 38px; + padding-left: 10px; +} + +.static .rmbcurrency { + font-size: 14px; + line-height: 30px; +} + +.rmbvalue { + font-size: 24px; + color: #FFFFFF; + vertical-align: text-bottom; + float: right; +} + +.rmbvalue:before { + content: '≈¥'; + font-size: 16px; +} + +.paydetail { + float: right; + margin-top: 5px; + margin-left: 5px; +} + +.static .rmbvalue { + font-size: 18px; +} + +.currency { + font-size: 40px; + color: #FFFFFF; + /* line-height: 67px; */ + vertical-align: text-bottom; + padding-left: 10px; +} + +.static .currency { + color: #FFFFFF; + font-size: 25px; +} + +.value { + font-size: 50px; + line-height: 66px; + color: #FFFFFF; + margin-left: -5px; + vertical-align: text-bottom; + padding-right: 10px; +} + +.static .value { + color: #FFFFFF; + font-size: 24px; +} + +input.value { + background: transparent; + border: none; + line-height: 50px; +} + +input.value:active { + background: transparent; +} + +input.value:focus { + border: none; + outline: none; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; +} + +.pp { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow-x: hidden; + background-color: #fbf9fe; +} + +.new_year { + width: 100%; + height: 100%; + position: absolute; + top: 18%; + left: 0; + z-index: -1; + border-radius: 0 0 25px 25px; +} + +.bankpay { + text-align: center; + padding: 20px; + color: #FFFFFF; +} + +@media screen and (max-height: 520px) { + .bankpay { + text-align: center; + padding: 0; + color: #FFFFFF; + } +} + +.row { + width: 100%; + padding: 0 20px; +} + +.hidden { + display: none; +} + +.hide-keyboard-btn { + width: 100%; +} + +.hide-keyboard-btn:after { + content: ''; + transform: rotate(45deg); + border-right: 2px solid #ccc; + border-bottom: 2px solid #ccc; + width: 30px; + height: 30px; + transform-origin: center; + display: block; + margin: auto; +} + +.remark-box.visible { + display: block; +} + +.remark-box.visible .remark-input { + font-size: 1.4em; + border: none; + background: #fff; +} + +.white-box { + background: #fff; + width: 96%; + margin: 10px auto; + display: block; + position: relative; + padding: 0 10px; + box-sizing: border-box; +} + +.white-box.full { + width: 100%; +} + +.logo-box .banner { + width: 100%; + display: block; +} + +.logo { + margin: auto; + display: block; + max-height: 60px; + max-width: 80%; +} + +.logo-small { + max-height: 100px; +} + +.currencyrow { + box-sizing: border-box; + margin-top: 0; + text-align: left; + margin-bottom: 0px; + position: relative; +} + +@media screen and (max-height: 670px) { + .currencyrow { + box-sizing: border-box; + margin-top: 0; + text-align: left; + margin-bottom: 0px; + } +} + +@media screen and (max-height: 520px) { + .currencyrow { + box-sizing: border-box; + margin-top: 20px; + text-align: center; + margin-bottom: 20px; + } +} + +.currencyrow:after { + content: ''; + display: block; + clear: both; +} + +.currencyrow > * { + display: inline-block; + vertical-align: bottom; + margin-bottom: 0; + box-sizing: border-box; +} + +.remark-input { + width: 100%; + font-size: 26px; + border-radius: 0; + outline: none; +} + +.remark-box { + display: none; +} + +.remark-box .remark-mask { + text-align: center; + height: 50px; + font-size: 0.9em; + line-height: 35px; + color: #ccc; +} + +.remark-label { + position: absolute; + top: 5px; + right: 5px; + font-size: 20px; + z-index: 1; + font-weight: bold; + color: #0d6aad; +} + +.coupons { + width: 100%; +} + +.coupons > li { + display: block; + width: 100%; + float: none; + color: #888888; + border-bottom: 1px dashed #aaa; + padding: 5px 0px; +} + +.coupons > li:after { + content: ''; + clear: both; + display: block +} + +.coupons > li:last-child { + border: none; +} + +.coupons .title, .coupons .desc, .coupons label { + display: block; +} + +.coupons .coupon-content { + display: block; + float: left; +} + +.coupons .title { + font-weight: bold; + font-size: 1em; +} + +.coupons .use-check { + position: relative; + display: block; + width: 25px; + background-repeat: no-repeat; + height: 25px; + background-size: contain; + float: right; + margin-right: 5px; + margin-top: 10px; +} + +.coupons .use-check.checked { + background-image: url(/static/images/checkbox-checked.png); +} + +.coupons .use-check.unchecked { + background-image: url(/static/images/checkbox-unchecked.png); +} + +.coupons .use-check.disabled { + background-image: url(/static/images/checkbox-disabled.png) !important; +} + +.coupons .desc { + font-size: 1em; +} + +.weui-wepay-logos { + background: transparent; +} + +.row.weui_grids:before, .row.weui_grids .weui_grid:before, .row.weui_grids .weui_grid:after { + display: none; +} + +.button_sp_area { + display: block; + position: relative; + margin-top: 10px; +} + +.button_sp_area:after { + content: ''; + clear: both; + display: block; +} + +.button_sp_area a { + height: 50px; + line-height: 50px; + padding: 0px; + font-family: Helvetica; + font-size: 20px; + float: left; + text-align: center; + border-radius: 0; + color: #fff; +} + +.button_sp_area .paynow { + width: 65%; + background: #FEB900; +} + +.button_sp_area.alipay .paynow { + background-color: #FEB900; +} + +.button_sp_area.rpay .paynow { + background-color: #FEB900; +} + +.button_sp_area .remark-btn { + width: 35%; + background: #FF9705 +} + +.pay-brands { + text-align: center; + line-height: 20px; + font-size: 24px; + margin-top: 64px; + color: #dddddd; +} + +.pay-brands img { + height: 18px; +} + +.pay-brands img.wechat-logo { + height: 14px; +} + +.weui_dialog_bd .final { + font-weight: bold; +} + +#coupon-box-toggle { + padding: 0 20px; + margin-bottom: 10px; + text-align: right; + color: #30af69; + font-size: 12px; + cursor: pointer; +} + +.coupons-container { + position: fixed; + z-index: 1; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: auto; + display: none; +} + +.coupons-container.show { + display: block; +} + +.coupons-container > .coupons-mask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, .6); + z-index: 1; +} + +.coupons-container > .coupon-box { + position: fixed; + z-index: 4; + left: 50%; + top: 50%; + width: 95%; + background: #fff; + padding: 10px; + transform: translate(-50%, -50%); +} + +.coupons-container .coupon-box-title { + width: 100%; + display: block; + background: #fff; + padding: 0 10px 5px; + font-size: 14px; + border-bottom: 1px solid #d0d0d0; +} + +.coupons-container .coupon-box-title:after { + content: ''; + display: block; + clear: both; +} + +.coupons-container .coupon-box-title > .title { + float: left; + display: block; + color: #0BB20C; +} + +.coupons-container .coupon-box-title > #close-coupon-box { + color: #700; + float: right; + display: block; + cursor: pointer; +} + +.actCharity-red { + color: #FB5252; + display: inline; +} + +.actCharity { + display: inline; + font-family: PingFang-SC-Medium; + font-size: 13px; + color: #000000; + letter-spacing: 0; + text-align: center; +} + +.remark-textarea { + font-size: 18px; + -webkit-appearance: none; + width: calc(100% - 24px); + height: 78px; + border: 1px solid #EBE8E8; + padding: 14px 12px; + margin-bottom: 24px; +} + +.remark-textarea::-webkit-input-placeholder { + font-size: 13px; + color: #BCBCBC; +} + +.paynow-button { + width: 245px; + display: block; + font-size: 16px; + color: #FFFFFF; + letter-spacing: 0; + text-align: center; + height: 48px; + line-height: 48px; + position: absolute; + bottom: -24px; + left: 50%; + transform: translateX(-50%); + background: #FF6600; + box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.10); + border-radius: 24px; +} + +.bankpay-button { + border: 1px solid #FF6600; + border-radius: 3px; + font-size: 16px; + color: #FF6600; + letter-spacing: 0; + text-align: center; + display: block; + height: 48px; + line-height: 48px; + background-color: white; +} + +#coupon-box-toggle.canUse-coupon { + padding: 0 30px; + margin-bottom: 10px; + text-align: right; + color: #FF6600; + font-size: 12px; + cursor: pointer; + margin: 11px; +} + +.pay-center-ctn { + margin-top: 30px; + background: #FFFFFF; + box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.10); + border-radius: 2px; + padding: 20px; + position: relative; +} + +.payment-input { + border-radius: 2px; + width: 54%; + height: 64px; + font-family: PingFang-SC-Heavy; + font-size: 25px; + color: #000000; + letter-spacing: 2.4px; + border-style:none; +} + +.payment-input::-webkit-input-placeholder { + color: #000; +} + +.paymengt-tips { + font-family: PingFang-SC-Medium; + font-size: 13px; + color: #000000; + letter-spacing: 0; + margin: 15px 7px; +} + +.payment-pro-input { + font-size: 17px; + -webkit-appearance: none; + border: 1px solid #EBE8E8; + width: calc(100% - 24px); + height: 30px; + margin-bottom: 15px; + padding: 14px 12px +} + +.payment-pro-input::-webkit-input-placeholder { + font-size: 12px; + color: #BCBCBC; +} + +.pay-center-img { + display: inline-block; + vertical-align: middle; + width: 81px; +} + +.pay-center-title { + display: inline-block; + vertical-align: middle; + margin-left: 11px; +} + +.pay-center-dropdown { + width: 100px; + height: 64px; + background: #FF6600; + text-align: center; + line-height: 64px; + position: absolute; + right: 0; +} + +.dropdown-icon { + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTYxMDgzNDM4ODM1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMzNDciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTQ2NS4wOTQyMDIgODExLjk1MDQ5IDY5LjY0OTgwMSAzOTguNjQwMTg2Yy0xNC4xNzg5MzEtMTMuNTU5ODMtMTQuMTc4OTMxLTM1LjU1Mzc1MSAwLTQ5LjExOTcyMSAxNC4xNjU2MjgtMTMuNTY1OTcgMzcuMTMzNzM1LTEzLjU2NTk3IDUxLjMwNTUwMyAwbDM3MS42MTQ2NjkgMzg4LjQwMzAzMSAzNzEuNjIxODMyLTM4OC40MDMwMzFjMTQuMTczODE0LTEzLjU2NTk3IDM3LjE0MDg5OC0xMy41NjU5NyA1MS4zMTM2ODkgMCAxNC4xNzE3NjggMTMuNTY1OTcgMTQuMTcxNzY4IDM1LjU1OTg5IDAgNDkuMTE5NzIxTDUyMC4wNDY3NjggODExLjk1MDQ5Yy03LjU1NjA5MyA3LjIzMDY4Mi0xNy41ODU1MTcgMTAuMzIyMDktMjcuNDc2Nzk1IDkuODI3ODMzQzQ4Mi42Nzg2OTYgODIyLjI3MjU3OSA0NzIuNjQ5MjcyIDgxOS4xODIxOTQgNDY1LjA5NDIwMiA4MTEuOTUwNDl6IiBwLWlkPSIzMzQ4IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg+PC9zdmc+"); + background-size: 13px 13px; + width: 13px; + height: 13px; + display: inline-block; + margin-left: 5px; +} + +.rotate-180 { + transform: rotate(180deg); +} + +.pay-center-dropdown-ctn { + display: none; + background: #FF6600; + color: #fff; +} +.currency{ + padding-left: 6px; + height: 52px; + width: 30px; + font-family: PingFang-SC-Heavy; + font-size: 25px; + color: #000000; + letter-spacing: 2.4px; + text-align: center; +} + +.logo-div { + max-width: 34%; + display: inline-block; + max-height: 60px; + padding-top: 10px; +} + +.merchant-div{ + display: inline-block; + padding-left: 10px; + padding-top: 20px; +} + diff --git a/src/main/ui/static/templates/cbpay/lakala/v2/gateway_jsapi_phone.js b/src/main/ui/static/templates/cbpay/lakala/v2/gateway_jsapi_phone.js new file mode 100644 index 000000000..d669567a0 --- /dev/null +++ b/src/main/ui/static/templates/cbpay/lakala/v2/gateway_jsapi_phone.js @@ -0,0 +1,89 @@ +var num = function (obj) { + obj.value = obj.value.replace(/[^\d.]/g, ""); + obj.value = obj.value.replace(/^\./g, ""); + obj.value = obj.value.replace(/\.{2,}/g, "."); + obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); + obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); + if(obj.value.indexOf(".")< 0 && obj.value !==""){ + obj.value= parseFloat(obj.value); + } + + var surchargeData = calculateSurcharge(obj.value - 0); + var surchargeAmount = Decimal.add(surchargeData.surcharge, surchargeData.tax); + var currency = '$'; + if($('#select_currency').val()=='CNY'){ + currency = '¥'; + } + $('#surchargeAmount').html(currency+surchargeAmount+''); + $('#totalAmount').html(currency+surchargeData.newPrice+''); + if (surchargeAmount - 0 === 0 || !window.c4surcharge) { + $('.surcharge').hide(); + } else { + $('.surcharge').show(); + } + +}; +function onChange(str,num) { + return str.length === num; + +} +$(document).ready(function () { + $('.surcharge').hide(); + $('#commit-btn').click(function () { + var currency = $('#select_currency option:selected').val(); + var price = $('#price').val(); + var product = $('#product').val(); + var remark = $('#remark').val(); + if (price == null || onChange(price, 0)) { + alert('请填写订单金额'); + return; + } + if (price - 0 === 0) { + alert('金额不能为0'); + return; + } + if (product == null || product.length === 0) { + alert('请填写真实的商品名称'); + return; + } + + $('#commit-btn').addClass('hidden'); + $('#commit-btn-loading').removeClass('hidden'); + + var jsonData = { + user_id: window.customer_id, + price: price, + currency: currency, + gateway_type: 8, + description:remark, + product_name:product + }; + + $.ajax({ + url: '/api/v1.0/lakala_pay/partners/' + window.client_moniker + '/submit', + method: 'put', + data: JSON.stringify(jsonData), + contentType: 'application/json', + dataType: 'json', + success: function (res) { + if(res.return_code !== 'SUCCESS'){ + alert(res.message); + $('#commit-btn').removeClass('hidden'); + $('#commit-btn-loading').addClass('hidden'); + }else { + location.href = res.pay_url+'?'+res.sign_url; + // const $form = $(res.formString); + // $('body').append($form); + // $form.submit(); + // $('body').removeChildren($form); + } + }, + error: function (jqXHR) { + alert(JSON.parse(jqXHR.responseText).message); + $('#commit-btn').removeClass('hidden'); + $('#commit-btn-loading').addClass('hidden'); + } + }) + + }); +}); diff --git a/src/main/ui/static/templates/cbpay/yeepay/v2/gateway_jsapi_phone.js b/src/main/ui/static/templates/cbpay/yeepay/v2/gateway_jsapi_phone.js new file mode 100644 index 000000000..cca183ee6 --- /dev/null +++ b/src/main/ui/static/templates/cbpay/yeepay/v2/gateway_jsapi_phone.js @@ -0,0 +1,116 @@ +var num = function (obj) { + obj.value = obj.value.replace(/[^\d.]/g, ""); + obj.value = obj.value.replace(/^\./g, ""); + obj.value = obj.value.replace(/\.{2,}/g, "."); + obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); + obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); + if(obj.value.indexOf(".")< 0 && obj.value !=""){ + obj.value= parseFloat(obj.value); + } + + var surchargeData = calculateSurcharge(obj.value - 0); + var surchargeAmount = Decimal.add(surchargeData.surcharge, surchargeData.tax); + var currency = '$'; + if($('#select-display').text()=='CNY'){ + currency = '¥'; + } + $('#surchargeAmount').html(currency+surchargeAmount+''); + $('#totalAmount').html(currency+surchargeData.newPrice+''); + if (surchargeAmount - 0 == 0 || !window.c4surcharge) { + $('.surcharge').hide(); + } else { + $('.surcharge').show(); + } + +}; + +var changeCurrencyCheckNum = function (obj) { + var surchargeData = calculateSurcharge(obj.val() - 0); + var surchargeAmount = Decimal.add(surchargeData.surcharge, surchargeData.tax); + var currency = '$'; + if($('#select-display').text()=='CNY'){ + currency = '¥'; + } + $('#surchargeAmount').html(currency+surchargeAmount+''); + $('#totalAmount').html(currency+surchargeData.newPrice+''); + if (surchargeAmount - 0 == 0 || !window.c4surcharge) { + $('.surcharge').hide(); + } else { + $('.surcharge').show(); + } + +}; + + +function onChange(str,num) { + if (str.length == num) { + return true; + } + return false; +} +$(document).ready(function () { + $('.pay-center-dropdown-ctn').on('click', function () { + if ($('#select-change').text() == "CNY") { + $('#select-display').html("CNY"); + $('#select-change').html("AUD"); + $('.currency').html("¥"); + changeCurrencyCheckNum($('#price')); + }else { + $('#select-display').html("AUD"); + $('#select-change').html("CNY"); + $('.currency').html("$"); + changeCurrencyCheckNum($('#price')); + } + $('.pay-center-dropdown-ctn').toggle(); + }); + + $('.surcharge').hide(); + $('#commit-btn').click(function () { + var product = $('#product').val(); + var price = $('#price').val(); + var remark = $('#remark').val(); + var currency = $('#select_currency option:selected').val(); + if (price == null || onChange(price,0)) { + alert('请填写订单金额'); + return; + } + if (price-0 ==0) { + alert('金额不能为0'); + return; + } + + $('#commit-btn').addClass('hidden'); + $('#commit-btn-loading').removeClass('hidden'); + + var jsonData = { + user_id: window.customer_id, + price: price, + currency: currency, + product_name:product, + description:remark + }; + + $.ajax({ + url: '/api/v1.0/yeepay/partners/' + window.client_moniker + '/share', + method: 'put', + data: JSON.stringify(jsonData), + contentType: 'application/json', + dataType: 'json', + success: function (res) { + if(res.return_code != 'SUCCESS'){ + alert(res.message); + $('#commit-btn').removeClass('hidden'); + $('#commit-btn-loading').addClass('hidden'); + }else { + location.href = res.pay_url+'?'+res.sign_url; + } + }, + error: function (jqXHR) { + alert(JSON.parse(jqXHR.responseText).message); + $('#commit-btn').removeClass('hidden'); + $('#commit-btn-loading').addClass('hidden'); + } + }) + + }); +}); diff --git a/src/main/ui/static/templates/payment/v4/payment.css b/src/main/ui/static/templates/payment/v4/payment.css index 905dfc5db..c8d95f23d 100644 --- a/src/main/ui/static/templates/payment/v4/payment.css +++ b/src/main/ui/static/templates/payment/v4/payment.css @@ -245,15 +245,13 @@ input.value:focus { .logo-box .banner { width: 100%; - display: block; } .logo { margin: auto; display: block; - margin-top: 20px; max-height: 60px; - max-width: 80%; + max-width: 100%; } .logo-small { @@ -622,3 +620,16 @@ input::-webkit-input-placeholder{ line-height: 60px; vertical-align: text-bottom; } + +.logo-div { + max-width: 34%; + display: inline-block; + max-height: 60px; + padding-top: 10px; +} + +.merchant-div{ + display: inline-block; + padding-left: 10px; + padding-top: 20px; +}