微信支付(转载二)

微信支付现在主要集成在: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

时间: 2024-11-08 14:13:47

微信支付(转载二)的相关文章

微信支付(转载一)

Android微信支付 2014-08-09 一.使用微信官方的提供的demo里的appid等 1.微信接口上手指南:(从“移动应用开发”->“Android接入指南”)建议,先把官方这篇文章看完 2.微信支付接口(从“移动应用开发”->“Android开发手册” )(下载官方demohttps://res.wx.qq.com/paymchres/zh_CN/htmledition/download/wxpay/app_wx_pay_tool_android1d902c.zip) Androi

微信支付之二三事

由于近日项目中要用到微信支付,而且遇到的坑比较多,就写了这一篇博文(PS:第一次写博客,文采不好,勿喷勿喷),希望还处在坑中的朋友有所帮助. 1.先去微信公众平台申请应用 ,成功之后,你还要去商户平台进行验证,具体可以参考:http://kf.qq.com/faq/120911VrYVrA150906F3qqY3.html 成功之后,你就可以得到 appid.mch_id.app_key等一系列参数 注意:这里有一个坑,那就是你的应用签名要用一个签名工具来获取,之后我会上传上去,还有微信规定调试

微信支付模式二 统一下单一直提示签名错误

来源:https://www.jianshu.com/p/2195599195e3 我这个项目是用的公司之前的商户信息,但是也把新的公众号进行了支付配置,应该没什么问题了,但是在选择支付方式NATIVE生成二维码支付时一直提示签名错误.所以截取xml进行字段的检查.检查sgin的生成过程,数据都没什么问题.另外使用微信官方的支付sign校验工具进行匹配,将转成的xml填写进去,输入商户的密钥key,居然说签名是正确的. 重点:微信支付接口返回签名错误,使用微信sign校验工具提示签名正确,可以试

开发微信支付上线二个月后的总结

微信支付开发完成上线已经有两个多月了,如果没有做推广和宣传用户量不会很大.到现在也没有出现很大的支付量.微信支付以前想所有公众号放开了,才有机会写一些总结, 以前微信支付没有向所有公众号放开,所以所有的文档不方便公开发表.从去年还是接入微信支付到现在过程中,发现微信支付的功能越来越完善了,功能也越来越丰富了.在开发初期遇到了好多坑.和微信对接的同学摸索了好久才发现的.开始双方对不同公司不同的接入环境的差异,遇到的问题是无法避免的.有一些特别要注意的方面我在这里这一些总结吧. 1.微信支付结果服务

微信支付配置参数:支付授权目录、回调支付URL

一.开通微信支付的首要条件是:认证服务号或政府媒体类认证订阅号(一般认证订阅号无法申请微信支付) 二.微信支付分为老版支付和新版支付,除了较早期申请的用户为老版支付,现均为新版微信支付. 三.公众平台微信支付开发配置参数: 1.支付授权目录:www.weixunyunduan.com/yunduanwx/wxpay/(主域名状态下填写此目录) 2.支付授权目录:www.weixunyunduan.com/yunduanwx/Cashier/pay/wxpay/(主域名状态下使用收银台填写此目录)

网站添加微信支付功能(小白填坑)

本周的工作安排就是在网站添加支付功能,包括支付宝.微信.财付通等,今天这篇文章先说一下微信支付吧,支付宝的太容易了基本看一下都会了 1.首先准备工作,开通了支付功能的账号,具体怎么开通的我也不熟悉因为我做的时候都是使用开通好的账号(目前微信支付好像只支持商家不支持个人吧?) 2.按照我的性格当然是百度一下啦,但是微信支付的文档说明事例实在是太坑了,完全不是我这种小白可以一下看懂的,在这夸奖一下支付宝,支付宝的事例文档做的太好了基本做的时候没什么坑 准备工作结束开工: 我的开发环境是java,所以

JAVA微信扫码支付模式二功能实现以及回调

一.准备工作 首先吐槽一下微信关于支付这块,本身支持的支付模式就好几种,但是官方文档特别零散,连像样的JAVA相关的demo也没几个.本人之前没有搞过微信支付,一开始真是被它搞晕,折腾两天终于调通了,特此写下来,以享后人吧! 关于准备工作,就"微信扫码支付模式二"官方文档地址在这 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1 可以先看看,实际上需要准备的东西有以下几个: 其中APP_ID和APP_SECRET

[转载]微信支付

公众号支付有2种支付方式: JS API 支付:是指用户打开图文消息或者扫描二维码,在微信内置浏览器打开网页进行的支付.商户网页前端通过使用微信提供的 JS API,调用微信支付模块.这种方式,适合需要在商户网页进行选购下单的购买流程.Native(原生)支付:是指商户组成符合 Native(原生)支付规则的 URL 链接,用户可通过点击该链接或者扫描对应的二维码直接进入微信支付模块(微信客户端界面),即可进行支付.这种方式,适合无需选购直接支付的购买流程. 以上两种方式最大的区别是:是否需要经

微信支付二维码native原生支付开发模式一

开发前,商户必须在公众平台后台设置支付回调URL.URL实现的功能:接收用户扫码后微信支付系统回调的productid和openid:URL设置详见回调地址设置. 1.业务流程时序图 图6.8:原生支付接口模式一时序图 业务流程说明: 1)商户后台系统根据微信支付规定格式生成二维码(规则见下文第2节),展示给用户扫码. 2)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统. 3)微信支付系统收到客户端请求,发起对商户后台系统支付回调URL的调用.调用请求将带product