微信开发----支付

时间:2015-06-02 17:44:44   收藏:0   阅读:14450

参考资料: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>微信支付集成小结

官方网站:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&lang=zh_CN

微信支付:http://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5

  1. 什么是token

    用户ID + 服务器随机分配的token 可以唯一标识这个用户。

    Token可以理解为验证用户登录状态的标识,可以防止其他人伪装用户进行操作(伪装请求+用户ID)。

    对于token的获取,是在用户登录之后才会随机分配的一个token,而且每次登录这个标识token都会改变。

    我们在进行用户操作的时候都会带上token,和sessionid很类似。我们可以把token解释为令牌。

    ?

    ?

  2. 微信支付的四个步骤:

    老版本: payActivity里面

    1. 利用APP_ID和APP_SECRET获取access_token

      技术分享

2) 在上面的代码中,根据上面的代码。如下

技术分享

现在我们根据access_Token以及之前的参数partnerId等来获取预支付任务

技术分享

  1. 根据获取得到的PrepayId,开启步骤3

技术分享

?

技术分享

  1. 根据最后一步,返回支付结果

    位置:WXPayEntryActivity.java

    技术分享

微信会回调 WXPayEntryActivity 的public void onResp(BaseResp resp)方法,所以后续操作,放在这个回调函数中操作就可以了。
resp.errCode== 0 :表示支付成功
resp.errCode== -1 :表示支付失败
resp.errCode== -2 :表示取消支付

  1. 新版本微信支付和老版本有区别

    ?

    1. 生成预支付订单

      技术分享

      主要在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 取消支付。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!