首先吐槽几句,微信支付很强大,古人有诗赞曰:自古多坑空余恨,此坑绵绵无绝期。

先说几个必做前置任务:

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支付填坑记相关推荐

  1. 微信APP支付的坑 - errorcode=-1

    微信APP支付的坑 - errorcode=-1 关于微信App支付errorcode=-1的原因网上的大多数的说明和微信的官方文档差不多,不外乎app签名包名对应问题,这些原因都很好排除. 但最要命 ...

  2. 微信App支付源码坑注释

    微信App支付源码&坑注释 部分的代码,因为代码是copy的我自己代码,然后再进行部分的编辑和注释,所以在使用的时候有可能有欠缺,不过整体来说,应该不影响使用的.如果有疑问,可以留言.在微信A ...

  3. 微信APP支付的踩坑记录(一):prepay_id 与 prepayid

    最近在做微信APP支付时,发现报下面这个错误: -1 错误 可能的原因:签名错误.未注册APPID.项目设置APPID不正确.注册的APPID与设置的不匹配.其他异常等. 用微信签名校验工具校验签名又 ...

  4. php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】

    本文实例讲述了PHP实现的微信APP支付功能.分享给大家供大家参考,具体如下: 1.进行支付请求 他给的DEMO 用的时候有时候会报错 1)我遇到的情况 把  WxPay.Api.php这个文件的 p ...

  5. 微信App支付全解析

    简单介绍了微信移动支付的申请.接入.使用.确认支付结果等相关流程 0 系列文章 系列一 微信App支付全解析 系列二 支付宝App支付全解析 系列三 微信公众号支付全解析 系列四 微信扫码支付全解析 ...

  6. 微信app支付服务端开发记录

    微信APP支付服务端 调用接口需要注意事项: 1.签名:需要全部参数参加签名,空值去掉.(实际传递了什么参数需要,就根据实际参数进行签名) 2.签名参数:appid是申请支付功能的app对于的ID,k ...

  7. 微信小程序踩坑记——ColorUI组件的使用

    微信小程序踩坑记--组件的使用 组件类型 ColorUI Vant weapp ColorUI 首先贴上官网链接:官网链接,GitHub链接 简介 ColorUI是一个css库!!!在你引入样式后可以 ...

  8. 微信APP支付之IJpay的使用

    写在开始:一个搬砖程序员的随缘记录 微信支付相对其他支付,比如支付宝支付坑比较多.一直报签名失败.签名参数顺序.数据类型,加密类型这些都需要注意,用第三方的比较省心. IJpay介绍: 聚合支付,IJ ...

  9. 微信APP支付申请方法

    2019独角兽企业重金招聘Python工程师标准>>> 目前,全国各大商场.超市.便利店.餐饮业.旅游业.医疗业等等都接入了微信支付,并开通微信公众号线上商城做起了线上推广和销售.微 ...

最新文章

  1. 关掉可穿戴部门后,英特尔还将调整自动驾驶业务
  2. 保研计算机英语词汇,实用英语口语:“保研”怎么说?
  3. mvn deploy 报错:Return code is: 400, ReasonPhrase: Bad Request. -
  4. 2. JSF---托管Bean
  5. 如何在pycharm添加扩张工具
  6. 数据库事务和并发控制
  7. 《白鹿原》金句摘抄(二)
  8. JavaScript实现:如何写出漂亮的条件表达式
  9. 从外部访问Kubernetes集群中的应用
  10. 数学一年级应用题_【专项练习】一年级下册数学100以内加减法应用题专项练习,附答案...
  11. Noip2010提高组总结
  12. 项目上线发布流程简介(不同公司流程规范不一样,仅供参考)
  13. Godaddy网站SSL证书安装
  14. 盘点那些年,被Oracle收购的公司
  15. 如何使用FLASHGOT下载网页FLASH
  16. Windows 10 全新界面要来了:焕然一新!
  17. 位置定位LocationManager
  18. Power Pivot报错:应用程序的组件中发生了未经处理的异常
  19. 接口文档————Apidoc的使用
  20. 人脸识别12-人脸搜索(安防应用)

热门文章

  1. 国庆放假,来40秒!用Python实现自动扫雷,挑战世界纪录!
  2. 解决win10系统vim中文乱码
  3. 2012年东岳庙春节文化庙会门票票价及公交路线详解
  4. 微信小程序+mysql实现增删改查
  5. 有哪些适合高强度运动的蓝牙耳机推荐,适合运动健身的运动耳机
  6. 金蝶k3rpc服务器不可用_金蝶K3CLOUD高并发阿里云部署架构方案
  7. mysql视频下载_Mysql基础+进阶完整版视频教程下载
  8. 富爸爸,穷爸爸 读书笔记
  9. C语言刷题随记 —— 乒乓球比赛
  10. 罗德与施瓦茨CBT蓝牙测试仪