微信小程序支付返回签名错误_java 微信小程序微信支付统一下订单及数字签名错误问题(后端)...

今天来分享一下之前做微信小程序微信支付遇到的一些坑,博主这里是微信小程序支付功能,因此选择的微信支付方式是JSAPI支付方式(温馨提示左下角有音乐哦)。

首先我们肯定是要在小程序后台绑定一个商户号的,接下来我们看一下整个开发流程如下图(微信官方图):

由此我们就可以得出下面这个支付的大致流程:

首先,选择商品和数量等,点击下单,然后后台将这些参数生成数字签名并以xml的方式传递,并调用微信统一下订单接口生成一张微信预支付订单表(此时也可以添加上自己业务逻辑),订单有效期都在半小时内,半小时后该条下单数据就失效了,因此应该在半小时内完成支付,签名成功后将微信返回的prepay_id等数据返回给前端,再由前端调起收银台完成支付。

由上面我们大概清楚了两点:

1.生成数字签名;

2.调用微信统一下订单;

3.小程序支付;

那么我们再来看看微信支付AIP接口文档:传送门

 

在返回数据中return_code 和result_code都为SUCCESS的为签名成功,返回参数含义可以通过传送门了解,这里博主就不再说明了。

通过AIP接口文档我们发现要想调用微信统一下订单接口那么我们就需要传递以下必填参数:

字段名变量名必填类型示例值描述

小程序ID

appid

String(32)

wxd678efh567hg6787

微信分配的小程序ID

商户号

mch_id

String(32)

1230000109

微信支付分配的商户号

随机字符串

nonce_str

String(32)

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,长度要求在32位以内。推荐随机数生成算法

签名

sign

String(64)

C380BEC2BFD727A4B6845133519F3AD6

通过签名算法计算得出的签名值,详见签名生成算法

商品描述

body

String(128)

腾讯充值中心-QQ会员充值

商品简单描述,该字段请按照规范传递,具体请见参数规定

商户订单号

out_trade_no

String(32)

20150806125346

商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号

标价金额

total_fee

Int

88

订单总金额,单位为分,详见支付金额

终端IP

spbill_create_ip

String(64)

123.12.12.123

支持IPV4和IPV6两种格式的IP地址。调用微信支付API的机器IP

通知地址

notify_url

String(256)

http://www.weixin.qq.com/wxpay/pay.php

异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。

交易类型

trade_type

String(16)

JSAPI

小程序取值如下:JSAPI,详细说明见参数规定

以上参数请仔细查看API接口文档说明,需注意随机字符转生成方法及位数,签名生成算法(博主采用MD5),商户订单号也就是自己平台生

成的订单号,金额是以分为单位;

下面我们重点来说一说数字签名的生成如图:

以上是java后台签名完调用微信统一下订单的步骤,下面我们来看小程序端完成支付前需要获取那些数据,官方文档:传送门

通过以上我们看到它是需要这些必填参数:

参数类型必填说明

timeStamp

String

时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间

nonceStr

String

随机字符串,长度为32个字符以下。

package

String

统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*

signType

String

签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致

paySign

String

签名,具体签名方案参见微信公众号支付帮助文档;

其中我们需要注意的是paySign这个参数,根据文档我看可以看到,生成这个参数是需要以下这些必填参数:

字段名变量名必填类型示例值描述

小程序ID

appId

String

wxd678efh567hg6787

微信分配的小程序ID

时间戳

timeStamp

String

1490840662

时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间

随机串

nonceStr

String

5K8264ILTKCH16CQ2502SI8ZNMTM67VS

随机字符串,不长于32位。推荐随机数生成算法

数据包

package

String

prepay_id=wx2017033010242291fcfe0db70013231072

统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=wx2017033010242291fcfe0db70013231072

签名方式

signType

String

MD5

签名类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值