微信js支付换服务器,微信内网页支付(微信 JSAPI 支付)的一点经验

微信 JSAPI 支付的流程是:

服务端根据情况,向微信服务器发起“下单”请求。此处需要提供自己维护唯一的订单号,并要求签名加密。

根据“下单”反馈的微信提供的预支付“订单号”,用刚才下单请求参数同样的签名方式,对几个基本数据进行封包签名。

将签名摘要,和这几个基本数据,传输给 JavaScript 端。

JavaScript 通过微信内置对象的方法,唤起支付,并前端返回支付操作结果。

微信服务端会异步通知服务端,支付结果;此处通知地址是之前“下单”时指定的。

如果因故服务端没有收到通知,可以主动发起查询,使用之前向微信服务端“下单”时提供的自己维护唯一的订单号。

.

经过试验,我发现了这么几个有意思的现象。

首先,支付参数里边有时间戳,但哪怕过了 5 分钟,这个时间戳及相关配套参数,依然可以用于支付。

.

其次,在微信预支付订单过期之前,用时间戳生成支付参数,拖到订单过期之后使用,报过期。这意味着微信可能根本就没有去识别微信支付参数里边的时间戳,或许只检查了非常基本的时间顺序性:支付时间戳不得早于预支付下单时间(?未验证)

.

第三,对于重复支付,具备如下现象。

○ 特殊发现:在微信登记订单,是跟微信账号绑定的。一个订单,利用外部系统订单号,换微信去查询,依然是无此订单。

一个微信号 pending ,用另一个微信号再发起支付,报订单与微信号不一致。

一个微信号 cancel ,此微信单,同微信可以再支付,别的微信不能。

一个微信号 ok ,此微信单,同微信报已支付,别的微信报订单与微信号不一致。

.

本文还发表于在其它网站

CSDN : https://blog.csdn.net/ShaneLooLi/article/details/104021907

ITeye : https://www.iteye.com/blog/surmounting-2512113

中国开源社区: https://my.oschina.net/shane1984/blog/3159557

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值