微信APP支付填坑记
来源:互联网 发布:qsv格式转换器mac版 编辑:程序博客网 时间:2024/04/30 09:54
首先吐槽几句,微信支付很强大,古人有诗赞曰:自古多坑空余恨,此坑绵绵无绝期。
先说几个必做前置任务:
1 在微信商户平台设置你的公用key,程序里生成sign签名时,要用到这个key。为md5 32位格式的字符串。
2 eclipse里windows ->Preferences->Android->Build.设置keystore文件,不要用默认的,要用你正式生成的项目的签名keystore,测试也可以用微信demo里的debug.keystore文件(最终还是要用自己发布用的)。附赠截图一张:
3 、使用微信提供的 签名提取工具,提取你的apk签名,到微信开放平台里的【开发信息】设置一下此产品签名: 如上图,我特意标出md5那个东东,其实最终提取出来的,就是去掉冒号的字符串。
点击下载微信签名提取工具 (微信开放平台->资源中心->资源下载->android资源下载->签名工具)
4 、 WXPayEntryActivity.java这个类,一定要在.wxapi包下。如你的项目包名叫做 com.a.b 那么此文件路径是 com.a.b.wxapi.WXPayEntryActivity.java.
5、个人建议(不改行不行我也不确定),测试时,测试demo包名要改成你的包名(例如上边的com.a.b),这点是在其他攻略里查的,据说微信验证会对应包名和签名,不正确,则支付不会通过。反正。。我是不管三七二十一,直接demo包名,换成我的包名,再进行测试的。
6 、微信客户端本身,进行app支付时,貌似有缓存机制。如果一再支付错误,报errcode-1,请清理微信数据,重启微信。我这边有遇到代码调好,死活就报错,最后清理微信数据,重启微信,支付界面成功调出。
归纳下微信app支付的流程和填的坑。流程如下:
微信支付官方文档链接
官方基本只看api部分的步骤即可。
1、整理必备参数(官方文档里,【api列表】->【统一下单】,我只用了必填参数),按照微信要求规则签名(签名规则链接)后,把参数post至 https://api.mch.weixin.qq.com/pay/unifiedorder 接口。此步骤前端处理也可,后端处理也可。我是放在后端处理的,微信的demo就是如此做的,理由是,避免商户号等信息暴露。
post以后,微信接口会返回一个xml,结构如下:
此处有神坑一枚:返回值里,只有prepay_id,这一个值用得到~~~重复:只有只有prepay_id,这一个值用得到。其他都是浮云。
2、将appid(产品id ,wx开头的,取自微信开放平台,微信支付文档里,写的是公众账号id,鄙视一下),
partnerid(商户号,取自微信商户平台),
prepayid(预支付交易会话ID,即步骤1里的prepay_id),
package(固定填写Sign=WXPay),
noncestr(随机字符串,此处又有神坑一枚:要用你第一次post时,自己生成的nonce_str的值,而不是返回的xml里的nonce_str值)
timestamp(10位的时间戳,记住,是10位的)
以上6个参数,配合公用key,再次按照微信签名规则,进行签名,生成sign后 ,将此7个值(以上6值+sign) 返回给前端,demo里使用的是json格式返回
app前端 使用PayReq对象的属性值,接收上边7个值后, 由 微信支付实例对象 执行sendReq函数。
支付成功回调在WXPayEntryActivity.java里的onResp函数里。
完工,以上趟中任意一个坑,都不会正确弹出支付,errcode 会一直-1。。
大概如此,还有疑惑的朋友,可以给我留言,或者发站内信。
- 微信APP支付填坑记
- 支付--微信APP支付
- 微信支付app
- 微信支付app
- 微信APP支付
- app微信支付
- APP微信支付
- app微信支付
- 微信APP支付
- 支付--微信APP
- 微信APP支付
- 微信app支付
- 微信APP支付
- 微信APP支付
- APP微信支付集成
- 微信app支付问题
- 微信支付 app 服务器
- 微信APP支付 C#
- POJ-3292-Semi-prime H-numbers-数筛法
- Could not find a storyboard named 'Main' in bundle NSBundle
- [算法学习]后缀表达式转二叉树
- 字符编码的历史演变
- 7.Tachyon命令行使用
- 微信APP支付填坑记
- 51nod 1487:占领资源 很好玩很痛苦
- 点击<a>标签,禁止页面自动跳到顶部的解决办法
- [算法学习]树的广度遍历
- POJ 1860 Currency Exchange(bellman变形)
- PHP之mongodb学习
- csproj OutputType
- 8.在Tachyon运行MapReduce
- LeetCode 2016 290,299,13