微信APP支付填坑记
首先吐槽几句,微信支付很强大,古人有诗赞曰:自古多坑空余恨,此坑绵绵无绝期。
先说几个必做前置任务:
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支付的坑 - errorcode=-1
微信APP支付的坑 - errorcode=-1 关于微信App支付errorcode=-1的原因网上的大多数的说明和微信的官方文档差不多,不外乎app签名包名对应问题,这些原因都很好排除. 但最要命 ...
- 微信App支付源码坑注释
微信App支付源码&坑注释 部分的代码,因为代码是copy的我自己代码,然后再进行部分的编辑和注释,所以在使用的时候有可能有欠缺,不过整体来说,应该不影响使用的.如果有疑问,可以留言.在微信A ...
- 微信APP支付的踩坑记录(一):prepay_id 与 prepayid
最近在做微信APP支付时,发现报下面这个错误: -1 错误 可能的原因:签名错误.未注册APPID.项目设置APPID不正确.注册的APPID与设置的不匹配.其他异常等. 用微信签名校验工具校验签名又 ...
- php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】
本文实例讲述了PHP实现的微信APP支付功能.分享给大家供大家参考,具体如下: 1.进行支付请求 他给的DEMO 用的时候有时候会报错 1)我遇到的情况 把 WxPay.Api.php这个文件的 p ...
- 微信App支付全解析
简单介绍了微信移动支付的申请.接入.使用.确认支付结果等相关流程 0 系列文章 系列一 微信App支付全解析 系列二 支付宝App支付全解析 系列三 微信公众号支付全解析 系列四 微信扫码支付全解析 ...
- 微信app支付服务端开发记录
微信APP支付服务端 调用接口需要注意事项: 1.签名:需要全部参数参加签名,空值去掉.(实际传递了什么参数需要,就根据实际参数进行签名) 2.签名参数:appid是申请支付功能的app对于的ID,k ...
- 微信小程序踩坑记——ColorUI组件的使用
微信小程序踩坑记--组件的使用 组件类型 ColorUI Vant weapp ColorUI 首先贴上官网链接:官网链接,GitHub链接 简介 ColorUI是一个css库!!!在你引入样式后可以 ...
- 微信APP支付之IJpay的使用
写在开始:一个搬砖程序员的随缘记录 微信支付相对其他支付,比如支付宝支付坑比较多.一直报签名失败.签名参数顺序.数据类型,加密类型这些都需要注意,用第三方的比较省心. IJpay介绍: 聚合支付,IJ ...
- 微信APP支付申请方法
2019独角兽企业重金招聘Python工程师标准>>> 目前,全国各大商场.超市.便利店.餐饮业.旅游业.医疗业等等都接入了微信支付,并开通微信公众号线上商城做起了线上推广和销售.微 ...
最新文章
- 关掉可穿戴部门后,英特尔还将调整自动驾驶业务
- 保研计算机英语词汇,实用英语口语:“保研”怎么说?
- mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. -
- 2. JSF---托管Bean
- 如何在pycharm添加扩张工具
- 数据库事务和并发控制
- 《白鹿原》金句摘抄(二)
- JavaScript实现:如何写出漂亮的条件表达式
- 从外部访问Kubernetes集群中的应用
- 数学一年级应用题_【专项练习】一年级下册数学100以内加减法应用题专项练习,附答案...
- Noip2010提高组总结
- 项目上线发布流程简介(不同公司流程规范不一样,仅供参考)
- Godaddy网站SSL证书安装
- 盘点那些年,被Oracle收购的公司
- 如何使用FLASHGOT下载网页FLASH
- Windows 10 全新界面要来了:焕然一新!
- 位置定位LocationManager
- Power Pivot报错:应用程序的组件中发生了未经处理的异常
- 接口文档————Apidoc的使用
- 人脸识别12-人脸搜索(安防应用)