parent
77621c6418
commit
1d666071ff
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.7 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,120 @@
|
||||
.weui_cell_ft {
|
||||
max-width: 60%;
|
||||
white-space: normal
|
||||
}
|
||||
.pay-container{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
.pay-container>img{
|
||||
display: block;
|
||||
margin: auto;
|
||||
width: 250px;
|
||||
}
|
||||
div,span,img,button,a,p{
|
||||
box-sizing: border-box;
|
||||
}
|
||||
body{
|
||||
background: #fff;
|
||||
}
|
||||
.royal-container{
|
||||
margin-top: 20%;
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 10px 30px;
|
||||
}
|
||||
|
||||
.royal-container .royal-row{
|
||||
border-bottom: 1px solid #d1d2d4;
|
||||
padding: 5px 0;
|
||||
}
|
||||
.royal-container .royal-row.brand{
|
||||
text-align: center;
|
||||
}
|
||||
.royal-container .royal-row.brand img{
|
||||
display: block;
|
||||
max-width: 60%;
|
||||
max-height: 100px;
|
||||
margin: auto;
|
||||
}
|
||||
.royal-container .royal-row.brand .name{
|
||||
display: block;
|
||||
margin: auto;
|
||||
font-size: 1.6em;
|
||||
}
|
||||
.text-title{
|
||||
color: #888888;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.text-main{
|
||||
color: #333333;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.royal-pay-btn{
|
||||
background: #30af69;
|
||||
color: #fff;
|
||||
width: 96%;
|
||||
display: block;
|
||||
margin: 10px auto 30px;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
font-size: 1.4em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.alipay .royal-pay-btn{
|
||||
background: #108ee9;
|
||||
}
|
||||
|
||||
.alipay .amount_title{
|
||||
background: #108ee9;
|
||||
}
|
||||
|
||||
.amount_title{
|
||||
height: 14%;
|
||||
z-index: 10;
|
||||
background: #30af69;
|
||||
max-height: 200px;
|
||||
min-height: 120px;
|
||||
width: 100%;
|
||||
}
|
||||
.amount_title_logo{
|
||||
float: left;
|
||||
max-width: 90px;
|
||||
min-width: 80px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.amount_title_content{
|
||||
float: left;
|
||||
}
|
||||
.amount_title_content_amount{
|
||||
font-family: Avenir-Roman;
|
||||
font-size: 30px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.amount_title_content_text{
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 17px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.merchant_info{
|
||||
height: 15%;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
width: 94%;
|
||||
margin: -5% 0% 0px 3%;
|
||||
text-align: center;
|
||||
background-color: #FFFFFF;
|
||||
box-shadow: 0px 0px 8px 0px rgba(171,171,171,0.50);
|
||||
}
|
||||
|
||||
.merchant_info img{
|
||||
max-height: 70px;
|
||||
min-height: 50px;
|
||||
}
|
@ -0,0 +1,106 @@
|
||||
|
||||
$(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/payment/v1.0/wechat_jsapi_payment/partners/' + window.client_moniker + '/orders/' + window.order_id + '/preorder',
|
||||
method: 'get',
|
||||
dataType: 'json',
|
||||
success: function (pay) {
|
||||
try {
|
||||
if (pay.direct_paid) {
|
||||
dataCache.paying = false;
|
||||
location.href = window.redirect;
|
||||
}
|
||||
var paydata = pay.jsapi;
|
||||
invokePay(paydata);
|
||||
}catch (e) {
|
||||
alert("Unexpected Error:" + e);
|
||||
$('#wdiv').hide();
|
||||
dataCache.paying = false;
|
||||
}
|
||||
},
|
||||
error: function (jqXhr) {
|
||||
var respText = jqXhr.responseText;
|
||||
try {
|
||||
alert(JSON.parse(respText).message);
|
||||
$('#wdiv').hide();
|
||||
dataCache.paying = false;
|
||||
} catch (e) {
|
||||
alert("Unexpected Error:" + respText);
|
||||
$('#wdiv').hide();
|
||||
dataCache.paying = false;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
function invokePay(paydata) {
|
||||
WeixinJSBridge.invoke('getBrandWCPayRequest', {
|
||||
'appId': paydata.appId,
|
||||
'timeStamp': paydata.timeStamp,
|
||||
'nonceStr': paydata.nonceStr,
|
||||
'package': paydata.package,
|
||||
'signType': paydata.signType,
|
||||
'paySign': paydata.paySign
|
||||
}, function (res) {
|
||||
dataCache.paying = false;
|
||||
if (res.err_msg == 'get_brand_wcpay_request:ok') {
|
||||
startCheckOrder(window.order_id)
|
||||
} else {
|
||||
if (res.err_msg != 'get_brand_wcpay_request:cancel' && res.err_msg != 'get_brand_wcpay_request:fail') {
|
||||
alert('WeChat Error:' + res.err_msg);
|
||||
}
|
||||
if (window.paydata) {
|
||||
location.href = window.redirect + (window.redirect.indexOf('?') < 0 ? '?' : '&') + 'success=false';
|
||||
}
|
||||
}
|
||||
//todo get status from server
|
||||
$('#wdiv').hide();
|
||||
})
|
||||
}
|
||||
|
||||
function startCheckOrder(orderId) {
|
||||
function checkOrderStd() {
|
||||
$.ajax({
|
||||
url: '/api/v1.0/payment/orders/' + orderId + '/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();
|
||||
}
|
||||
});
|
Loading…
Reference in new issue