From ebf61c187fdd2614cea048c4ad0ed7c6246cb0fb Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Fri, 14 Sep 2018 19:48:46 +0800
Subject: [PATCH 01/12] add rpay
---
.../core/impls/ClientManagerImpl.java | 14 +-
.../resources/application-rpay.properties | 6 +-
src/main/ui/static/images/rpay_horizental.png | Bin 0 -> 8157 bytes
.../templates/partner_bankaccounts.html | 1 +
.../ui/static/templates/payment/payment.css | 7 +
.../static/templates/payment/v1/payment.css | 4 +
.../templates/rpay/v1/bill_retail_jsapi.js | 79 +++
.../static/templates/rpay/v1/gateway_jsapi.js | 139 ++++++
.../ui/static/templates/rpay/v1/payment.js | 465 ++++++++++++++++++
.../static/templates/rpay/v1/retail_jsapi.js | 97 ++++
10 files changed, 804 insertions(+), 8 deletions(-)
create mode 100644 src/main/ui/static/images/rpay_horizental.png
create mode 100644 src/main/ui/static/templates/rpay/v1/bill_retail_jsapi.js
create mode 100644 src/main/ui/static/templates/rpay/v1/gateway_jsapi.js
create mode 100644 src/main/ui/static/templates/rpay/v1/payment.js
create mode 100644 src/main/ui/static/templates/rpay/v1/retail_jsapi.js
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 a9aa50311..8747d6b01 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
@@ -1,15 +1,13 @@
package au.com.royalpay.payment.manage.merchants.core.impls;
-import au.com.royalpay.payment.channels.jd.runtime.RpayApi;
-import au.com.royalpay.payment.channels.jd.runtime.beans.SubRpayMerchantInfo;
+import au.com.royalpay.payment.channels.rpay.runtime.RpayApi;
+import au.com.royalpay.payment.channels.rpay.runtime.beans.SubRpayMerchantInfo;
import au.com.royalpay.payment.channels.wechat.config.WeChatPayConfig;
import au.com.royalpay.payment.channels.wechat.config.WechatPayEnvironment;
import au.com.royalpay.payment.channels.wechat.runtime.MpPaymentApi;
import au.com.royalpay.payment.channels.wechat.runtime.WxPayClient;
import au.com.royalpay.payment.channels.wechat.runtime.beans.SubMerchantInfo;
-
import au.com.royalpay.payment.core.PaymentChannelApi;
-import au.com.royalpay.payment.core.beans.PayChannel;
import au.com.royalpay.payment.core.exceptions.EmailException;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.core.utils.OrderExpiryRuleResolver;
@@ -158,8 +156,14 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URISyntaxException;
import java.net.URL;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.TimeZone;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
diff --git a/src/main/resources/application-rpay.properties b/src/main/resources/application-rpay.properties
index e39b8bf00..1b361a41f 100644
--- a/src/main/resources/application-rpay.properties
+++ b/src/main/resources/application-rpay.properties
@@ -1,3 +1,3 @@
-app.privateKey=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKikZJwvKZ3dj5QsRy6xN/cPinAZa3leg8X40YzGrMEYWc2nmZY/EczYPq/kUp1uL2uikweDO35fuVpA4rALmJwXhHzsZyhVk4lEjHaqH8rNpVpmrwKP9rMmbFD23Mfvvt+BkKWan2T2dAMbSdjPY0+DTS4sN1ZrqzycRFxKFpohAgMBAAECgYBoO0Mb7WJxehFV6ZANYedPQkG0S2HL4AjeAY2yztDTf/NxUpdw74ZW74i/OgV93C5e/lqVmBzbXNq418XEPUaSohOqbcv+QRlEdlTAtn82aAUp/c9oSogPiHWs2VKiGoutejwVXQ6V9BAGMMegLwVphUu9dgrPC4dnfGO11fvLiQJBANt0VPmdqdG52rNVllKhF5+d+dIamOOQewWZf7HnkW0uYt9kWSbZCYyey4nP7NlONL7NEdUxn9exg/DYzegB99sCQQDEudve+jV2Ay6gbOS+ylHoCxSroF6jlkBQ0q7LIsWAAzIVLOuo5skC+wJmHzKXDoQBLXcFerP/T/iUSzisKqSzAkEAmjRVXY02/gLttWQnm+pMckGMgOFlm0oz18xzmSwR2TlmCnk12AFcH26ZsT3kvRGiKIxqwnb7TZIUF1IQ5b00TwJALD7xKNF1vLkyf3p+aDrw+ROk7oT/RCPDC2qXTbDgYs5VMVYNGsvtYfI6s+VIZ5koL2ueXWkfmsjNy+yvLmnY6QJADV9xlAa1+mWN2TfzAugd3L0fNLqPJPHBKQS5/bBKcoZlwfXwByrcCceKaCntJRZ056eQ7IeqkJfxjkEo/kgaRg==
-app.rpayPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw4QOJdajtax5/EQ/Tm65tLnaRB3LXrac3jhdOGp+PsQL1tQyRnvKfWDD5qJ2VZ+rSsLUGg//7ubHtuQHFgH8N9BfSDf9PSZLXsgdA0ikAj6/0P+D7VsSAGsw97plXElh3jx1OvKIW46ZFtPgXuotTx1B+4plafhv5JMHMcVYwOGghaDH9Yoh4vaVU6JNw7IWATaycrmAwEns5VVN6uvz2aTYsH8Rb4j2PA8oKW+7ckcF+sCTNJhFK29iHcvLwzGTXrUTaOfk3ZXNhB9g1ou9aolDszUKvj1R7gSoyoq05w6ICno/d0Fu6Oj0H1N36k7OjUt3wX2lm40yu6ymEV6U0QIDAQAB
-app.appId=1c8990fa-7568-49f0-b1c2-eee77b3b70be
\ No newline at end of file
+app.rpay.private-key=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKikZJwvKZ3dj5QsRy6xN/cPinAZa3leg8X40YzGrMEYWc2nmZY/EczYPq/kUp1uL2uikweDO35fuVpA4rALmJwXhHzsZyhVk4lEjHaqH8rNpVpmrwKP9rMmbFD23Mfvvt+BkKWan2T2dAMbSdjPY0+DTS4sN1ZrqzycRFxKFpohAgMBAAECgYBoO0Mb7WJxehFV6ZANYedPQkG0S2HL4AjeAY2yztDTf/NxUpdw74ZW74i/OgV93C5e/lqVmBzbXNq418XEPUaSohOqbcv+QRlEdlTAtn82aAUp/c9oSogPiHWs2VKiGoutejwVXQ6V9BAGMMegLwVphUu9dgrPC4dnfGO11fvLiQJBANt0VPmdqdG52rNVllKhF5+d+dIamOOQewWZf7HnkW0uYt9kWSbZCYyey4nP7NlONL7NEdUxn9exg/DYzegB99sCQQDEudve+jV2Ay6gbOS+ylHoCxSroF6jlkBQ0q7LIsWAAzIVLOuo5skC+wJmHzKXDoQBLXcFerP/T/iUSzisKqSzAkEAmjRVXY02/gLttWQnm+pMckGMgOFlm0oz18xzmSwR2TlmCnk12AFcH26ZsT3kvRGiKIxqwnb7TZIUF1IQ5b00TwJALD7xKNF1vLkyf3p+aDrw+ROk7oT/RCPDC2qXTbDgYs5VMVYNGsvtYfI6s+VIZ5koL2ueXWkfmsjNy+yvLmnY6QJADV9xlAa1+mWN2TfzAugd3L0fNLqPJPHBKQS5/bBKcoZlwfXwByrcCceKaCntJRZ056eQ7IeqkJfxjkEo/kgaRg==
+app.rpay.rpay-public-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw4QOJdajtax5/EQ/Tm65tLnaRB3LXrac3jhdOGp+PsQL1tQyRnvKfWDD5qJ2VZ+rSsLUGg//7ubHtuQHFgH8N9BfSDf9PSZLXsgdA0ikAj6/0P+D7VsSAGsw97plXElh3jx1OvKIW46ZFtPgXuotTx1B+4plafhv5JMHMcVYwOGghaDH9Yoh4vaVU6JNw7IWATaycrmAwEns5VVN6uvz2aTYsH8Rb4j2PA8oKW+7ckcF+sCTNJhFK29iHcvLwzGTXrUTaOfk3ZXNhB9g1ou9aolDszUKvj1R7gSoyoq05w6ICno/d0Fu6Oj0H1N36k7OjUt3wX2lm40yu6ymEV6U0QIDAQAB
+app.rpay.app-id=ae8c8000-d774-42ad-8008-810b55c96aa9
\ No newline at end of file
diff --git a/src/main/ui/static/images/rpay_horizental.png b/src/main/ui/static/images/rpay_horizental.png
new file mode 100644
index 0000000000000000000000000000000000000000..3af67712923a52c8039bb022ce9b96218990f5a2
GIT binary patch
literal 8157
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
check
+
\ No newline at end of file
diff --git a/src/main/ui/static/templates/payment/payment.css b/src/main/ui/static/templates/payment/payment.css
index e32c60cf9..9d13e26d0 100644
--- a/src/main/ui/static/templates/payment/payment.css
+++ b/src/main/ui/static/templates/payment/payment.css
@@ -433,6 +433,9 @@ input.value:focus {
.keyboard-grids .key.paynow.alipay {
background: #108ee9;
}
+.keyboard-grids .key.paynow.rpay {
+ background: #FF2D55;
+}
.alipay {
color: #108ee9;
@@ -442,6 +445,10 @@ input.value:focus {
color: #09bb07;
}
+.rpay {
+ color: #FF2D55;
+}
+
.keyboard-grids .key.paynow > .label {
display: block;
position: absolute;
diff --git a/src/main/ui/static/templates/payment/v1/payment.css b/src/main/ui/static/templates/payment/v1/payment.css
index c61863f70..5c535ec04 100644
--- a/src/main/ui/static/templates/payment/v1/payment.css
+++ b/src/main/ui/static/templates/payment/v1/payment.css
@@ -366,6 +366,10 @@ input.value:focus {
background-color: #108ee9;
}
+.button_sp_area.alipay .paynow {
+ background-color: #FF2D55;
+}
+
.button_sp_area .remark-btn {
width: 35%;
background: #20C1ED
diff --git a/src/main/ui/static/templates/rpay/v1/bill_retail_jsapi.js b/src/main/ui/static/templates/rpay/v1/bill_retail_jsapi.js
new file mode 100644
index 000000000..7e7290d52
--- /dev/null
+++ b/src/main/ui/static/templates/rpay/v1/bill_retail_jsapi.js
@@ -0,0 +1,79 @@
+/**
+ * Created by yixian on 2016-07-15.
+ */
+$(document).ready(function () {
+ 'use strict';
+ decode();
+ function decode() {
+ var redirect = window.redirect;
+ while(redirect.indexOf('://')<0){
+ redirect = decodeURIComponent(redirect);
+ if(redirect==window.redirect){
+ break;
+ }
+ window.redirect = redirect;
+ }
+ }
+ var dataCache = {paying: false};
+ $('#key_P').bind('touchstart', startPay);
+ function startPay() {
+ $('#wdiv').show();
+ if (dataCache.paying) {
+ return;
+ }
+ dataCache.paying = true;
+
+ $.ajax({
+ url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/'+window.order_id+'/order_params',
+ method: 'GET',
+ dataType: 'json',
+ success: function (pay) {
+ if (pay.direct_paid) {
+ location.href = window.redirect;
+ return;
+ }
+ if (window.AlipayJSBridge) {
+ callPayment();
+ } else {
+ // 如果没有注入则监听注入的事件
+ document.addEventListener('AlipayJSBridgeReady', callPayment, false);
+ }
+
+ function callPayment() {
+ try {
+ AlipayJSBridge.call('tradePay', {
+ tradeNO: pay.trade_no
+ }, function (res) {
+ dataCache.paying = false;
+ if (res.resultCode == '9000') {
+ AlipayJSBridge.call('startApp', {
+ appId: '20000056',
+ param: {
+ actionType: 'showSuccPage',
+ payResult: res.result
+ },
+ closeCurrentApp: false
+ });
+ location.href = window.redirect;
+ } else {
+ alert(res.memo);
+ }
+ $('#wdiv').hide();
+ })
+ } catch (err) {
+ alert(err);
+ $('#wdiv').hide();
+ }
+ }
+ },
+ error: function (jqXhr) {
+ alert(jqXhr.responseJSON.message);
+ $('#wdiv').hide();
+ dataCache.paying = false;
+ }
+ })
+
+
+ }
+
+});
\ No newline at end of file
diff --git a/src/main/ui/static/templates/rpay/v1/gateway_jsapi.js b/src/main/ui/static/templates/rpay/v1/gateway_jsapi.js
new file mode 100644
index 000000000..9f876394f
--- /dev/null
+++ b/src/main/ui/static/templates/rpay/v1/gateway_jsapi.js
@@ -0,0 +1,139 @@
+/**
+ * Created by yixian on 2016-07-15.
+ */
+$(document).ready(function () {
+ 'use strict';
+ decode();
+
+ function decode() {
+ if (window.client_moniker == 'PINE') {
+ alert('debug:origin redirect:' + window.redirect);
+ }
+ var redirect = window.redirect;
+ while (redirect.indexOf('://') < 0) {
+ redirect = decodeURIComponent(redirect);
+ if (redirect == window.redirect) {
+ break;
+ }
+ window.redirect = redirect;
+ }
+
+ }
+
+ var dataCache = {paying: false};
+ $('#key_P').bind('touchstart', startPay);
+ if (window.tradeNo) {
+
+ if (window.AlipayJSBridge) {
+ callPayment(window.tradeNo);
+ } else {
+ // 如果没有注入则监听注入的事件
+ document.addEventListener('AlipayJSBridgeReady', function () {
+ callPayment(window.tradeNo);
+ }, false);
+ }
+ }
+
+ function startPay() {
+ $('#wdiv').show();
+ if (dataCache.paying) {
+ return;
+ }
+ dataCache.paying = true;
+
+ $.ajax({
+ url: './preorder',
+ method: 'GET',
+ dataType: 'json',
+ success: function (pay) {
+ if (pay.direct_paid) {
+ location.href = window.redirect + (window.redirect.indexOf('?') < 0 ? '?' : '&') + 'success=true';
+ return;
+ }
+ if (window.AlipayJSBridge) {
+ callPayment(pay.trade_no);
+ } else {
+ // 如果没有注入则监听注入的事件
+ document.addEventListener('AlipayJSBridgeReady', function () {
+ callPayment(pay.trade_no);
+ }, false);
+ }
+
+ },
+ error: function (jqXhr) {
+ alert(jqXhr.responseJSON.message);
+ $('#wdiv').hide();
+ dataCache.paying = false;
+ }
+ })
+
+
+ }
+
+ function callPayment(tradeNo) {
+ try {
+ if (window.client_moniker == 'PINE') {
+ alert('debug:trade no=' + tradeNo)
+ }
+ AlipayJSBridge.call('tradePay', {
+ tradeNO: tradeNo
+ }, function (res) {
+ dataCache.paying = false;
+ if (res.resultCode == '9000') {
+ AlipayJSBridge.call('startApp', {
+ appId: '20000056',
+ param: {
+ actionType: 'showSuccPage',
+ payResult: res.result
+ },
+ closeCurrentApp: false
+ });
+ startCheckOrder(window.client_moniker, window.merchant_orderid);
+ } else {
+ alert(res.memo);
+ if (window.tradeNo) {
+ location.href = window.redirect + (window.redirect.indexOf('?') < 0 ? '?' : '&') + 'success=false';
+ }
+ }
+ $('#wdiv').hide();
+ })
+ } catch (err) {
+ alert(err);
+ $('#wdiv').hide();
+ }
+ }
+
+ function startCheckOrder(clientMoniker, merchantOrderId) {
+ function checkOrderStd() {
+ $.ajax({
+ url: '/api/v1.0/payment/clients/' + clientMoniker + '/orders/' + merchantOrderId + '/status',
+ method: 'GET',
+ dataType: 'json',
+ success: function (res) {
+ if (res.paid) {
+ location.href = window.redirect + (window.redirect.indexOf('?') < 0 ? '?' : '&') + 'success=true';
+ } else {
+ setTimeout(checkOrderStd, 500);
+ }
+ }
+ })
+ }
+
+ checkOrderStd();
+ }
+
+ function waitForPaymentSuccess(orderId) {
+ var sock = new SockJS('/register');
+ var client = Stomp.over(sock);
+ client.connect({}, function () {
+ client.subscribe('/app/payment/orders/' + orderId, function (msg) {
+ var json = JSON.parse(msg.body);
+ var concat = '?';
+ if (window.redirect.indexOf('?') > 0) {
+ concat = '&';
+ }
+ location.href = window.redirect + concat + 'time=' + json.time + '&nonce_str=' + json.nonce_str + '&sign=' + json.sign + '&success=true';
+ })
+ })
+ }
+});
\ No newline at end of file
diff --git a/src/main/ui/static/templates/rpay/v1/payment.js b/src/main/ui/static/templates/rpay/v1/payment.js
new file mode 100644
index 000000000..0f34739ab
--- /dev/null
+++ b/src/main/ui/static/templates/rpay/v1/payment.js
@@ -0,0 +1,465 @@
+/**
+ * Created by yixian on 2017-05-08
+ */
+$(function () {
+ 'use strict';
+ // document.querySelector('body').addEventListener('touchmove', function (e) {
+ // if (!document.querySelector('.coupons').contains(e.target)) {
+ // e.preventDefault();
+ // }
+ // })
+ var dataCache = {price: '0', coupons: [], coupon_groups: {}};
+ var exchangeRate = parseFloat(window.exchange_rate);
+
+ // if (window.AlipayJSBridge) {
+ // AlipayJSBridge.call('hideOptionMenu');
+ // } else {
+ // document.addEventListener('AlipayJSBridgeReady', function () {
+ // AlipayJSBridge.call('hideOptionMenu');
+ // }, false);
+ // }
+ dataCache.paying = false;
+ var ctrl = {};
+
+ $('.ff.key').bind('touchstart', function () {
+ if (dataCache.paying) {
+ return;
+ }
+ var char = $(this).attr('data-char');
+ appendChar(char);
+ });
+
+ $('.coupons .use-check').click(function () {
+ if ($(this).hasClass('disabled')) {
+ return;
+ }
+ var couponId = $(this).attr('data-coupon-id');
+ var couponGroup = $(this).attr('data-coupon-group');
+ if (couponGroup) {
+ var prevCouponId = dataCache.coupon_groups[couponGroup];
+ if (prevCouponId) {
+ var prevIdx = dataCache.coupons.indexOf(prevCouponId);
+ if (prevIdx >= 0) {
+ dataCache.coupons.splice(prevIdx, 1);
+ }
+ if (prevCouponId != couponId) {
+ $('.coupons .use-check[data-coupon-id="' + prevCouponId + '"]').removeClass('checked').addClass('unchecked');
+ dataCache.coupon_groups[couponGroup] = couponId;
+ } else {
+ dataCache.coupon_groups[couponGroup] = null;
+ }
+ } else {
+ dataCache.coupon_groups[couponGroup] = couponId;
+ }
+
+ }
+
+ if ($(this).is('.checked')) {
+ $(this).removeClass('checked').addClass('unchecked');
+ } else {
+ $(this).removeClass('unchecked').addClass('checked');
+ }
+ var checked = $(this).is('.checked');
+ if (checked) {
+ dataCache.coupons.push(couponId);
+ updatePrice();
+ } else {
+ var idx = dataCache.coupons.indexOf(couponId);
+ dataCache.coupons.splice(idx, 1);
+ updatePrice();
+ }
+ });
+
+ $('#key_B').bind('touchstart', function () {
+ backspace();
+ });
+
+ function updatePoundage(price) {
+ if (window.extensions.indexOf('customerrate') >= 0 && window.rateValue != null) {
+ if (window.use_customised_rate) {
+ var rate = new Decimal(100).plus(window.rateValue).div(100);
+ var poundageValue = new Decimal(dataCache.price).mul(rate).sub(dataCache.price);
+ } else {
+ var rateRemain = new Decimal(100).sub(window.rateValue).div(100);
+ poundageValue = new Decimal(dataCache.price).div(rateRemain).sub(dataCache.price);
+ }
+ dataCache.poundageValue = poundageValue.toFixed(2, Decimal.ROUND_HALF_UP);
+ return poundageValue.plus(price).toFixed(2, Decimal.ROUND_HALF_UP);
+ }
+ return price;
+ }
+
+ function updatePrice() {
+ $('#audVal').html(dataCache.price);
+ var realPrice = dataCache.price;
+ $('#audValReal').html(realPrice);
+ var surchargeData = calculateSurcharge(realPrice);
+
+ var price = surchargeData.newPrice || realPrice;
+ var priceBeforeDiscount = price;
+ dataCache.discounts = [];
+ dataCache.tax = surchargeData.tax;
+ dataCache.surcharge = surchargeData.surcharge;
+
+ $(window.coupons).each(function () {
+ price = this.handleDiscount(price, dataCache.price, dataCache.discounts, dataCache.coupons);
+ });
+ dataCache.customSurcharge = new Decimal(price).sub(realPrice).toFixed(2,Decimal.ROUND_HALF_UP);
+ dataCache.finalPrice = new Decimal(price).toFixed(2, Decimal.ROUND_FLOOR);
+ var rate = 'CNY' == window.currency ? 1 : exchangeRate;
+ var cnyVal = Decimal.mul(price, rate).toFixed(2, Decimal.ROUND_HALF_UP);
+ $('#cnyVal').html(cnyVal);
+ dataCache.currencyPrice = 'CNY' == window.currency ? Decimal.div(priceBeforeDiscount, exchangeRate).toFixed(2, Decimal.ROUND_FLOOR) : priceBeforeDiscount;
+ }
+
+ function updatePoundageStatus() {
+ $(window.coupons).each(function () {
+ var coupon = this;
+ var couponId = coupon.couponId();
+ if (coupon.isEnable(dataCache.currencyPrice || 0)) {
+ $('.coupons .use-check[data-coupon-id=' + couponId + ']').removeClass('disabled');
+ } else {
+ var dom = $('.coupons .use-check[data-coupon-id=' + couponId + ']').addClass('disabled');
+ var couponGroup = dom.attr('data-coupon-group');
+ if (couponGroup) {
+ if (dataCache.coupon_groups[couponGroup] == couponId) {
+ dataCache.coupon_groups[couponGroup] = null;
+ }
+ }
+ var idx = dataCache.coupons.indexOf(couponId);
+ if (idx >= 0) {
+ dataCache.coupons.splice(idx, 1);
+ }
+ dom.removeClass('checked').addClass('unchecked');
+ }
+ })
+ }
+
+ updatePoundageStatus();
+
+ function backspace() {
+ dataCache.price = dataCache.price.substring(0, dataCache.price.length - 1);
+ if (dataCache.price.length == 0) {
+ dataCache.price = '0';
+ }
+ updatePrice();
+ updatePoundageStatus();
+ }
+
+ function appendChar(char) {
+ var pointLocation = dataCache.price.indexOf('.');
+ if (pointLocation >= 0 || char == '.' || dataCache.price.length < 5) {
+ if (pointLocation >= 0 && char == '.') {
+ return;
+ }
+ if (pointLocation >= 0 && pointLocation <= dataCache.price.length - 3) {
+ return;
+ }
+ if (dataCache.price == '0' && char != '.') {
+ dataCache.price = '';
+ }
+ dataCache.price += char;
+ updatePrice();
+ updatePoundageStatus();
+ }
+ }
+
+ $('#coupon-box-toggle').click(function () {
+ $('.coupons-container').addClass('show');
+ });
+ $('.coupons-container>.coupons-mask,.coupons-container #close-coupon-box').click(function () {
+ $(this).parents('.coupons-container').removeClass('show');
+ });
+
+
+ $('.remark-btn').click(function () {
+ var cfg = {
+ title: '备注 Remark',
+ template: '',
+ initialize: function (dialog) {
+ $('').addClass('remark-input').attr('name', 'remark').val(dataCache.remark || '').appendTo($('.weui_dialog_bd', dialog));
+ },
+ confirm: function (dialog, chosen) {
+ if (chosen) {
+ var remark = $('textarea[name="remark"]', dialog).val();
+ if (remark) {
+ $('#remark-box').text('备注:' + remark).show()
+ } else {
+ $('#remark-box').text('').hide();
+ }
+ dataCache.remark = remark;
+ }
+
+ }
+ };
+ showWeuiDialog(cfg);
+ });
+
+ $('.paydetail').click(function () {
+ var config = {
+ title: 'Payment Detail',
+ template: '',
+ initialize: function (dialog) {
+ var bd = $('.weui_dialog_bd', dialog);
+ var currencySymbol = window.currency == 'AUD' ? '$' : '¥';
+ $('').html('Input Price 输入金额:' + currencySymbol + dataCache.price).appendTo(bd);
+ if (parseFloat(dataCache.customSurcharge) > 0) {
+ $('').html('Surcharge 手续费(' + window.rateValue + '%):+' + currencySymbol + dataCache.customSurcharge).appendTo(bd);
+ }
+ $(dataCache.discounts).each(function () {
+ $('').html(this.title + ':-' + currencySymbol + this.amount).appendTo(bd);
+ });
+ $('').addClass('final').html('Final 支付金额:' + currencySymbol + (dataCache.finalPrice || 0)).appendTo(bd);
+ }
+ };
+ showWeuiDialog(config);
+ });
+
+ $('#key_P').click(function () {
+ if (window.requireRemark) {
+ if (!dataCache.remark) {
+ var config = {
+ title: '请先输入备注',
+ template: ''
+ };
+ showWeuiDialog(config);
+ }
+
+ }
+ });
+
+ $('#key_P').bind('touchstart', function () {
+ if (window.requireRemark) {
+ if (!dataCache.remark) {
+ return;
+ }
+ }
+ $('#key_P').addClass('hidden');
+ $('#key_Loading').removeClass('hidden');
+ if (dataCache.paying) {
+ return;
+ }
+ dataCache.paying = true;
+ var data = {price: dataCache.price + '', original_number: true, currency: window.currency};
+ if (dataCache.remark) {
+ data.description = dataCache.remark;
+ }
+ if (window.extensions.indexOf('preauthorize') >= 0) {
+ data.preauthorize = true;
+ }
+ if (window.extensions.indexOf('qrcodemode') >= 0) {
+ data.qrmode = true;
+ }
+ if (window.extensions.indexOf('customerrate') >= 0) {
+ data.customerrate = true;
+ }
+ data.coupons = dataCache.coupons;
+ data.qrcodeVersion = window.qrcodeVersion;
+
+ dataCache.remark = '';
+ $.ajax({
+ url: '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders',
+ method: 'POST',
+ data: JSON.stringify(data),
+ contentType: 'application/json',
+ dataType: 'json',
+ success: function (resp) {
+ pay(resp);
+ if (resp.direct_paid) {
+ location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result';
+ return;
+ }
+ // if (window.AlipayJSBridge) {
+ // callPayment();
+ // } else {
+ // // 如果没有注入则监听注入的事件
+ // document.addEventListener('AlipayJSBridgeReady', callPayment, false);
+ // }
+ //
+ // function callPayment() {
+ // try {
+ // AlipayJSBridge.call('tradePay', {
+ // tradeNO: pay.trade_no
+ // }, function (res) {
+ // dataCache.paying = false;
+ // if (res.resultCode == '9000') {
+ // AlipayJSBridge.call('startApp', {
+ // appId: '20000056',
+ // param: {
+ // actionType: 'showSuccPage',
+ // payResult: res.result
+ // },
+ // closeCurrentApp: false
+ // });
+ // startCheckOrder(pay.order_id, '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result');
+ // } else if (res.resultCode == '6001') {
+ // //do nothing
+ // } else {
+ // if (res.memo) {
+ // weuiAlert(res.memo);
+ // }
+ // }
+ // $('#key_P').removeClass('hidden');
+ // $('#key_Loading').addClass('hidden');
+ // })
+ // } catch (err) {
+ // weuiAlert(err)
+ // }
+ // }
+ },
+ error: function (jqXhr) {
+ weuiAlert(jqXhr.responseJSON.message);
+ $('#key_P').removeClass('hidden');
+ $('#key_Loading').addClass('hidden');
+ dataCache.paying = false;
+ }
+ })
+ });
+
+ 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();
+ }
+
+ function weuiAlert(msg) {
+ var config = {
+ template: msg
+ };
+ showWeuiDialog(config);
+ }
+
+ function showWeuiDialog(config) {
+ if (config.templateUrl) {
+ $.ajax({
+ url: config.templateUrl,
+ dataType: 'html',
+ success: function (template) {
+ buildDialog(template);
+ }
+ });
+ } else {
+ buildDialog(config.template);
+ }
+
+
+ function buildDialog(template) {
+ var defaultConfig = {backdrop: true};
+ config = $.extend({}, defaultConfig, config);
+ var dialog = $("", {class: 'weui_dialog_confirm'});
+ var mask = $('', {class: 'weui_mask'}).appendTo(dialog);
+ if (config.backdrop) {
+ mask.click(function () {
+ dialog.remove();
+ if ($.isFunction(config.dismiss)) {
+ config.dismiss();
+ }
+ })
+ }
+ var dialogBox = $("", {class: 'weui_dialog'}).appendTo(dialog);
+ if (config.title) {
+ $('', {class: 'weui_dialog_hd'}).append($('', {class: 'weui_dialog_title'}).html(config.title)).appendTo(dialogBox);
+ }
+ var dialogBody = $("", {class: 'weui_dialog_bd'}).appendTo(dialogBox);
+ if (template) {
+ dialogBody.append(template);
+ }
+ if ($.isFunction(config.initialize)) {
+ config.initialize(dialog);
+ }
+ var ft = $('').appendTo(dialogBox);
+ if ($.isFunction(config.confirm)) {
+ var yes = $('', {
+ class: 'weui_btn_dialog primary',
+ text: 'OK',
+ style: 'background: #108ee9;color: #fff;'
+ }).appendTo(ft);
+ yes.click(function () {
+ config.confirm(dialog, true);
+ dialog.remove();
+ });
+ var no = $('', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft);
+ no.click(function () {
+ config.confirm(dialog, false);
+ dialog.remove();
+ })
+ } else {
+ var ok = $('', {
+ class: 'weui_btn_dialog primary',
+ text: 'OK',
+ style: 'background: #108ee9;color: #fff;'
+ }).appendTo(ft);
+ ok.click(function () {
+ dialog.remove();
+ })
+ }
+ dialog.appendTo($('body'));
+ }
+
+ }
+
+
+ function getUserId(){
+ window.RPayPlus.send("getUserId", null, function(data){
+ alert(data);
+ });
+ }
+
+ function pay(param){
+ var order={
+ nonce_str:param.nonce_str,
+ rpay_order_id:param.rpay_order_id,
+ mch_order_id:param.mch_order_id
+ };
+ alert("rpay_order_info: nonce_str:"+param.nonce_str+"rpay_order_id:"+param.rpay_order_id+"mch_order_id:"+param.mch_order_id);
+ window.RPayPlus.send('pay', order, function(data){
+ alert('this is callback from native and data='+JSON.stringify(data));
+ });
+ }
+
+ function back(){
+ window.RPayPlus.send("back", null, null);
+ }
+
+ function jsInvoke(){
+ window.RPayPlus.send("jsInvoke", 'Native Test', null);
+ }
+
+ function createOrder(msg){
+ alert('create order information='+JSON.stringify(msg));
+ }
+
+ function queryOrder(msg){
+ alert('query order information='+JSON.stringify(msg));
+
+ var order={
+ orderId:'00001',
+ amount:'$10.98',
+ title:'Balance Top-UP'
+ };
+ setTimeout("window.RPayPlus.onResult("+JSON.stringify(order)+");", 1500);
+ }
+
+ function registerJs(){
+ window.RPayPlus.register('createOrder', function(data){
+ createOrder(data);
+ });
+ window.RPayPlus.register('queryOrder', function(data){
+ queryOrder(data);
+ });
+ }
+ getUserId();
+});
\ No newline at end of file
diff --git a/src/main/ui/static/templates/rpay/v1/retail_jsapi.js b/src/main/ui/static/templates/rpay/v1/retail_jsapi.js
new file mode 100644
index 000000000..6b74c75cf
--- /dev/null
+++ b/src/main/ui/static/templates/rpay/v1/retail_jsapi.js
@@ -0,0 +1,97 @@
+/**
+ * Created by yixian on 2016-07-15.
+ */
+$(document).ready(function () {
+ 'use strict';
+ decode();
+ function decode() {
+ var redirect = window.redirect;
+ while(redirect.indexOf('://')<0){
+ redirect = decodeURIComponent(redirect);
+ if(redirect==window.redirect){
+ break;
+ }
+ window.redirect = redirect;
+ }
+ }
+ var dataCache = {paying: false};
+ $('#key_P').bind('touchstart', startPay);
+ function startPay() {
+ $('#wdiv').show();
+ if (dataCache.paying) {
+ return;
+ }
+ dataCache.paying = true;
+
+ $.ajax({
+ url: '/api/v1.0/alipay/partners/' + window.client_moniker + '/orders/'+window.order_id+'/order_params',
+ method: 'GET',
+ dataType: 'json',
+ success: function (pay) {
+ if (pay.direct_paid) {
+ location.href = window.redirect;
+ return;
+ }
+ if (window.AlipayJSBridge) {
+ callPayment();
+ } else {
+ // 如果没有注入则监听注入的事件
+ document.addEventListener('AlipayJSBridgeReady', callPayment, false);
+ }
+
+ function callPayment() {
+ try {
+ AlipayJSBridge.call('tradePay', {
+ tradeNO: pay.trade_no
+ }, function (res) {
+ dataCache.paying = false;
+ if (res.resultCode == '9000') {
+ AlipayJSBridge.call('startApp', {
+ appId: '20000056',
+ param: {
+ actionType: 'showSuccPage',
+ payResult: res.result
+ },
+ closeCurrentApp: false
+ });
+ startCheckOrder(window.order_id, window.redirect);
+ } else {
+ alert(res.memo);
+ }
+ $('#wdiv').hide();
+ })
+ } catch (err) {
+ alert(err);
+ $('#wdiv').hide();
+ }
+ }
+ },
+ error: function (jqXhr) {
+ alert(jqXhr.responseJSON.message);
+ $('#wdiv').hide();
+ dataCache.paying = false;
+ }
+ })
+
+
+ }
+
+ 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();
+ }
+});
\ No newline at end of file
From 7ec5f960872b29fee262698f86d3e46ca8ea2d05 Mon Sep 17 00:00:00 2001
From: luoyang
Date: Fri, 14 Sep 2018 19:49:17 +0800
Subject: [PATCH 02/12] rollback
---
.../manage/merchants/core/impls/ClientManagerImpl.java | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
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 a9aa50311..7b5c0631a 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
@@ -1,7 +1,7 @@
package au.com.royalpay.payment.manage.merchants.core.impls;
-import au.com.royalpay.payment.channels.jd.runtime.RpayApi;
-import au.com.royalpay.payment.channels.jd.runtime.beans.SubRpayMerchantInfo;
+import au.com.royalpay.payment.channels.rpay.runtime.RpayApi;
+import au.com.royalpay.payment.channels.rpay.runtime.beans.SubRpayMerchantInfo;
import au.com.royalpay.payment.channels.wechat.config.WeChatPayConfig;
import au.com.royalpay.payment.channels.wechat.config.WechatPayEnvironment;
import au.com.royalpay.payment.channels.wechat.runtime.MpPaymentApi;
@@ -170,6 +170,7 @@ import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
import cn.yixblog.platform.http.HttpRequestGenerator;
import cn.yixblog.platform.http.HttpRequestResult;
@@ -3544,6 +3545,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
checkOrgPermission(manager, client);
SubRpayMerchantInfo subRpayMerchantInfo = JSONObject.toJavaObject(client, SubRpayMerchantInfo.class);
+ subRpayMerchantInfo.CheckEmpty();
rpayApi.registerMerchant(client.getIntValue("client_id"), subRpayMerchantInfo);
logger.debug("访问成功,返回的信息是: " );
From dd6392c625e09203dff5fc61ed4676ce7e5679d5 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Fri, 14 Sep 2018 20:19:38 +0800
Subject: [PATCH 03/12] update
---
src/main/resources/application-rpay.properties | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/resources/application-rpay.properties b/src/main/resources/application-rpay.properties
index 1b361a41f..603d8f0e1 100644
--- a/src/main/resources/application-rpay.properties
+++ b/src/main/resources/application-rpay.properties
@@ -1,3 +1,3 @@
-app.rpay.private-key=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKikZJwvKZ3dj5QsRy6xN/cPinAZa3leg8X40YzGrMEYWc2nmZY/EczYPq/kUp1uL2uikweDO35fuVpA4rALmJwXhHzsZyhVk4lEjHaqH8rNpVpmrwKP9rMmbFD23Mfvvt+BkKWan2T2dAMbSdjPY0+DTS4sN1ZrqzycRFxKFpohAgMBAAECgYBoO0Mb7WJxehFV6ZANYedPQkG0S2HL4AjeAY2yztDTf/NxUpdw74ZW74i/OgV93C5e/lqVmBzbXNq418XEPUaSohOqbcv+QRlEdlTAtn82aAUp/c9oSogPiHWs2VKiGoutejwVXQ6V9BAGMMegLwVphUu9dgrPC4dnfGO11fvLiQJBANt0VPmdqdG52rNVllKhF5+d+dIamOOQewWZf7HnkW0uYt9kWSbZCYyey4nP7NlONL7NEdUxn9exg/DYzegB99sCQQDEudve+jV2Ay6gbOS+ylHoCxSroF6jlkBQ0q7LIsWAAzIVLOuo5skC+wJmHzKXDoQBLXcFerP/T/iUSzisKqSzAkEAmjRVXY02/gLttWQnm+pMckGMgOFlm0oz18xzmSwR2TlmCnk12AFcH26ZsT3kvRGiKIxqwnb7TZIUF1IQ5b00TwJALD7xKNF1vLkyf3p+aDrw+ROk7oT/RCPDC2qXTbDgYs5VMVYNGsvtYfI6s+VIZ5koL2ueXWkfmsjNy+yvLmnY6QJADV9xlAa1+mWN2TfzAugd3L0fNLqPJPHBKQS5/bBKcoZlwfXwByrcCceKaCntJRZ056eQ7IeqkJfxjkEo/kgaRg==
-app.rpay.rpay-public-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw4QOJdajtax5/EQ/Tm65tLnaRB3LXrac3jhdOGp+PsQL1tQyRnvKfWDD5qJ2VZ+rSsLUGg//7ubHtuQHFgH8N9BfSDf9PSZLXsgdA0ikAj6/0P+D7VsSAGsw97plXElh3jx1OvKIW46ZFtPgXuotTx1B+4plafhv5JMHMcVYwOGghaDH9Yoh4vaVU6JNw7IWATaycrmAwEns5VVN6uvz2aTYsH8Rb4j2PA8oKW+7ckcF+sCTNJhFK29iHcvLwzGTXrUTaOfk3ZXNhB9g1ou9aolDszUKvj1R7gSoyoq05w6ICno/d0Fu6Oj0H1N36k7OjUt3wX2lm40yu6ymEV6U0QIDAQAB
-app.rpay.app-id=ae8c8000-d774-42ad-8008-810b55c96aa9
\ No newline at end of file
+app.rpay.privateKey=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKikZJwvKZ3dj5QsRy6xN/cPinAZa3leg8X40YzGrMEYWc2nmZY/EczYPq/kUp1uL2uikweDO35fuVpA4rALmJwXhHzsZyhVk4lEjHaqH8rNpVpmrwKP9rMmbFD23Mfvvt+BkKWan2T2dAMbSdjPY0+DTS4sN1ZrqzycRFxKFpohAgMBAAECgYBoO0Mb7WJxehFV6ZANYedPQkG0S2HL4AjeAY2yztDTf/NxUpdw74ZW74i/OgV93C5e/lqVmBzbXNq418XEPUaSohOqbcv+QRlEdlTAtn82aAUp/c9oSogPiHWs2VKiGoutejwVXQ6V9BAGMMegLwVphUu9dgrPC4dnfGO11fvLiQJBANt0VPmdqdG52rNVllKhF5+d+dIamOOQewWZf7HnkW0uYt9kWSbZCYyey4nP7NlONL7NEdUxn9exg/DYzegB99sCQQDEudve+jV2Ay6gbOS+ylHoCxSroF6jlkBQ0q7LIsWAAzIVLOuo5skC+wJmHzKXDoQBLXcFerP/T/iUSzisKqSzAkEAmjRVXY02/gLttWQnm+pMckGMgOFlm0oz18xzmSwR2TlmCnk12AFcH26ZsT3kvRGiKIxqwnb7TZIUF1IQ5b00TwJALD7xKNF1vLkyf3p+aDrw+ROk7oT/RCPDC2qXTbDgYs5VMVYNGsvtYfI6s+VIZ5koL2ueXWkfmsjNy+yvLmnY6QJADV9xlAa1+mWN2TfzAugd3L0fNLqPJPHBKQS5/bBKcoZlwfXwByrcCceKaCntJRZ056eQ7IeqkJfxjkEo/kgaRg==
+app.rpay.rpayPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw4QOJdajtax5/EQ/Tm65tLnaRB3LXrac3jhdOGp+PsQL1tQyRnvKfWDD5qJ2VZ+rSsLUGg//7ubHtuQHFgH8N9BfSDf9PSZLXsgdA0ikAj6/0P+D7VsSAGsw97plXElh3jx1OvKIW46ZFtPgXuotTx1B+4plafhv5JMHMcVYwOGghaDH9Yoh4vaVU6JNw7IWATaycrmAwEns5VVN6uvz2aTYsH8Rb4j2PA8oKW+7ckcF+sCTNJhFK29iHcvLwzGTXrUTaOfk3ZXNhB9g1ou9aolDszUKvj1R7gSoyoq05w6ICno/d0Fu6Oj0H1N36k7OjUt3wX2lm40yu6ymEV6U0QIDAQAB
+app.rpay.appId=ae8c8000-d774-42ad-8008-810b55c96aa9
\ No newline at end of file
From 8eb861edf39c5104a242322e0ebe2dc3d8413a45 Mon Sep 17 00:00:00 2001
From: luoyang
Date: Mon, 17 Sep 2018 11:57:54 +0800
Subject: [PATCH 04/12] update rpay html
---
src/main/ui/static/lib/rpay/rpay_jssdk.js | 2 +-
src/main/ui/static/templates/payment/v2/payment.css | 3 +++
src/main/ui/static/templates/rpay/v1/payment.js | 4 ++--
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/main/ui/static/lib/rpay/rpay_jssdk.js b/src/main/ui/static/lib/rpay/rpay_jssdk.js
index e3f48ea99..4bc92ae54 100644
--- a/src/main/ui/static/lib/rpay/rpay_jssdk.js
+++ b/src/main/ui/static/lib/rpay/rpay_jssdk.js
@@ -21,7 +21,7 @@ $(function (){
if(isiOS){
window.webkit.messageHandlers.rpayplus.postMessage(msg);
} else{
- rpayplus.send(msg);
+ //rpayplus.send(msg);
}
},
diff --git a/src/main/ui/static/templates/payment/v2/payment.css b/src/main/ui/static/templates/payment/v2/payment.css
index e2b39f2b5..9564c3027 100644
--- a/src/main/ui/static/templates/payment/v2/payment.css
+++ b/src/main/ui/static/templates/payment/v2/payment.css
@@ -431,6 +431,9 @@ input.value:focus {
.keyboard-grids .key.paynow.alipay {
background: #108ee9;
}
+.keyboard-grids .key.paynow.rpay {
+ background: #FF2D55;
+}
.alipay {
color: #108ee9;
diff --git a/src/main/ui/static/templates/rpay/v1/payment.js b/src/main/ui/static/templates/rpay/v1/payment.js
index 0f34739ab..316fc80c3 100644
--- a/src/main/ui/static/templates/rpay/v1/payment.js
+++ b/src/main/ui/static/templates/rpay/v1/payment.js
@@ -385,7 +385,7 @@ $(function () {
var yes = $('', {
class: 'weui_btn_dialog primary',
text: 'OK',
- style: 'background: #108ee9;color: #fff;'
+ style: 'background: #FF2D55;color: #fff;'
}).appendTo(ft);
yes.click(function () {
config.confirm(dialog, true);
@@ -400,7 +400,7 @@ $(function () {
var ok = $('', {
class: 'weui_btn_dialog primary',
text: 'OK',
- style: 'background: #108ee9;color: #fff;'
+ style: 'background: #FF2D55;color: #fff;'
}).appendTo(ft);
ok.click(function () {
dialog.remove();
From d416b2265f0239a260035ea903d6bc6c009feba3 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Mon, 17 Sep 2018 13:59:39 +0800
Subject: [PATCH 05/12] tmp
---
.../ui/static/templates/rpay/v1/payment.js | 43 ++++---------------
1 file changed, 9 insertions(+), 34 deletions(-)
diff --git a/src/main/ui/static/templates/rpay/v1/payment.js b/src/main/ui/static/templates/rpay/v1/payment.js
index 316fc80c3..c42004284 100644
--- a/src/main/ui/static/templates/rpay/v1/payment.js
+++ b/src/main/ui/static/templates/rpay/v1/payment.js
@@ -62,11 +62,9 @@ $(function () {
var checked = $(this).is('.checked');
if (checked) {
dataCache.coupons.push(couponId);
- updatePrice();
} else {
var idx = dataCache.coupons.indexOf(couponId);
dataCache.coupons.splice(idx, 1);
- updatePrice();
}
});
@@ -89,29 +87,6 @@ $(function () {
return price;
}
- function updatePrice() {
- $('#audVal').html(dataCache.price);
- var realPrice = dataCache.price;
- $('#audValReal').html(realPrice);
- var surchargeData = calculateSurcharge(realPrice);
-
- var price = surchargeData.newPrice || realPrice;
- var priceBeforeDiscount = price;
- dataCache.discounts = [];
- dataCache.tax = surchargeData.tax;
- dataCache.surcharge = surchargeData.surcharge;
-
- $(window.coupons).each(function () {
- price = this.handleDiscount(price, dataCache.price, dataCache.discounts, dataCache.coupons);
- });
- dataCache.customSurcharge = new Decimal(price).sub(realPrice).toFixed(2,Decimal.ROUND_HALF_UP);
- dataCache.finalPrice = new Decimal(price).toFixed(2, Decimal.ROUND_FLOOR);
- var rate = 'CNY' == window.currency ? 1 : exchangeRate;
- var cnyVal = Decimal.mul(price, rate).toFixed(2, Decimal.ROUND_HALF_UP);
- $('#cnyVal').html(cnyVal);
- dataCache.currencyPrice = 'CNY' == window.currency ? Decimal.div(priceBeforeDiscount, exchangeRate).toFixed(2, Decimal.ROUND_FLOOR) : priceBeforeDiscount;
- }
-
function updatePoundageStatus() {
$(window.coupons).each(function () {
var coupon = this;
@@ -142,7 +117,6 @@ $(function () {
if (dataCache.price.length == 0) {
dataCache.price = '0';
}
- updatePrice();
updatePoundageStatus();
}
@@ -159,7 +133,6 @@ $(function () {
dataCache.price = '';
}
dataCache.price += char;
- updatePrice();
updatePoundageStatus();
}
}
@@ -257,6 +230,9 @@ $(function () {
data.qrcodeVersion = window.qrcodeVersion;
dataCache.remark = '';
+
+ window.RPayPlus.send("showLoading", null, null);
+
$.ajax({
url: '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders',
method: 'POST',
@@ -264,7 +240,8 @@ $(function () {
contentType: 'application/json',
dataType: 'json',
success: function (resp) {
- pay(resp);
+ window.RPayPlus.send("closeLoading", null, null);
+ // pay(resp);
if (resp.direct_paid) {
location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result';
return;
@@ -308,6 +285,7 @@ $(function () {
// }
},
error: function (jqXhr) {
+ window.RPayPlus.send("closeLoading", null, null);
weuiAlert(jqXhr.responseJSON.message);
$('#key_P').removeClass('hidden');
$('#key_Loading').addClass('hidden');
@@ -412,9 +390,8 @@ $(function () {
}
- function getUserId(){
+ /* function getUserId(){
window.RPayPlus.send("getUserId", null, function(data){
- alert(data);
});
}
@@ -425,9 +402,7 @@ $(function () {
mch_order_id:param.mch_order_id
};
alert("rpay_order_info: nonce_str:"+param.nonce_str+"rpay_order_id:"+param.rpay_order_id+"mch_order_id:"+param.mch_order_id);
- window.RPayPlus.send('pay', order, function(data){
- alert('this is callback from native and data='+JSON.stringify(data));
- });
+ window.RPayPlus.send('pay', order, null);
}
function back(){
@@ -461,5 +436,5 @@ $(function () {
queryOrder(data);
});
}
- getUserId();
+ getUserId();*/
});
\ No newline at end of file
From 1987cc09f80c130cbeaf8233876fa1b1487a3f92 Mon Sep 17 00:00:00 2001
From: luoyang
Date: Mon, 17 Sep 2018 16:13:21 +0800
Subject: [PATCH 06/12] update merchant
---
.../system/SysRpayMerchantApplyMapper.java | 26 +++++
.../manage/merchants/core/ClientManager.java | 5 +
.../core/impls/ClientManagerImpl.java | 104 ++++++++++++------
.../web/PartnerManageController.java | 10 ++
.../static/payment/partner/partner-manage.js | 17 ++-
.../templates/partner_payment_info.html | 8 ++
.../templates/sub_merchant_id_apply.html | 74 ++++++++++---
7 files changed, 199 insertions(+), 45 deletions(-)
create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java
diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java
new file mode 100644
index 000000000..9aa1cdbff
--- /dev/null
+++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/SysRpayMerchantApplyMapper.java
@@ -0,0 +1,26 @@
+package au.com.royalpay.payment.manage.mappers.system;
+
+import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
+import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
+import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
+import com.alibaba.fastjson.JSONObject;
+import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Created by yangluo on 2017-03-14.
+ */
+@AutoMapper(tablename = "sys_rpay_merchant_apply",pkName = "merchant_app_id")
+public interface SysRpayMerchantApplyMapper {
+ @AutoSql(type = SqlType.SELECT)
+ List listRpayMerchantApplices(@Param("client_id") int client_id, PageBounds pageBounds);
+
+ @AutoSql(type = SqlType.INSERT)
+ void insertRpayMerchantApply(JSONObject params);
+
+ @AutoSql(type = SqlType.SELECT)
+ List selectByShortName(@Param("client_id") int client_id,@Param("merchant_shortname") String shortName);
+
+}
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 7c0e982ea..0604c11e3 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
@@ -60,6 +60,9 @@ public interface ClientManager {
@Transactional
void updateClientPaymentConfig(JSONObject manager, String clientMoniker, JSONObject subMerchantInfo);
+ @Transactional
+ void updateClientRpayPaymentConfig(JSONObject manager, String clientMoniker, JSONObject rpaySubMerchantInfo);
+
@Transactional
void updateAliSubMerchantId(JSONObject manager, String clientMoniker, JSONObject aliSubMerchantInfo);
@@ -296,6 +299,8 @@ public interface ClientManager {
List listSubMerchantIdApplys(JSONObject manager, String clientMoniker);
+ List listRpaySubMerchantIdApplys(JSONObject manager, String clientMoniker);
+
String subMerchantApplication(String clientMoniker, SubMerchantIdApply subMerchantApply,JSONObject manager);
List listMerchantIds(String clientMoniker,JSONObject manager);
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 7a853e253..4defc9826 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
@@ -25,24 +25,7 @@ import au.com.royalpay.payment.manage.mappers.log.LogSettleMailMapper;
import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper;
import au.com.royalpay.payment.manage.mappers.redpack.ActClientInvitationCodeMapper;
import au.com.royalpay.payment.manage.mappers.risk.RiskAttentionMerchantsMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientAccountMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientApplyMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientAuditProcessMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientBDMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientBankAccountMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientDeviceMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientFilesMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientRateMapper;
-import au.com.royalpay.payment.manage.mappers.system.ClientsContractMapper;
-import au.com.royalpay.payment.manage.mappers.system.CommoditiesMapper;
-import au.com.royalpay.payment.manage.mappers.system.MailSendMapper;
-import au.com.royalpay.payment.manage.mappers.system.MailUnsubMapper;
-import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
-import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
-import au.com.royalpay.payment.manage.mappers.system.PermissionPartnerModuleMapper;
-import au.com.royalpay.payment.manage.mappers.system.SysWxMerchantApplyMapper;
+import au.com.royalpay.payment.manage.mappers.system.*;
import au.com.royalpay.payment.manage.merchants.beans.ActivityPosterBuilder;
import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo;
import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo;
@@ -262,6 +245,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Resource
private SysWxMerchantApplyMapper sysWxMerchantApplyMapper;
@Resource
+ private SysRpayMerchantApplyMapper sysRpayMerchantApplyMapper;
+ @Resource
private SpringTemplateEngine thymeleaf;
@Resource
private DeviceManager deviceManager;
@@ -770,6 +755,40 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
clientInfoCacheSupport.clearClientCache(clientId);
}
+ @Override
+ public void updateClientRpayPaymentConfig(JSONObject manager, String clientMoniker, JSONObject rpaySubMerchantInfo) {
+ JSONObject client = getClientInfoByMoniker(clientMoniker);
+ if (client == null) {
+ throw new InvalidShortIdException();
+ }
+ checkOrgPermission(manager, client);
+ JSONObject update = new JSONObject();
+ int clientId = client.getIntValue("client_id");
+ String originSubMerchantId = client.getString("rpay_enterprise_id");
+ update.put("client_id", clientId);
+ String subMerchantId = rpaySubMerchantInfo.getString("rpay_enterprise_id");
+ update.put("rpay_enterprise_id", subMerchantId);
+ try {
+ recordSubMerchantLog(client, rpaySubMerchantInfo, manager);
+ } catch (Exception e) {
+ logger.error("记录log_client_sub_merchant_id失败", e);
+ }
+ clientMapper.update(update);
+ List children = clientMapper.listChildClients(clientId);
+ for (JSONObject child : children) {
+ if (Objects.equals(child.getString("rpay_enterprise_id"), originSubMerchantId)) {
+ update.put("client_id", child.getIntValue("client_id"));
+ try {
+ recordSubMerchantLog(child, rpaySubMerchantInfo, manager);
+ } catch (Exception e) {
+ logger.error("记录log_client_sub_merchant_id失败", e);
+ }
+ clientMapper.update(update);
+ }
+ }
+ clientInfoCacheSupport.clearClientCache(clientId);
+ }
+
@Override
public void updateAliSubMerchantId(JSONObject manager, String clientMoniker, JSONObject aliSubMerchantInfo) {
JSONObject client = getClientInfoByMoniker(clientMoniker);
@@ -3513,6 +3532,21 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
return null;
}
+ @Override
+ public List listRpaySubMerchantIdApplys(JSONObject manager, String clientMoniker) {
+ JSONObject client = getClientInfoByMoniker(clientMoniker);
+ if (client == null) {
+ throw new InvalidShortIdException();
+ }
+ checkOrgPermission(manager, client);
+ List applices = sysRpayMerchantApplyMapper.listRpayMerchantApplices(client.getInteger("client_id"),
+ new PageBounds(Order.formString("create_time.desc")));
+ if (!applices.isEmpty()) {
+ return applices;
+ }
+ return null;
+ }
+
@Override
@CacheEvict(value = ":all_sub_merchant_id_applices:", key = "#clientMoniker")
public String subMerchantApplication(String clientMoniker, SubMerchantIdApply subMerchantApply, JSONObject manager) {
@@ -3548,22 +3582,30 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
checkOrgPermission(manager, client);
- SubRpayMerchantInfo subRpayMerchantInfo = JSONObject.toJavaObject(client, SubRpayMerchantInfo.class);
- subRpayMerchantInfo.CheckEmpty();
- rpayApi.registerMerchant(client.getIntValue("client_id"), subRpayMerchantInfo);
-
- logger.debug("访问成功,返回的信息是: " );
-
-
-
- // String sub_merchant_id = elem.elementText("sub_mch_id");
-/* if (StringUtils.isNotEmpty(sub_merchant_id)) {
-
+ List selectByshortName = sysRpayMerchantApplyMapper.selectByShortName(client.getIntValue("client_id"),client.getString("short_name"));
+ if (selectByshortName.size()>0) {
+ throw new BadRequestException("请修改【" + clientMoniker + "】的Company shortName信息(请避免和Rpay+商务号列表内的Company Short Name重复)");
+ }
- } else {
+ SubRpayMerchantInfo subRpayMerchantInfo = JSONObject.toJavaObject(client, SubRpayMerchantInfo.class);
+ subRpayMerchantInfo.CheckEmpty();
+ JSONObject rpayMerchantInfo = rpayApi.registerMerchant(client.getIntValue("client_id"), subRpayMerchantInfo);
+
+ if (rpayMerchantInfo != null) {
+ JSONObject merchantApply = new JSONObject();
+ merchantApply.put("merchant_id", rpayMerchantInfo.getString("rpay_order_id"));
+ merchantApply.put("client_id", client.getString("client_id"));
+ merchantApply.put("create_time", new Date());
+ merchantApply.put("operator", manager.getString("display_name"));
+ merchantApply.put("sub_merchant_id", rpayMerchantInfo.getString("merchantId"));
+ merchantApply.put("business_category", client.getString("royalpayindustry"));
+ merchantApply.put("merchant_shortname", client.getString("short_name"));
+ sysRpayMerchantApplyMapper.insertRpayMerchantApply(merchantApply);
+ }else {
throw new BadRequestException("请求失败");
- }*/
+ }
+
return null;
}
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 aa40c3310..c228f5995 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
@@ -155,6 +155,11 @@ public class PartnerManageController {
clientManager.updateClientPaymentConfig(manager, clientMoniker, subMerchantInfo);
}
+ @ManagerMapping(value = "/{clientMoniker}/rpay_payment_config", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR, ManagerRole.BD_USER})
+ public void updatePartnerRpayPaymentConfig(@PathVariable String clientMoniker, @RequestBody JSONObject rpaySubMerchantInfo, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ clientManager.updateClientRpayPaymentConfig(manager, clientMoniker, rpaySubMerchantInfo);
+ }
+
@ManagerMapping(value = "/{clientMoniker}/ali_sub_merchant_id", method = RequestMethod.PUT, role = {ManagerRole.OPERATOR})
public void updateAliSubMerchantId(@PathVariable String clientMoniker, @RequestBody JSONObject aliSubMerchantInfo, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
clientManager.updateAliSubMerchantId(manager, clientMoniker, aliSubMerchantInfo);
@@ -518,6 +523,11 @@ public class PartnerManageController {
return clientManager.listSubMerchantIdApplys(manager, clientMoniker);
}
+ @ManagerMapping(value = "/{clientMoniker}/list_rpay_sub_applices", method = RequestMethod.GET, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
+ public List listRpaySubMerchantIdApplys(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ return clientManager.listRpaySubMerchantIdApplys(manager, clientMoniker);
+ }
+
@ManagerMapping(value = "/{clientMoniker}/sub_apply", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
public String subMerchantApplication(@PathVariable String clientMoniker, @RequestBody SubMerchantIdApply subMerchantIdApply, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
return clientManager.subMerchantApplication(clientMoniker, subMerchantIdApply, manager);
diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js
index 63c39ada0..b855dae98 100644
--- a/src/main/ui/static/payment/partner/partner-manage.js
+++ b/src/main/ui/static/payment/partner/partner-manage.js
@@ -3084,6 +3084,9 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/list_sub_applices', {params: {}}).then(function (resp) {
$scope.subMerchantInfos = resp.data;
});
+ $http.get('/sys/partners/' + $scope.partner.client_moniker + '/list_rpay_sub_applices', {params: {}}).then(function (resp) {
+ $scope.subRpayMerchantInfos = resp.data;
+ });
};
$scope.useSubMerchantId = function (sub_merchant_id) {
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/payment_config', {sub_merchant_id: sub_merchant_id}).then(function (resp) {
@@ -3097,6 +3100,18 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
});
}
+ $scope.useRpaySubMerchantId = function (sub_merchant_id) {
+ $http.put('/sys/partners/' + $scope.partner.client_moniker + '/rpay_payment_config', {rpay_enterprise_id: sub_merchant_id}).then(function (resp) {
+ commonDialog.alert({
+ title: 'Success',
+ content: 'Modify Rpay+ Sub Merchant ID successfully',
+ type: 'success'
+ });
+ $state.reload();
+ }, function (resp) {
+ commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
+ });
+ }
$scope.applyWxSubMerchantId = function () {
$uibModal.open({
templateUrl: '/static/payment/partner/templates/apply_wx_sub_merchant_id.html',
@@ -3117,7 +3132,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$http.post('/sys/partners/' + $scope.partner.client_moniker + '/registRpaySubMerchantId').then(function (resp) {
commonDialog.alert({
title: 'Success',
- content: 'Modify Wechat Sub Merchant ID successfully',
+ content: 'Modify Rpay+ Sub Merchant ID successfully',
type: 'success'
});
$state.reload();
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 6e6499a34..804ab968b 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
@@ -48,6 +48,14 @@
+
diff --git a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html
index 03309be2c..40fc8c119 100644
--- a/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html
+++ b/src/main/ui/static/payment/partner/templates/sub_merchant_id_apply.html
@@ -41,19 +41,6 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+ Sub Merchant Id
+ (当前使用){{id_apply.sub_merchant_id}}
+
+ -
+ Apply Time
+
+
+ -
+ Company Short Name
+ {{id_apply.merchant_shortname | cut:true:20:' ...'}}
+
+ -
+ Business Category
+ {{id_apply.business_category | partner_royalpay_industry}}
+
+ -
+ Operator
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
From d6c4a5aafb0f33b603555397dc67dec1db0ba0cc Mon Sep 17 00:00:00 2001
From: luoyang
Date: Mon, 17 Sep 2018 16:17:41 +0800
Subject: [PATCH 07/12] update modify.sql
---
src/db/modify.sql | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/db/modify.sql b/src/db/modify.sql
index 50f6f75c6..929d90dc1 100644
--- a/src/db/modify.sql
+++ b/src/db/modify.sql
@@ -1,3 +1,14 @@
+CREATE TABLE `sys_rpay_merchant_apply` (
+ `merchant_app_id` varchar(50) NOT NULL,
+ `client_id` int(11) NOT NULL,
+ `merchant_shortname` varchar(20) NOT NULL,
+ `business_category` varchar(20) NOT NULL,
+ `sub_merchant_id` varchar(20) DEFAULT NULL,
+ `create_time` datetime NOT NULL,
+ `operator` varchar(50) DEFAULT NULL,
+ PRIMARY KEY (`merchant_app_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AVG_ROW_LENGTH=244;
+
ALTER TABLE `pmt_refunds`
MODIFY COLUMN `refund_id` varchar(50) NOT NULL COMMENT '退款编号' FIRST ;
From deebb88a2ca914b49748f93ec6a3cde24177ccb0 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Mon, 17 Sep 2018 20:42:31 +0800
Subject: [PATCH 08/12] update
---
src/main/ui/static/lib/rpay/rpay_jssdk.js | 2 +-
.../ui/static/templates/rpay/v1/payment.js | 70 ++++++++++++-------
2 files changed, 46 insertions(+), 26 deletions(-)
diff --git a/src/main/ui/static/lib/rpay/rpay_jssdk.js b/src/main/ui/static/lib/rpay/rpay_jssdk.js
index 4bc92ae54..e3f48ea99 100644
--- a/src/main/ui/static/lib/rpay/rpay_jssdk.js
+++ b/src/main/ui/static/lib/rpay/rpay_jssdk.js
@@ -21,7 +21,7 @@ $(function (){
if(isiOS){
window.webkit.messageHandlers.rpayplus.postMessage(msg);
} else{
- //rpayplus.send(msg);
+ rpayplus.send(msg);
}
},
diff --git a/src/main/ui/static/templates/rpay/v1/payment.js b/src/main/ui/static/templates/rpay/v1/payment.js
index c42004284..8df8657e5 100644
--- a/src/main/ui/static/templates/rpay/v1/payment.js
+++ b/src/main/ui/static/templates/rpay/v1/payment.js
@@ -3,21 +3,21 @@
*/
$(function () {
'use strict';
- // document.querySelector('body').addEventListener('touchmove', function (e) {
- // if (!document.querySelector('.coupons').contains(e.target)) {
- // e.preventDefault();
- // }
- // })
+ document.querySelector('body').addEventListener('touchmove', function (e) {
+ if (!document.querySelector('.coupons').contains(e.target)) {
+ e.preventDefault();
+ }
+ })
var dataCache = {price: '0', coupons: [], coupon_groups: {}};
var exchangeRate = parseFloat(window.exchange_rate);
- // if (window.AlipayJSBridge) {
- // AlipayJSBridge.call('hideOptionMenu');
- // } else {
- // document.addEventListener('AlipayJSBridgeReady', function () {
- // AlipayJSBridge.call('hideOptionMenu');
- // }, false);
- // }
+ if (window.AlipayJSBridge) {
+ AlipayJSBridge.call('hideOptionMenu');
+ } else {
+ document.addEventListener('AlipayJSBridgeReady', function () {
+ AlipayJSBridge.call('hideOptionMenu');
+ }, false);
+ }
dataCache.paying = false;
var ctrl = {};
@@ -62,9 +62,11 @@ $(function () {
var checked = $(this).is('.checked');
if (checked) {
dataCache.coupons.push(couponId);
+ updatePrice();
} else {
var idx = dataCache.coupons.indexOf(couponId);
dataCache.coupons.splice(idx, 1);
+
}
});
@@ -87,6 +89,29 @@ $(function () {
return price;
}
+ function updatePrice() {
+ $('#audVal').html(dataCache.price);
+ var realPrice = dataCache.price;
+ $('#audValReal').html(realPrice);
+ var surchargeData = calculateSurcharge(realPrice);
+
+ var price = surchargeData.newPrice || realPrice;
+ var priceBeforeDiscount = price;
+ dataCache.discounts = [];
+ dataCache.tax = surchargeData.tax;
+ dataCache.surcharge = surchargeData.surcharge;
+
+ $(window.coupons).each(function () {
+ price = this.handleDiscount(price, dataCache.price, dataCache.discounts, dataCache.coupons);
+ });
+ dataCache.customSurcharge = new Decimal(price).sub(realPrice).toFixed(2,Decimal.ROUND_HALF_UP);
+ dataCache.finalPrice = new Decimal(price).toFixed(2, Decimal.ROUND_FLOOR);
+ var rate = 'CNY' == window.currency ? 1 : exchangeRate;
+ var cnyVal = Decimal.mul(price, rate).toFixed(2, Decimal.ROUND_HALF_UP);
+ $('#cnyVal').html(cnyVal);
+ dataCache.currencyPrice = 'CNY' == window.currency ? Decimal.div(priceBeforeDiscount, exchangeRate).toFixed(2, Decimal.ROUND_FLOOR) : priceBeforeDiscount;
+ }
+
function updatePoundageStatus() {
$(window.coupons).each(function () {
var coupon = this;
@@ -117,6 +142,7 @@ $(function () {
if (dataCache.price.length == 0) {
dataCache.price = '0';
}
+ updatePrice();
updatePoundageStatus();
}
@@ -133,6 +159,7 @@ $(function () {
dataCache.price = '';
}
dataCache.price += char;
+ updatePrice();
updatePoundageStatus();
}
}
@@ -232,7 +259,6 @@ $(function () {
dataCache.remark = '';
window.RPayPlus.send("showLoading", null, null);
-
$.ajax({
url: '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders',
method: 'POST',
@@ -241,11 +267,7 @@ $(function () {
dataType: 'json',
success: function (resp) {
window.RPayPlus.send("closeLoading", null, null);
- // pay(resp);
- if (resp.direct_paid) {
- location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result';
- return;
- }
+ pay(resp,location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result');
// if (window.AlipayJSBridge) {
// callPayment();
// } else {
@@ -287,8 +309,6 @@ $(function () {
error: function (jqXhr) {
window.RPayPlus.send("closeLoading", null, null);
weuiAlert(jqXhr.responseJSON.message);
- $('#key_P').removeClass('hidden');
- $('#key_Loading').addClass('hidden');
dataCache.paying = false;
}
})
@@ -390,19 +410,19 @@ $(function () {
}
- /* function getUserId(){
+ function getUserId(){
window.RPayPlus.send("getUserId", null, function(data){
+ window.Rpay.userInfo = data;
});
}
- function pay(param){
+ function pay(param,callback){
var order={
nonce_str:param.nonce_str,
rpay_order_id:param.rpay_order_id,
mch_order_id:param.mch_order_id
};
- alert("rpay_order_info: nonce_str:"+param.nonce_str+"rpay_order_id:"+param.rpay_order_id+"mch_order_id:"+param.mch_order_id);
- window.RPayPlus.send('pay', order, null);
+ window.RPayPlus.send('pay', order, callback);
}
function back(){
@@ -436,5 +456,5 @@ $(function () {
queryOrder(data);
});
}
- getUserId();*/
+ getUserId();
});
\ No newline at end of file
From 43ab6507d68b30a147db06050ca68c384e2c4c31 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Tue, 18 Sep 2018 10:09:33 +0800
Subject: [PATCH 09/12] tmp
---
src/main/ui/static/templates/rpay/v1/payment.js | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/main/ui/static/templates/rpay/v1/payment.js b/src/main/ui/static/templates/rpay/v1/payment.js
index 8df8657e5..ba7f27829 100644
--- a/src/main/ui/static/templates/rpay/v1/payment.js
+++ b/src/main/ui/static/templates/rpay/v1/payment.js
@@ -267,7 +267,15 @@ $(function () {
dataType: 'json',
success: function (resp) {
window.RPayPlus.send("closeLoading", null, null);
- pay(resp,location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result');
+
+ pay(resp,function(data){
+ alert(data);
+ if(data == 'success'){
+ location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'
+ }else {
+ alert('Oops,Network fluctuation,please try again later...');
+ }
+ });
// if (window.AlipayJSBridge) {
// callPayment();
// } else {
From 10a0a6f0ce0e3820fc5021e3a66279cb14684ae7 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Tue, 18 Sep 2018 10:39:28 +0800
Subject: [PATCH 10/12] add rpay
---
src/main/ui/static/templates/rpay/v1/payment.js | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/main/ui/static/templates/rpay/v1/payment.js b/src/main/ui/static/templates/rpay/v1/payment.js
index ba7f27829..74397a9c1 100644
--- a/src/main/ui/static/templates/rpay/v1/payment.js
+++ b/src/main/ui/static/templates/rpay/v1/payment.js
@@ -267,14 +267,16 @@ $(function () {
dataType: 'json',
success: function (resp) {
window.RPayPlus.send("closeLoading", null, null);
-
pay(resp,function(data){
- alert(data);
if(data == 'success'){
- location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + pay.order_id + '/result'
- }else {
+ location.href = '/api/v1.0/rpay/partners/' + window.client_moniker + '/orders/' + resp.mch_order_id + '/result'
+ }else if(data == 'fail'){
alert('Oops,Network fluctuation,please try again later...');
}
+ $('#key_P').removeClass('hidden');
+ $('#key_Loading').addClass('hidden');
+ dataCache.paying = false;
+
});
// if (window.AlipayJSBridge) {
// callPayment();
@@ -318,6 +320,8 @@ $(function () {
window.RPayPlus.send("closeLoading", null, null);
weuiAlert(jqXhr.responseJSON.message);
dataCache.paying = false;
+ $('#key_P').removeClass('hidden');
+ $('#key_Loading').addClass('hidden');
}
})
});
From 09755b167c722d33d1a4a02c37c407f0c3121880 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Tue, 18 Sep 2018 13:45:15 +0800
Subject: [PATCH 11/12] modify
---
src/main/resources/application-rpay.properties | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/resources/application-rpay.properties b/src/main/resources/application-rpay.properties
index 603d8f0e1..5d75a4c07 100644
--- a/src/main/resources/application-rpay.properties
+++ b/src/main/resources/application-rpay.properties
@@ -1,3 +1,3 @@
app.rpay.privateKey=MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKikZJwvKZ3dj5QsRy6xN/cPinAZa3leg8X40YzGrMEYWc2nmZY/EczYPq/kUp1uL2uikweDO35fuVpA4rALmJwXhHzsZyhVk4lEjHaqH8rNpVpmrwKP9rMmbFD23Mfvvt+BkKWan2T2dAMbSdjPY0+DTS4sN1ZrqzycRFxKFpohAgMBAAECgYBoO0Mb7WJxehFV6ZANYedPQkG0S2HL4AjeAY2yztDTf/NxUpdw74ZW74i/OgV93C5e/lqVmBzbXNq418XEPUaSohOqbcv+QRlEdlTAtn82aAUp/c9oSogPiHWs2VKiGoutejwVXQ6V9BAGMMegLwVphUu9dgrPC4dnfGO11fvLiQJBANt0VPmdqdG52rNVllKhF5+d+dIamOOQewWZf7HnkW0uYt9kWSbZCYyey4nP7NlONL7NEdUxn9exg/DYzegB99sCQQDEudve+jV2Ay6gbOS+ylHoCxSroF6jlkBQ0q7LIsWAAzIVLOuo5skC+wJmHzKXDoQBLXcFerP/T/iUSzisKqSzAkEAmjRVXY02/gLttWQnm+pMckGMgOFlm0oz18xzmSwR2TlmCnk12AFcH26ZsT3kvRGiKIxqwnb7TZIUF1IQ5b00TwJALD7xKNF1vLkyf3p+aDrw+ROk7oT/RCPDC2qXTbDgYs5VMVYNGsvtYfI6s+VIZ5koL2ueXWkfmsjNy+yvLmnY6QJADV9xlAa1+mWN2TfzAugd3L0fNLqPJPHBKQS5/bBKcoZlwfXwByrcCceKaCntJRZ056eQ7IeqkJfxjkEo/kgaRg==
-app.rpay.rpayPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw4QOJdajtax5/EQ/Tm65tLnaRB3LXrac3jhdOGp+PsQL1tQyRnvKfWDD5qJ2VZ+rSsLUGg//7ubHtuQHFgH8N9BfSDf9PSZLXsgdA0ikAj6/0P+D7VsSAGsw97plXElh3jx1OvKIW46ZFtPgXuotTx1B+4plafhv5JMHMcVYwOGghaDH9Yoh4vaVU6JNw7IWATaycrmAwEns5VVN6uvz2aTYsH8Rb4j2PA8oKW+7ckcF+sCTNJhFK29iHcvLwzGTXrUTaOfk3ZXNhB9g1ou9aolDszUKvj1R7gSoyoq05w6ICno/d0Fu6Oj0H1N36k7OjUt3wX2lm40yu6ymEV6U0QIDAQAB
-app.rpay.appId=ae8c8000-d774-42ad-8008-810b55c96aa9
\ No newline at end of file
+app.rpay.rpayPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxRx80vX64kSu5nrHbwPX/3SctyFIGrjBEJ9NEBOQPP4KHRQ49QyhVZ1fu7NvtD98n+PGR0ULUrK6S4KsYw6Huaga2RwbSVVkYPFGEFZ70XvjlGSzBG7fkbU8nscWAPOP+k5STD5sOZ35+9ko2H7IBz5RAclREoyB4/JaorQiBrEqS8RmX2TCjtx2lgi9TTcLinMDmULcg5qz44xpn08RwjuVpwRXyWFraxSaF0AcnpqstHON9AEyYanBjpQzR7yvj1IUGPMVNKpu/f4Z0ABvGZ9iAe3lyYESkkZ93ajy4vylY3YQvQsgHAsgazVsg2b25TC6TvAp9xPcaO0U8aoLLQIDAQAB
+app.rpay.appId=8850afd2-6183-4cff-83af-9be5ca916e16
\ No newline at end of file
From ce3e896e89c074df71ab82a1e02461dd781fc2d2 Mon Sep 17 00:00:00 2001
From: kira <164851225@qq.com>
Date: Tue, 18 Sep 2018 14:30:00 +0800
Subject: [PATCH 12/12] add rpay merchant
---
pom.xml | 4 +++
.../manage/merchants/core/ClientManager.java | 2 ++
.../core/impls/ClientManagerImpl.java | 6 ++--
.../web/PartnerManageController.java | 29 +++++++++++++++----
4 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/pom.xml b/pom.xml
index 1e0300dc8..cfb6e206d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,6 +36,10 @@
au.com.royalpay.payment
jd-core
+
+ au.com.royalpay.payment
+ rpay-core
+
com.github.stuxuhai
jpinyin
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 0fdaf643b..7808c732b 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
@@ -336,5 +336,7 @@ public interface ClientManager {
void sendHfEmailNotice(JSONObject order);
+ String subRpayMerchantApplication(String clientMoniker, JSONObject manager);
+
void updateAllPartnerPassword(String clientMoniker, List emails);
}
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 24df591c3..9636537e8 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
@@ -7,9 +7,7 @@ import au.com.royalpay.payment.channels.wechat.config.WechatPayEnvironment;
import au.com.royalpay.payment.channels.wechat.runtime.MpPaymentApi;
import au.com.royalpay.payment.channels.wechat.runtime.WxPayClient;
import au.com.royalpay.payment.channels.wechat.runtime.beans.SubMerchantInfo;
-
import au.com.royalpay.payment.core.PaymentChannelApi;
-import au.com.royalpay.payment.core.beans.PayChannel;
import au.com.royalpay.payment.core.exceptions.EmailException;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.core.utils.OrderExpiryRuleResolver;
@@ -44,6 +42,7 @@ import au.com.royalpay.payment.manage.mappers.system.MailUnsubMapper;
import au.com.royalpay.payment.manage.mappers.system.ManagerMapper;
import au.com.royalpay.payment.manage.mappers.system.OrgMapper;
import au.com.royalpay.payment.manage.mappers.system.PermissionPartnerModuleMapper;
+import au.com.royalpay.payment.manage.mappers.system.SysRpayMerchantApplyMapper;
import au.com.royalpay.payment.manage.mappers.system.SysWxMerchantApplyMapper;
import au.com.royalpay.payment.manage.merchants.beans.ActivityPosterBuilder;
import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo;
@@ -176,7 +175,6 @@ import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
import cn.yixblog.platform.http.HttpRequestGenerator;
import cn.yixblog.platform.http.HttpRequestResult;
@@ -284,6 +282,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Resource
private ClientInfoCacheSupport clientInfoCacheSupport;
+ @Resource
+ private RpayApi rpayApi;
@Resource
private SimpleClientApplyService simpleClientApplyService;
@Resource
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 d8ba3cd61..768b1ebcb 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
@@ -1,7 +1,13 @@
package au.com.royalpay.payment.manage.merchants.web;
import au.com.royalpay.payment.manage.dev.core.MerchantLocationService;
-import au.com.royalpay.payment.manage.merchants.beans.*;
+import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo;
+import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo;
+import au.com.royalpay.payment.manage.merchants.beans.ClientRateConfig;
+import au.com.royalpay.payment.manage.merchants.beans.ClientRegisterInfo;
+import au.com.royalpay.payment.manage.merchants.beans.NewAccountBean;
+import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery;
+import au.com.royalpay.payment.manage.merchants.beans.SubMerchantIdApply;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.permission.manager.ManagerMapping;
import au.com.royalpay.payment.manage.permission.manager.RequireManager;
@@ -11,17 +17,26 @@ import au.com.royalpay.payment.tools.CommonConsts;
import au.com.royalpay.payment.tools.http.HttpUtils;
import au.com.royalpay.payment.tools.merchants.beans.QRCodeConfig;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
+
import com.alibaba.fastjson.JSONObject;
+
import org.springframework.validation.Errors;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
/**
* Created by yixian on 2016-06-27.
*/
@@ -566,5 +581,9 @@ public class PartnerManageController {
public void switchHfEmailNotice(@PathVariable String clientMoniker, @RequestBody JSONObject pass, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
clientManager.switchPermission(manager, clientMoniker, "enable_hf_email_notice", pass.getBooleanValue("allow"));
}
+ @ManagerMapping(value = "/{clientMoniker}/registRpaySubMerchantId", method = RequestMethod.POST, role = {ManagerRole.OPERATOR, ManagerRole.ADMIN})
+ public String subRpayMerchantApplication(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
+ return clientManager.subRpayMerchantApplication(clientMoniker, manager);
+ }
}