<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支付目录页面,然后成功支付。 然后就是微信返回信息判断方法,这个比微信文档里面提供的方法要强大很多。