开发者社区> 西北野狼> 正文

微信支付(转载二)

简介: 微信支付现在主要集成在:1、移动应用开发  2、网站应用开发  3、公众账号开发        本篇主要针对移动应用App集成微信支付,实际项目坑点分享! 一、既予之、与共之:平台资源   1、微信开放平台:https://open.
+关注继续查看

 微信支付现在主要集成在:1、移动应用开发  2、网站应用开发  3、公众账号开发

       本篇主要针对移动应用App集成微信支付,实际项目坑点分享!

一、既予之、与共之:平台资源

 

1、微信开放平台:https://open.weixin.qq.com/

2、微信公众平台:https://mp.weixin.qq.com/

3、微信支付指引和资源中心:微信支付接入指南和资源下载中心<强力推荐阅读>

https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN

4、微信公众平台支付接口调试工具沙箱地址:可通过沙箱测试验证签名的有效性

http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index

5、公众平台开发者问答系统:在开发过程中有遇到什么问题,都可以上该平台上找找是否有你需要的答案和解决方案。

http://mp.weixin.qq.com/qa/index.php?qa=questions

6、推荐两个蛮给力的博主:

      柳峰:http://blog.csdn.net/lyq8479  

<我接触微信公众平台,第一个公众号的开发都是看他的博客进行学习的,小吕强力推荐>   开发语言:JAVA

      方倍工作室:http://www.cnblogs.com/txw1958/    开发语言:PHP

7、小吕在开发微信支付过程中收集的资源一篓筐<SDK /支付DEMO / IOS、Android接口文档 V1.7最新版 /SDK API文档 / Android应用包名签名APK工具>:免费下载址:http://download.csdn.net/detail/l416112167/7665807

 

二、本篇将不用代码等来介绍微信支付的整个流程过程,因为

        1、小吕已提供了上面的平台资源链接、基本上只要你静下心稍微阅读第一个链接和第七个下载链接中小吕提供的【微信支付】APP支付(Android)接口文档V1.7.doc

 <小吕阅读过v1.2版、v1.5版、v1.7版 其中阅读完1.7版后 解决了我在前面版本阅读中所有的疑问> 就可以非常清晰的了解整个支付接口调用流程,毕竟为官方文档,小吕也不可能会写的比官方文档还详细。

        2、小吕觉得微信提供的demo程序代码也比较清晰。各位可自行下载查看。

 

        3、下面是APP支付(Android)接口文档V1.7.doc文档中最具有代表性的几张截图展示:

               图1、APP 支付的用户交互:

           图2、更直观详细的交互时序图:

 

           图3、文档书签截图:

                     

 

 

      整个微信支付开发过程给我的小结就是:文档虽详细、坑点却不少<特别是针对Android开发者>。

 

 

三、避开坑点,慷慨大道我走来:

       坑点1:运行官方的demo程序为什么还是没调出支付界面?

正确运行demo调出微信支付界面效果如下:

        

 

那为什么有些同事运行demo程序提示能获取到prepayid成功  但是却始终没有见到如上图的支付UI,就提示微信支付结果:-1 呢?

PS:这里备注说明一下:微信支付常见有3种支付结果code返回

resp.errCode==  0 :表示支付成功

resp.errCode== -1 :表示支付失败

resp.errCode== -2 :表示取消支付

原因:运行时没有使用、配置demo程序sdk demo工程目录中的debug.keystore文件

运行sdk  demo工程正确步骤:

1、解压sdk demo工程压缩包,并导入到workspace,如下图:

      

 

2、选择Eclipse顶部菜单Window->Preferences,在弹出的对话框中,选择Android目录下的Build,如下图:

          

 

指定Custom debugkeystore选项的路径为sdk demo工程目录中的debug.keystore文件,如下图:

并应用该配置。

 

3、运行该sdk_sample工程。

 

 

         坑点2:项目中(非sdk demo程序)调用微信支付接口wxApi.sendReq(mPayRed)不起作用,还是调不出支付界面

问题产生原因分析:

1、首先需要确保商户在微信开放平台上的申请审核流程是否已完成。必须要在所有流程审核通过后才能进行开发调式。即用户能拿到appid/appsecret/appkey/partnerkey。

2、Android应用需要在开放平台绑定应用包名和应用签名后才能正常使用。填写不正确将无法正常调起支付。

     <IOS应用不需要这一过程>

    签名工具下载地址:

https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

注意:比如我们的客户商户是用的自己的生产环境.keystore签名文件对apk进行的签名,然后使用微信提供的包名签名工具生成的应用签名字符串与应用包名绑定后,那么Android开发者在调试应用时也须要使用客户商户的.keystone文件对apk进行签名后才能调试程序,不然无法调起支付。<这点非常重要,小吕就被坑在这里>

可以使用Gen_Signature_Android.apk 校验应用签名字符串是否和商户填写的一致 如下图:

3、校验订单详情package的扩展字符串定义、app_signature的生成规则、添加prepayid再次签名这三个过程是否都正确,可通过沙箱测试验证签名的有效性, 沙箱地址:

http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index

4、签名过程不可更改参数名称<一个非常低级的错误,但也是要注意的一个点>:

这里小吕就有遇到这样一个乌龙,算是自己挖了坑给自己跳了

在添加prepayid再次签名的过程中:如下图

 

因为签名后返回给APP的json字符串中有一个参数名为package,通常在手机端我们会将json字符串解析成java bean对象,但是package在java中是一个关键字,所以小吕想啊、在返回的json字符串中把package换个名字叫做packageValue吧,这样就方便我直接把json解析成java对象了。就这样问题就来啦,因为在签名生成sign的过程中原本叫做package的参数变成了packageValue,因此签名生成的sign值自然就是错误的,最终导致支付调不起。

 

 

         坑点3:支付成功后无法跳转到相应的通知Activity界面。

原文地址:http://blog.csdn.net/janice0529/article/details/38051987

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
微信支付[v3]
原文:微信支付[v3] V2升级V3 顺便记录一下 ,文档: http://pay.weixin.qq.com/wiki/doc/api/index.html !!! 支付授权目录与测试人的微信帐号白名单(出现access_denied或access_not_allow错误,请检查是...
855 0
微信支付详解
原文:微信支付详解 1.为什么会有两种JS方法可以发起微信支付? 当你登陆微信公众号之后,左边有两个菜单栏,一个是微信支付,一个是开发者中心。 在开发者中心中,有一个微信JS-SDK说明文档。 在此说明文档中,有一个发起微信支付的请求API wx.chooseWXPay({ timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。
1344 0
himall微信支付
支付目录: 
1154 0
微信支付遇到的几种问题
喜欢的朋友可以关注下,粉丝也缺。 想必做过微信支付的都知道微信支付是一大坑。 这不是重点,重点是今天我们来如何解决问题,跳出这个大坑。
1595 0
微信支付(转载一)
Android微信支付 2014-08-09 一、使用微信官方的提供的demo里的appid等 1.微信接口上手指南:(从“移动应用开发”->“Android接入指南”)建议,先把官方这篇文章看完 2.
1011 0
微信支付(销客多)配置
1、后台各种参数要配置对了。 2、公众号:3个地方填写的域名要配置对了。 3、pay站点: 支付目录:填写2个, xxx域名.com/pay/  和  xxx域名.com/Pay/    ,这2个的差距就是p有大写和小写。
931 0
微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html    本文介绍微信支付下的H5支付实现流程。
2497 0
+关注
西北野狼
擅长Android ,J2EE开发 博客园地址:http://www.cnblogs.com/androidsuperman/p/7834762.html github地址: https://github.com/soyoungboy
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载