【学习笔记】记一次Spring Boot集成微信小程序支付

  • 内容
  • 相关

前言

springboot.jpeg

最近做项目,有一个需求是使用小程序支付,以前做过支付宝支付,没有做过微信相关的支付,当我打开微信支付的开发文档时,我™直接告辞。

然后我就在GitHub上找到了一个第三方SDK,话不多说,直接上干货。

集成步骤

1.导入依赖

        <!--第三方支付SDK-->
        <dependency>
            <groupId>cn.springboot</groupId>
            <artifactId>best-pay-sdk</artifactId>
            <version>1.3.0.BETA</version>
        </dependency>

2.加入微信支付配置

# 支付配置
wechat:
  mchId: 16***
  mchKey: A***
  notifyUrl: http://***/pay/wxnotify
  miniAppId: wx***
  miniAppSecret: ff6***

3.WxPayAccountConfig.java

@Data
@ConfigurationProperties(prefix = "wechat")
@Component
public class WxPayAccountConfig {
     /**
     * 商户号
     */
    private String mchId;
    /**
     * 商户密钥
     */
    private String mchKey;
     /**
     * 异步通知
     */
    private String notifyUrl;
    /**
     *小程序appid
     */
    private String miniAppId;
    /**
     * 小程序密钥
     */
    private String miniAppSecret;
}

4.PayConfig.java

@Configuration
public class PayConfig {
    @Autowired
    private WxPayAccountConfig accountConfig;

    @Bean
    public WxPayConfig wxPayConfig(){
        WxPayConfig wxPayConfig=new WxPayConfig();
        wxPayConfig.setMiniAppId(accountConfig.getMiniAppId());
        wxPayConfig.setAppSecret(accountConfig.getMiniAppSecret());
        wxPayConfig.setMchId(accountConfig.getMchId());
        wxPayConfig.setMchKey(accountConfig.getMchKey());
        wxPayConfig.setNotifyUrl(accountConfig.getNotifyUrl());
        return wxPayConfig;
    }

    @Bean
    public BestPayServiceImpl bestPayService(WxPayConfig wxPayConfig) {
        BestPayServiceImpl bestPayService = new BestPayServiceImpl();
        bestPayService.setWxPayConfig(wxPayConfig);
        return bestPayService;
    }

}

5.PayController.java

@RequestMapping("/pay")
@Controller
public class PayController {
    @Autowired
    private BestPayServiceImpl bestPayService;

    /**
     * 微信支付接口
     */
    @GetMapping("/wxpay")
    @ResponseBody
    public R pay(PayEntity payEntity) {
        //支付请求参数
        PayRequest request = new PayRequest();
        //中间的参数为自己根据项目需求来获取
        request.setPayTypeEnum(BestPayTypeEnum.WXPAY_MINI);
        request.setOrderId(payEntity.orderNo);
        request.setOrderName(payEntity.orderName);
        request.setOrderAmount(payEntity.OrderAmount);
        request.setOpenid(payEntity.Openid);
        request.setAttach("订单号"+payEntity.orderNo);
        System.out.println("【发起支付】request={"+JsonUtil.toJson(request)+"}");
        PayResponse payResponse = bestPayService.pay(request);
        System.out.println("【发起支付】response={"+JsonUtil.toJson(payResponse)+"}");
        return R.ok().put("data",payResponse);
    }

    /**
     * 异步回调
     */
    @PostMapping(value = "/wxnotify")
    @ResponseBody
    public R notify(@RequestBody String notifyData) {
        System.out.println("【异步通知】支付平台的数据request={"+notifyData+"}");
        PayResponse response = bestPayService.asyncNotify(notifyData);
        System.out.println("【异步通知】处理后的数据data={"+JsonUtil.toJson(response)+"}");
        String orderNo = response.getOrderId();
        //返回成功信息给支付平台,否则会不停的异步通知
        if (response.getPayPlatformEnum() == BestPayPlatformEnum.WX) {
            return R.ok().put("data",response).put("orderNo",orderNo);
        }
        throw new RuntimeException("错误的支付平台");
    }

 

其他

大概代码就这么多,需要加入直接逻辑的自行修改即可

开源地址

Pay-Group/best-pay-sdk

best-pay-sdk官方demo

 

 

您阅读这篇文章共花了: 

本文标签:

版权声明:若无特殊注明,本文皆为《囚墨吖丶》原创,转载请保留文章出处。

本文链接:【学习笔记】记一次Spring Boot集成微信小程序支付 - http://www.dmlove.club/19.html

文章收录:[百度已收录] | [360已收录] | [搜狗已收录]