微信扫码支付接口

本文介绍了微信扫码支付模式二的流程,包括商户后台生成订单、调用微信统一下单API获取二维码链接、用户扫码支付及支付结果处理。重点讨论了统一下单API和查询订单API的使用,以及回调处理和防止回调失败的查询订单策略。同时,提到了微信沙箱环境测试时沙箱key的生成和管理问题。
摘要由CSDN通过智能技术生成

本文以微信统一支付接口模式二来进行开发

        模式二与模式一相比,流程更为简单,不依赖设置的回调支付URL。商户后台系统先调用微信支付的统一下单接口,微信后台系统返回链接参数code_url,商户后台系统将code_url值生成二维码图片,用户使用微信客户端扫码后发起支付。注意:code_url有效期为2小时(也可以根据统一支付接口内提供的定义订单有效期字段进行自定义设置,但是最好不要超过微信定义的这个两小时有效期),过期后扫码不能再发起支付(再次扫描二维码时会弹出提示,订单已过期)。

业务流程时序图

  

业务流程说明:

(1)商户后台系统根据用户选购的商品生成订单。

(2)用户确认支付后调用微信支付【统一下单API】生成预支付交易;

(3)微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接code_url。

(4)商户后台系统根据返回的code_url生成二维码。

(5)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。

(6)微信支付系统收到客户端请求,验证链接有效性后发起用户支付,要求用户授权。

(7)用户在微信客户端输入密码,确认支付后,微信客户端提交授权。

(8)微信支付系统根据用户授权完成支付交易。

(9)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。

(10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。

(11)未收到支付通知的情况,商户后台系统调用【查询订单API】。

(12)商户确认订单已支付后给用户发货。

 

根据微信官方提供的调用时序图可以看出模式二的接口需要调用微信API接口中的【统一下单API】和【查询订单API】两个接口就可以完成扫描支付这一动作。以下详细讲解这两个接口的实现步骤以及其中的坑

首先微信官方提供了接口如何调用的demo

demo下载链接:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1

可以根据自己使用的开发语言下载对应的demo进行调试。我使用的是java所以下载的就是java对应的demo。

image.png

下载的demo如下图

   image.png

demo导入Intellj后可以根据自己的需求进行项目目录的拆分,下面是我以springBoot项目进行拆分的目录

image.png

开发步骤:

首先根据官方示例继承WXPayConfig生成我们自己的配置文件

官方抽象类(根据自己的项目改造,下面是我改造之后的官方类):

package start.com.github.wxpay.sdk;

import java.io.InputStream;

public abstract class WXPayConfig {

    /**
     * 获取商户证书内容
     *
     * @return 商户证书内容
     */
    public abstract InputStream getCertStream();

    /**
     * HTTP(S) 连接超时时间,单位毫秒
     *
     * @return
     */
    public int getHttpConnectTimeoutMs() {
        return 6*1000;
    }

    /**
     * HTTP(S) 读数据超时时间,单位毫秒
     *
     * @return
     */
    public int getHttpReadTimeoutMs() {
        return 8*1000;
    }

    /**
     * 获取WXPayDomain, 用于多域名容灾自动切换
     * @return
     */
    public abstract IWXPayDomain getWXPayDomain();

    /**
     * 是否自动上报。
     * 若要关闭自动上报,子类中实现该函数返回 false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值