由于项目需要,本人用H5实现了Android版,并成功发布。其中支付是使用的Ping++。
Hbuilder限制支付只能使用支付宝和微信。
但是实际上Ping++支付是直接调用支付宝或微信的,Ping++的作用就是统一了支付请求和回调。所以我们在获得支付申请数据之后,拆分出第三方支付所需要的数据,然后调用第三方支付就可以了。
具体步骤和代码:
- 从后台获取支付请求数据,数据示例:
payid = 'alipay' var payReq = { "body": "***订单", "subject": "xxxxxxxxx", "object": "charge", "client_ip": "175.13.62.206", "order_no": "xxxxxxxxx", "currency": "cny", "amount": 100, "id": "ch_ xxxxxxxxx", "failure_code": null, "paid": false, "refunded": false, "created": 1467358041, "description": null, "amount_refunded": 0, "livemode": false, "amount_settle": 100, "metadata": {}, "time_paid": null, "app": "app_ xxxxxxxxx", "extra": {}, "credential": { "alipay": { "orderInfo": "_input_charset=\"utf-8\"&body=\"***订单\"&it_b_pay=\"2016-07-02 15:27:21\"¬ify_url=\"https%3A%2F%2Fapi.pingxx.com%2Fnotify%2Fcharges%2Fch_ xxxxxxxxx\"&out_trade_no=\"xxxxxxxxx\"&partner=\"xxxxxxxxx\"&payment_type=\"1\"&seller_id=\"xxxxxxxxx\"&service=\"mobile.securitypay.pay\"&subject=\"*****\"&total_fee=\"1.00\"&sign=\"SEM0T1MwMWV6SFdUTFN5WDlPOWVqTEtH\"&sign_type=\"RSA\"" }, "object": "credential" }, "time_settle": null, "time_expire": 1467444441, "failure_msg": null, "refunds": { "data": [], "has_more": false, "object": "list", "url": "/v1/charges/ch_xxxx/refunds" }, "transaction_no": null, "channel": "alipay" } };
payid = 'wxpay';
var payReq = {
"body": "*",
"subject": "****",
"object": "charge",
"client_ip": "175.13.62.206",
"order_no": "xxxxxxxxx",
"currency": "cny",
"amount": 100,
"id": "ch_xx",
"failure_code": null,
"paid": false,
"refunded": false,
"created": 1467358181,
"description": null,
"amount_refunded": 0,
"livemode": false,
"amount_settle": 100,
"metadata": {},
"time_paid": null,
"app": "app_xxx",
"extra": {},
"credential": {
"wx": {
"sign": "xxxxx",
"appId": "xxxxx",
"timeStamp": "1467358181",
"packageValue": "Sign=WXPay",
"partnerId": "123456",
"nonceStr": "11111111111111",
"prepayId": "xxxxxxxxxxxx"
},
"object": "credential"
},
"time_settle": null,
"time_expire": 1467365381,
"failure_msg": null,
"refunds": {
"data": [],
"has_more": false,
"object": "list",
"url": "/v1/charges/ch_xxxxx/refunds"
},
"transaction_no": null,
"channel": "wx"
}
}
2. 转换请求数据
//-----支付宝支付
payid = 'alipay';
```javascript
var order = payReq.credential['alipay'].orderInfo;
//end-----支付宝支付
//-----微信支付
payid = 'wxpay';
var wxData = payReq.credential['wx'];
var wxPay = {appid:wxData.appId,
noncestr:wxData.nonceStr,
'package':wxData.packageValue,
partnerid:wxData.partnerId,
prepayid:wxData.prepayId,
timestamp:wxData.timeStamp,
sign:wxData.sign};
var order = JSON.stringify(wxPay);
//end-----微信支付
- 调用支付
callPay(payid, order)
//调用支付
function callPay(payid, order) {
console.log("----- order -----" + JSON.stringify(order));
plus.payment.request(pays[payid], order, function(result){
console.log("----- 支付成功 -----");
mui.toast('支付成功');
//支付成功处理
//paySuccess (result);
},function(e){
plus.nativeUI.closeWaiting();
console.log("----- 支付失败 -----");
console.log("["+e.code+"]:"+e.message);
plus.nativeUI.alert("支付失败",null,"错误码:"+e.code);
});
}
其他代码请参照H5+示例工程的plus/payment.html 。
5 个评论
要回复文章请先登录或注册
1***@qq.com
a***@gmail.com
EtoYang (作者)
生如夏花
EtoYang (作者)