微信支付
1、微信小程序支付
因为也是接的三方支付,需要自己获取open_id,然后传给server端处理
登录获取openid
wx.login({ fail(res) { console.log(res); }, success(res) { self.getOrderInfo(res.code); } });
传给server端,sever端传给三方生成订单,并将相关参数返回给前端
前端将参数直接通过小程序支付接口进行调用即可
wx.requestPayment({ timeStamp: data.time_stamp, nonceStr: data.nonce_str, package: data.package, // 服务端统一下单接口返回 signType: data.sign_type, paySign: data.pay_sign, success: function(res) { wx.showToast({ title: "支付成功!", icon: "success", duration: 2000 }); self.paySuccess = true; self.finish = true; }, fail: function(res) { // wx.showToast({ // title: // res.errMsg.indexOf("cancel") > -1 ? "支付取消!" : "支付失败!", // icon: "none", // duration: 4000 // }); self.payDone = res.errMsg.indexOf("cancel") > -1 ? 2 : 1; self.finish = true; }, complete: function(res) { console.log(res); } });
主动提供
支付完成
按钮查询支付状态
2、微信H5支付
需求是APP中跳转;因为需要在支付域名下才能成功支付,所以先跳转h5支付(绑定的支付域名)页面,然后跳转支付链接
请求server生成支付链接
将支付链接拼到支付域名下,截取跳转
cc.Application.getInstance().openURL("http://pay.yuanlaihuyu.com/wechat/h5?url=" + encodeURIComponent(obj.data.url))
- 支付完成后跳转入配置的回调链接下
- 在回调的页面下提供按钮主动查询支付状态
3、微信jsapi支付
服务端需要授权code去获取open_id,并生成订单
// 1、通过重新跳转该链接,或者直接访问该链接,跳转URL
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + process.env.APPID + "&redirect_uri=" + process.env.REDIRECT_URI + "&response_type=code&scope=snsapi_base#wechat_redirect";
// 2、跳转的URL会带参数code
// 3、将授权的code截取下来传给server; server获取open_id后通过商户接口获取订单信息等返回前端
// 4、前端将参数通过微信浏览器内置对象调起微信支付
function onBridgeReady() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": process.env.APPID, // 公众号名称,由商户传入
"timeStamp": "1395712654",
"nonceStr": "e61463f8efa94090b1f366cccfbbb444",
"package": "prepay_id=u802345jgfjsdfgsdg888",
"signType": "MD5",
"paySign": "70EA570631E4BB79628FBCA90534C63FF7FADD89"
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
// 取消 cancel ; 失败 fail ;
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。(需要主动去调取查询订单情况接口)
}
});
}
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}
4、微信公众号支付
因为接入的三方支付, 直接请求server接口,然后将三方链接返回给前端,前端直接访问即可,支付完成后直接跳转至server配置的跳转链接