接入微信的流程,不官方,赞

来源:互联网 发布:海岛奇兵医师数据 编辑:程序博客网 时间:2024/05/15 05:48
一.微信支付接入需要的准备工作:
1.首先需要进入微信商户平台,填写相关信息成为商户(这里可以获取partnerid)
商户平台地址:https://pay.weixin.qq.com/inde ... %252F
2.需要在微信开发平台申请成为平台开发者,详细步骤参考下面链接
https://pay.weixin.qq.com/wxzf ... index
二.微信的支付的资料及demo
支付场景说明:
https://pay.weixin.qq.com/wiki ... 3D8_1
支付流程说明:
https://pay.weixin.qq.com/wiki ... 3D8_3
请详细参考开放平台API手册:
IOS: https://open.weixin.qq.com/zh_ ... .html
安卓: https://open.weixin.qq.com/zh_ ... .html
具体接入流程:
https://pay.weixin.qq.com/wiki ... 3D8_5
Sdk下载:
https://pay.weixin.qq.com/wiki ... D11_1
微信开发者问答系统
http://mp.weixin.qq.com/qa/home/index.html
三.微信支付的坑
1.demo的坑。微信官方提供的demo,在配置正确的情况下(注意使用demo中的debug.ketstore对demo进行签名。不过我这里没有使用其签名也是可以拉起的),app能正确拉起一次微信支付页面,之后无论如何都不能再拉起,将同一个apk放置到其他未安装过的手机,也只能正确拉起一次,之后都返回-1.但ios的demo没有此问题,每次都可以正确拉起支付页面。
根据官方的文档,-1错误可能是签名,appid,等发生错误,但我详细至少对于demo而言,它的拉起失败不是上述原因
个人猜测:这是android的微信app做了限定处理。
2.微信开发平台申请开发应用填写应用签名时,需要注意,填写的是keystore的MD5值,不是SHA1值。注意开发时的debug.keystore和最终发布的签名keystore的MD5,SHA1都是不一样的。正式发布产品需要使用正式的签名。
另外特别注意:md5值得填写全是小写,并且不能包含冒号
若要检查应用的签名是否与开发平台填写的签名一致,使用https://open.weixin.qq.com/zh_ ... d.apk 获取签名,进行判断
3.项目中调用微信支付接口调不出支付界面,始终返回-1
(1).首先需要确保商户在微信开放平台上的申请审核流程是否已完成。必须要在所有流程审核通过后才能进行开发调式。即用户能拿到appid/appsecret/appkey/partnerkey
(2).Android应用需要在开放平台绑定应用包名和应用签名后才能正常使用。填写不正确将无法正常调起支付。
由于通常开发中使用的是android studio或者eclipse直接运行,对app的签名是使用当前pc的debug.keystore进行签名,因此非常大的可能存在签名错误导致无法拉起支付页面
检查是否一致可以使用上面第二点的apk查看。
(3).Android应用需要在开放平台绑定应用包名和应用签名后才能正常使用。填写不正确将无法正常调起支付。
微信公众平台支付接口调试工具
http://mp.weixin.qq.com/debug/ ... index
(4).服务器返回的参数错误引起的无法支付
生成sign不能更改参数名称,由于java中package是一个关键字,因此开发过程中,服务器端可能会使用其他的名称比如packageValue来代替,于是悲剧出现了.由于参数名称改变了,因此生成的签名的sign就是错误的,导致了无法支付。我就是被坑在这里啊啊啊啊啊啊
4.无法收到支付的结果
微信官方的文档中描述,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),因此必须要保持包名一致。即wxapi包名必须存在。假设我的应用包名是:com.sj那么接受支付结果的包名就是com.sj.wxapi,在该包下有WXPayEntryActivity.class类。
另外注意了,由于是微信app回调结果,微信的app明显和自己的app是不在一个进程的,因此这个WXPayEntryActivity在manifest中声明时,一定要加上android:exported="true"
0 0
原创粉丝点击