commit
5880537788
@ -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<JSONObject> listRpayMerchantApplices(@Param("client_id") int client_id, PageBounds pageBounds);
|
||||
|
||||
@AutoSql(type = SqlType.INSERT)
|
||||
void insertRpayMerchantApply(JSONObject params);
|
||||
|
||||
@AutoSql(type = SqlType.SELECT)
|
||||
List<JSONObject> selectByShortName(@Param("client_id") int client_id,@Param("merchant_shortname") String shortName);
|
||||
|
||||
}
|
@ -0,0 +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=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxRx80vX64kSu5nrHbwPX/3SctyFIGrjBEJ9NEBOQPP4KHRQ49QyhVZ1fu7NvtD98n+PGR0ULUrK6S4KsYw6Huaga2RwbSVVkYPFGEFZ70XvjlGSzBG7fkbU8nscWAPOP+k5STD5sOZ35+9ko2H7IBz5RAclREoyB4/JaorQiBrEqS8RmX2TCjtx2lgi9TTcLinMDmULcg5qz44xpn08RwjuVpwRXyWFraxSaF0AcnpqstHON9AEyYanBjpQzR7yvj1IUGPMVNKpu/f4Z0ABvGZ9iAe3lyYESkkZ93ajy4vylY3YQvQsgHAsgazVsg2b25TC6TvAp9xPcaO0U8aoLLQIDAQAB
|
||||
app.rpay.appId=8850afd2-6183-4cff-83af-9be5ca916e16
|
After Width: | Height: | Size: 8.0 KiB |
@ -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;
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
});
|
@ -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';
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
@ -0,0 +1,472 @@
|
||||
/**
|
||||
* 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);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
$('#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) {
|
||||
$('<textarea rows="2" autofocus="autofocus"></textarea>').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' ? '$' : '¥';
|
||||
$('<p></p>').html('Input Price 输入金额:' + currencySymbol + dataCache.price).appendTo(bd);
|
||||
if (parseFloat(dataCache.customSurcharge) > 0) {
|
||||
$('<p></p>').html('Surcharge 手续费(' + window.rateValue + '%):+' + currencySymbol + dataCache.customSurcharge).appendTo(bd);
|
||||
}
|
||||
$(dataCache.discounts).each(function () {
|
||||
$('<p></p>').html(this.title + ':-' + currencySymbol + this.amount).appendTo(bd);
|
||||
});
|
||||
$('<p></p>').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 = '';
|
||||
|
||||
window.RPayPlus.send("showLoading", null, null);
|
||||
$.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) {
|
||||
window.RPayPlus.send("closeLoading", null, null);
|
||||
pay(resp,function(data){
|
||||
if(data == 'success'){
|
||||
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();
|
||||
// } 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) {
|
||||
window.RPayPlus.send("closeLoading", null, null);
|
||||
weuiAlert(jqXhr.responseJSON.message);
|
||||
dataCache.paying = false;
|
||||
$('#key_P').removeClass('hidden');
|
||||
$('#key_Loading').addClass('hidden');
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
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 = $("<div></div>", {class: 'weui_dialog_confirm'});
|
||||
var mask = $('<div></div>', {class: 'weui_mask'}).appendTo(dialog);
|
||||
if (config.backdrop) {
|
||||
mask.click(function () {
|
||||
dialog.remove();
|
||||
if ($.isFunction(config.dismiss)) {
|
||||
config.dismiss();
|
||||
}
|
||||
})
|
||||
}
|
||||
var dialogBox = $("<div></div>", {class: 'weui_dialog'}).appendTo(dialog);
|
||||
if (config.title) {
|
||||
$('<div></div>', {class: 'weui_dialog_hd'}).append($('<strong></strong>', {class: 'weui_dialog_title'}).html(config.title)).appendTo(dialogBox);
|
||||
}
|
||||
var dialogBody = $("<div></div>", {class: 'weui_dialog_bd'}).appendTo(dialogBox);
|
||||
if (template) {
|
||||
dialogBody.append(template);
|
||||
}
|
||||
if ($.isFunction(config.initialize)) {
|
||||
config.initialize(dialog);
|
||||
}
|
||||
var ft = $('<div class="weui_dialog_ft"></div>').appendTo(dialogBox);
|
||||
if ($.isFunction(config.confirm)) {
|
||||
var yes = $('<a></a>', {
|
||||
class: 'weui_btn_dialog primary',
|
||||
text: 'OK',
|
||||
style: 'background: #FF2D55;color: #fff;'
|
||||
}).appendTo(ft);
|
||||
yes.click(function () {
|
||||
config.confirm(dialog, true);
|
||||
dialog.remove();
|
||||
});
|
||||
var no = $('<a></a>', {class: 'weui_btn_dialog default', text: 'Cancel'}).appendTo(ft);
|
||||
no.click(function () {
|
||||
config.confirm(dialog, false);
|
||||
dialog.remove();
|
||||
})
|
||||
} else {
|
||||
var ok = $('<a></a>', {
|
||||
class: 'weui_btn_dialog primary',
|
||||
text: 'OK',
|
||||
style: 'background: #FF2D55;color: #fff;'
|
||||
}).appendTo(ft);
|
||||
ok.click(function () {
|
||||
dialog.remove();
|
||||
})
|
||||
}
|
||||
dialog.appendTo($('body'));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
function getUserId(){
|
||||
window.RPayPlus.send("getUserId", null, function(data){
|
||||
window.Rpay.userInfo = data;
|
||||
});
|
||||
}
|
||||
|
||||
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
|
||||
};
|
||||
window.RPayPlus.send('pay', order, callback);
|
||||
}
|
||||
|
||||
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();
|
||||
});
|
@ -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();
|
||||
}
|
||||
});
|
Loading…
Reference in new issue