当前位置:   article > 正文

【微信支付】【java】Springboot对接开发微信支付_springboot集成wechatpay-java

springboot集成wechatpay-java

本文章是介绍java对接(微信小程序)微信支付,包括微信预下单、支付、退款等等。 

 一、微信配置申请

1、微信支付配置申请

详细操作流程参考官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_1.shtml#part-1

配置完成需要以下信息:

  • APPID
  • 商户号(mchid)
  • 商户API私钥(apiclient_key.pem)
  • 商户证书序列号
  • 商户APIv3密钥

二、开发环境

1、开发环境

开发语言:java ,编译工具:idea ,框架:springboot ,仓库:maven

2、maven依赖

  1. <dependency>
  2. <groupId>com.github.wechatpay-apiv3</groupId>
  3. <artifactId>wechatpay-java</artifactId>
  4. <version>0.2.10</version>
  5. </dependency>

3、application.yml文件配置

  1. #微信支付配置
  2. wx:
  3. pay:
  4. #应用id(小程序id)
  5. appId: wx6b5xxxxxxxxxxxx
  6. #商户号
  7. merchantId: 1xxxxxxxxx
  8. #商户API私钥
  9. privateKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  10. #商户证书序列号
  11. merchantSerialNumber: 315DDXXXXXXXXXXXXXXXXXXXXXXXXXXX
  12. #商户APIv3密钥
  13. apiV3Key: XXXXXXXXXXXXXXXXXXXXXXXXXX
  14. #支付通知地址
  15. payNotifyUrl: https://xxx.xxxx.xxx.xxx/xx/xxxx/xxxx/openapi/wx/payNotify
  16. #退款通知地址
  17. refundNotifyUrl: https://xxx.xxx.xxx.xxx/xxxx/xxxx/xxxx/openapi/wx/refundNotify

三、代码开发

1、配置类

  1. import lombok.Data;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. /**
  5. * @author caozhen
  6. * @ClassName WxPayConfig
  7. * @description: 微信支付配置类
  8. * @date 2024年01月03日
  9. * @version: 1.0
  10. */
  11. @Data
  12. @Component
  13. @ConfigurationProperties(prefix = "wx.pay")
  14. public class WxPayConfig {
  15. //APPID
  16. private String appId;
  17. //mchid
  18. private String merchantId;
  19. //商户API私钥
  20. private String privateKey;
  21. //商户证书序列号
  22. private String merchantSerialNumber;
  23. //商户APIv3密钥
  24. private String apiV3Key;
  25. //支付通知地址
  26. private String payNotifyUrl;
  27. //退款通知地址
  28. private String refundNotifyUrl;
  29. }

2、初始化商户配置

  1. import com.wechat.pay.java.core.RSAAutoCertificateConfig;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import javax.annotation.Resource;
  5. /**
  6. * @author caozhen
  7. * @ClassName WxPayAutoCertificateConfig
  8. * @description: 微信支付证书自动更新配置
  9. * @date 2024年01月03日
  10. * @version: 1.0
  11. */
  12. @Configuration
  13. public class WxPayAutoCertificateConfig {
  14. @Resource
  15. private WxPayConfig wxPayConfig;
  16. /**
  17. * 初始化商户配置
  18. * @return
  19. */
  20. @Bean
  21. public RSAAutoCertificateConfig rsaAutoCertificateConfig() {
  22. RSAAutoCertificateConfig config = new RSAAutoCertificateConfig.Builder()
  23. .merchantId(wxPayConfig.getMerchantId())
  24. .privateKey(wxPayConfig.getPrivateKey())
  25. .merchantSerialNumber(wxPayConfig.getMerchantSerialNumber())
  26. .apiV3Key(wxPayConfig.getApiV3Key())
  27. .build();
  28. return config;
  29. }
  30. }

3、JSAPI微信预下单

