微信支付
发布时间:2020-12-14 19:45:15 所属栏目:资源 来源:网络整理
导读:table class="text" tr class="li1" td class="ln"pre class="de1"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
<table class="text"> |
<tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
换取支付凭证 ==> 调用支付接口
? ? ?5.支付成功/支付失败 并调用状态判断
?
show coding(代码片段):
?
? ? ?判断是否是微信支付环境: ?weixin: u.indexOf('MicroMessenger') > -1,//是否微信
?
? ? ?第三方网页授权 :
app.factory("authorFactory",['$rootScope',function($rootScope) {
? ? return function(o){
? ? ? ? var goUrl = location.origin + '/#/' + o.href;
? ? ? ? location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc9d7318ebf3c25ec&redirect_uri='+ encodeURIComponent(goUrl) +'&response_type=code&scope=snsapi_base&state=123#wechat_redirect';
? ? };
}]);
? ? ? ? ? authorFactory({
? ? href : 'listBoughtItems'
})
?
? ? ?调用微信支付以及返回信息处理:
// 调用微信支付
function weChatPay(orderId){
? ? function goToWeChatPay(data){
? ? ? ? var wePayObj = data.model.wxH5PayObject;
? ? ? ? function onBridgeReady(){
? ? ? ? ? ? WeixinJSBridge.invoke(
? ? ? ? ? ? ? ? 'getBrandWCPayRequest',{
? ? ? ? ? ? ? ? ? ? "appId" : wePayObj.appId,? ? ? ? ? ? ? ? ? ? "timeStamp": wePayObj.timeStamp,? ? ? ? ? ? ? ? ? ? "nonceStr" : wePayObj.nonceStr,? ? ? ? ? ? ? ? ? ? "package" : wePayObj.packageValue,? ? ? ? ? ? ? ? ? ? "signType" : wePayObj.signType,? ? ? ? ? ? ? ? ? ? "paySign" : wePayObj.paySign
? ? ? ? ? ? ? ? },? ? ? ? ? ? ? ? function(res){
? ? ? ? ? ? ? ? ? ? switch(res.err_msg) {
? ? ? ? ? ? ? ? ? ? ? ? case 'get_brand_wcpay_request:cancel':
? ? ? ? ? ? ? ? ? ? ? ? ? ? messageFactory({text:'用户取消支付'});
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 'get_brand_wcpay_request:fail':
? ? ? ? ? ? ? ? ? ? ? ? ? ? messageFactory({text:'支付失败!('+res.err_desc+')'});
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? case 'get_brand_wcpay_request:ok':
? ? ? ? ? ? ? ? ? ? ? ? ? ? //alert('支付成功!');
? ? ? ? ? ? ? ? ? ? ? ? ? ? $state.go('orderDetails',{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'status':'success',? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'orderId':data.model.orderNum
? ? ? ? ? ? ? ? ? ? ? ? ? ? });
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? ? ? alert(JSON.stringify(res));
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? );
?
? ? ? ? ? ? rePayLock = false;
? ? ? ? }
?
? ? ? ? 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();
? ? ? ? }
? ? }
?
? ? // 请求微信支付凭证
? ? service.getMethod('/order/pay_order_pay.html',function(data){
? ? ? ? //alert('成功请求微信支付凭证')
? ? ? ? goToWeChatPay(data)
? ? },{
? ? ? ? 'token': currentPage.loginState.token,? ? ? ? 'userId': currentPage.loginState.userId,? ? ? ? 'op':2,? ? ? ? 's':2,? ? ? ? 'payType':2,? ? ? ? 'orderNum':orderId,? ? ? ? 'openid':openId
? ? });
}
?
作者当时是被第三方授权跳转的这一步卡住,最初设想是从A商品页面跳转到B支付页面,然后再从B页面拼接URL刷新页面拿到code,但是刷新莫名出现的问题导致拿不到code。
后来找朋友问到应该是从A商品页面拼接url跳转到B支付目录页面,然后成功支付。
?
然后就是微信返回信息判断方法,这个比微信文档里面提供的方法要强大很多。
?
?
?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!