订单信息分为两层,业务层和微信层,业务层保留订单的详细信息,微信层只有总金额信息。业务层平台不关心,只提供微信层的封装方法。

        需引入微信支付包:

<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-apache-httpclient</artifactId>
<version>0.3.0</version>

        整体流程如下:

        1) 调用相关业务接口创建业务层订单。

             这部分根据业务自行实现,没有要求。

        2)调用平台微信支付接口创建订单

              平台提供给业务端的是jar包:

<groupId>org.qlm</groupId>
<artifactId>qlm-utils-wechart</artifactId>
<version>1.0-SNAPSHOT</version>

       提供jar包而不是微服务接口的原因是:1 微信支付相关参数不同业务是不同的,要配置在业务的配置文件里;2 可以和上面第一步集成在同一个接口里,前端只需要调用1次。

        public WxPayInfoDto createOrder(String openid,String orderId,String title,long total)

        需要的配置如下:

qlm:

   wechart:

       appId: 

       appSecret: 

       merchartid:

       miniPayNotify:

       payKey3:

        3)前端调用微信支付

          拿到WxPayInfoDto后前端调用相应接口。

        4)微信调用回调接口返回结果

             回调接口是在创建微信订单过程中传过去的参数

             写法:

             编写一个接口:

@PostMapping("/miniPay/notify")
public String nativeNotify(HttpServletRequest request, HttpServletResponse response)

其中调用平台提供的函数

WxPayNotifyDto nativeNotify(HttpServletRequest request, HttpServletResponse response)

如果成功,从返回值中得到订单ID,再处理业务端即可