3.1、先建个WxPayService服务类

  1. import com.alibaba.fastjson.JSONObject;
  2. import com.baomidou.mybatisplus.mapper.EntityWrapper;
  3. import com.baomidou.mybatisplus.mapper.Wrapper;
  4. import com.hvit.user.exception.DataAccessException;
  5. import com.hvit.user.util.DateUtils;
  6. import com.hvit.user.util.R;
  7. import com.hvit.user.yst.entity.WxOrderEntity;
  8. import com.hvit.user.yst.entity.WxPayLogEntity;
  9. import com.hvit.user.yst.request.CreateOrderReq;
  10. import com.hvit.user.yst.request.QueryOrderReq;
  11. import com.hvit.user.yst.request.WxNotifyReq;
  12. import com.hvit.user.yst.service.WKShoppingMallService;
  13. import com.hvit.user.yst.service.data.WxOrderDataService;
  14. import com.hvit.user.yst.service.data.WxPayLogDataService;
  15. import com.wechat.pay.java.core.RSAAutoCertificateConfig;
  16. import com.wechat.pay.java.core.exception.HttpException;
  17. import com.wechat.pay.java.core.exception.MalformedMessageException;
  18. import com.wechat.pay.java.core.exception.ServiceException;
  19. import com.wechat.pay.java.core.notification.NotificationParser;
  20. import com.wechat.pay.java.core.notification.RequestParam;
  21. import com.wechat.pay.java.service.payments.jsapi.*;
  22. import com.wechat.pay.java.service.payments.jsapi.model.*;
  23. import com.wechat.pay.java.service.payments.jsapi.model.Amount;
  24. import com.wechat.pay.java.service.payments.model.Transaction;
  25. import com.wechat.pay.java.service.refund.RefundService;
  26. import com.wechat.pay.java.service.refund.model.*;
  27. import io.swagger.annotations.ApiModelProperty;
  28. import io.swagger.models.auth.In;
  29. import lombok.extern.slf4j.Slf4j;
  30. import org.apache.commons.lang3.StringUtils;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.scheduling.annotation.Async;
  33. import org.springframework.stereotype.Service;
  34. import org.springframework.transaction.annotation.Transactional;
  35. import javax.annotation.Resource;
  36. import javax.servlet.ServletInputStream;
  37. import javax.servlet.http.HttpServletRequest;
  38. import java.io.BufferedReader;
  39. import java.io.IOException;
  40. import java.io.InputStreamReader;
  41. import java.math.BigDecimal;
  42. import java.util.Date;
  43. import java.util.HashMap;
  44. import java.util.LinkedHashMap;
  45. import java.util.Map;
  46. /**
  47. * @author caozhen
  48. * @ClassName WxPayService
  49. * @description: 微信支付
  50. * @date 2024年01月03日
  51. * @version: 1.0
  52. */
  53. @Slf4j
  54. @Service
  55. public class WxPayService {
  56. @Resource
  57. private WxPayConfig wxPayConfig;
  58. @Autowired
  59. private RSAAutoCertificateConfig rsaAutoCertificateConfig;
  60. @Autowired
  61. private WxOrderDataService wxOrderDataService;
  62. @Autowired
  63. private WxPayLogDataService wxPayLogDataService;
  64. /***
  65. * 预支付订单
  66. * @param req
  67. * @return
  68. */
  69. public R createOrder(CreateOrderReq req) throws Exception {
  70. if (req == null) {
  71. return R.error("创建订单失败,缺少参数!");
  72. }
  73. //先解密
  74. String orderNo = req.getOutTradeNo();
  75. Integer totalFee = req.getTotal();
  76. //创建初始化订单
  77. //todo,创建订单这边你们自己来(后面我会放出表结构)
  78. //请求微信支付相关配置
  79. JsapiServiceExtension service =
  80. new JsapiServiceExtension.Builder()
  81. .config(rsaAutoCertificateConfig)
  82. .signType("RSA") // 不填默认为RSA
  83. .build();
  84. PrepayWithRequestPaymentResponse response = new PrepayWithRequestPaymentR
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/467366
推荐阅读
相关标签
  

闽ICP备14008679号