参考资料:http://blog.fangjie.info/android%e5%be%ae%e4%bf%a1%e6%94%af%e4%bb%98/ Android微信支付
http://blog.csdn.net/janice0529/article/details/38051987 Android学习之 移动应用<App>微信支付集成小结
微信支付:http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5
-
什么是token
用户ID + 服务器随机分配的token 可以唯一标识这个用户。
Token可以理解为验证用户登录状态的标识,可以防止其他人伪装用户进行操作(伪装请求+用户ID)。
对于token的获取,是在用户登录之后才会随机分配的一个token,而且每次登录这个标识token都会改变。
我们在进行用户操作的时候都会带上token,和sessionid很类似。我们可以把token解释为令牌。
-
微信支付的四个步骤:
老版本: payActivity里面
-
利用APP_ID和APP_SECRET获取access_token
-
2) 在上面的代码中,根据上面的代码。如下
现在我们根据access_Token以及之前的参数partnerId等来获取预支付任务
- 根据获取得到的PrepayId,开启步骤3
-
根据最后一步,返回支付结果
位置:WXPayEntryActivity.java
微信会回调 WXPayEntryActivity 的public void onResp(BaseResp resp)方法,所以后续操作,放在这个回调函数中操作就可以了。
resp.errCode== 0 :表示支付成功
resp.errCode== -1 :表示支付失败
resp.errCode== -2 :表示取消支付
-
新版本微信支付和老版本有区别
-
生成预支付订单
主要在GetPrepayIdTask里面(关键代码)动态获取access_Token
最关键的代码:
与服务器交互完之后,获取到prepayId .
-
2) 通过上一步得到的预支付订单,重新生成微信支付参数
下面的genPayReq里面用到了很多的参数,不仅仅是prepayId。生成微信支付参数后,赋值给req.sign.
上面这句代码里面会生成两个签名:一个是 genAppSign ,sign str。 一个是req.sign ,sign。这个是最后的MD5生成的
唯一标识用户微信支付的参数。生成的界面如下:
3) 调起微信支付
Req是成员参数,刚刚获取到的微信参数都在这
4) 微信会回调 WXPayEntryActivity 的public void onResp(BaseResp resp)方法
Resp.errstr : 0 支付成功 -1 不成功 -2 取消支付。