微信支付宝支付经验以及相关坑

此片文章介绍对接微信、支付宝所遇到的问题以及经验之谈。

准备工作

支付类型 文档 对接难易程度 文档地址
支付宝 文档写的不错 https://docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query
微信 不想说了 难(也不能说难应该是坑) https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1

熟悉支付流程

支付宝


[详情文档请参考]

微信


[详情文档请参考]

有萝卜有坑

序号 类型 问题描述
No1 支付宝 支付宝秘钥使用pkcs8加密方式,以及相关参数key配置。
No2 微信 微信key值一定要使用微信支付的key,不要用平台key。
No3 微信 一直报签名错误,下面详细介绍。
No4 微信 得到的签名一定要转MD5,然后在将其转换成大写,并且生成MD5必须要以UTF-8的方式。
No5 微信 订单金额需要转换成以分为单位。
No6 微信 且值为空的参数不参与签名。
No7 微信 参数需按ASCII码从小到大排序。
No8 微信 第二次签名认证参数已消息的格式。
No9 微信 第二次签名参数package,需要赋值Sign=WXPay

一句签名错误概括全部错误信息,我就弱弱的问句错误码有用么?

“验证签名错误”第一反应肯定是检测签名是否正确,[官方验证签名地址]
然而,这才刚刚开始,签名正确了还是特么的报“验证签名错误”。特么的把以上几点全部检测了“有萝卜有坑”,然并卵。上面说了签名验证有两次,这是第二次验证错误,最后发现【传入微信端的时间戳参数 ios需要32位 安卓需要10位】,笑哭。首先看见“验证签名错误”,肯定是服务端问题,然而呢。。。

签名两次重要参数

第一次签名参数

得到sign并赋值pay.setSign(sign) ;接下来就是将pay对象转换成xml,调用统一下单接口进行统一支付,并将统一支付返回的xml转换成bean。

notify_url //回调地址
time_start //交易起始时间
time_expire //交易结束时间
spbill_create_ip //IP地址
trade_type //交易类型
limit_pay //no_credit--指定不能使用信用卡支付
appid //微信开放平台审核通过的应用APPID
mch_id //微信支付分配的商户号
nonce_str //随机字符串,不长于32位。
sign_type //签名类型,目前支持HMAC-SHA256和MD5,默认为MD5
body //商品描述交易字段格式根据不同的应用场景按照以下格式:APP——需传入应用市场上的APP名字-实际商品名称,天天爱消除-游戏充值。
out_trade_no //订单号
total_fee //交易金额默认为人民币交易,接口中参数支付金额单位为【分】,参数值不能带小数。
sign //根据以上数据生成签名

第二次签名参数

统一下单成功会返回微信预支付订单号prepay_id,我们需要根据这个prepay_id进行二次签名,二次签名所用参数如下(不包括paySign)。

noncestr //随机字符串
appid //微信开放平台审核通过的应用APPID
timestamp //就是这B,传入微信端的时间戳参数 ios需要32位 安卓需要10位
partnerid //商户号
package //Sign=WXPay
prepayid //微信预支付订单号prepay_id
sign //根据以上数据生成签名

实例代码后续上传GitHub

第三方文档能不能写专业第一,之前和中兴、华为对接一样,特么的文档写的一塌糊涂。

文章作者: 陈 武
文章链接: http://www.updatecg.xin/2018/11/29/微信支付宝支付经验以及相关坑/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 我的学习记录
打赏
  • 微信
  • 支付寶

评论