文档地址

Java配置

一种类型的支付

  1. package com.hn.framework.config;
  2. import com.github.binarywang.wxpay.config.WxPayConfig;
  3. import com.github.binarywang.wxpay.service.WxPayService;
  4. import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.annotation.Configuration;
  8. import javax.annotation.PostConstruct;
  9. /**
  10. * 微信支付自动配置
  11. */
  12. @Configuration
  13. @Slf4j
  14. public class WxPayAutoConfiguration {
  15. private static WxPayService payService;
  16. public static WxPayService getWxPayService() {
  17. return payService;
  18. }
  19. @Value("${pay.wx.appId}")
  20. private String appId;
  21. @Value("${pay.wx.mchId}")
  22. private String mchId;
  23. @Value("${pay.wx.mchKey}")
  24. private String mchKey;
  25. @PostConstruct
  26. public void init() {
  27. log.info("微信支付初始化 appId={}", appId);
  28. WxPayService wxPayService = new WxPayServiceImpl();
  29. WxPayConfig payConfig = new WxPayConfig();
  30. payConfig.setAppId(appId);
  31. payConfig.setMchId(mchId);
  32. payConfig.setMchKey(mchKey);
  33. wxPayService.setConfig(payConfig);
  34. payService = wxPayService;
  35. log.info("微信支付初始化完毕 ");
  36. }
  37. }Copy to clipboardErrorCopied

多种类型支付

  1. /**
  2. * 微信支付自动配置
  3. */
  4. @Configuration
  5. @Slf4j
  6. public class WxPayAutoConfiguration {
  7. private static Map<String, WxPayService> wxPayServices = Maps.newHashMap();
  8. public static WxPayService getWxPayService(String appid) {
  9. WxPayService wxPayService = wxPayServices.get(appid);
  10. if (wxPayService == null) {
  11. throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid));
  12. }
  13. return wxPayService;
  14. }
  15. @PostConstruct
  16. public void init() {
  17. log.info("微信支付初始化 userAppId={} lawyerAppId={}",WxConstants.userAppId,WxConstants.lawyerAppId);
  18. // 用户端
  19. put(WxConstants.userAppId);
  20. // 律师端配置
  21. put(WxConstants.lawyerAppId);
  22. // 公众号,pc扫码支付
  23. put(WxConstants.publicAppId);
  24. log.info("微信支付初始化完毕 ");
  25. }
  26. private void put(String appId){
  27. WxPayService wxPayService = new WxPayServiceImpl();
  28. WxPayConfig payConfig = new WxPayConfig();
  29. payConfig.setAppId(appId);
  30. payConfig.setMchId(WxConstants.mchId);
  31. payConfig.setMchKey(WxConstants.mchKey);
  32. payConfig.setKeyPath("classpath:cert/apiclient_cert.p12");
  33. wxPayService.setConfig(payConfig);
  34. wxPayServices.put(appId,wxPayService);
  35. }
  36. }Copy to clipboardErrorCopied


App支付

  1. public Object wxPay(String orderCode, BigDecimal price) {
  2. WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();
  3. int totalFee = price.multiply(new BigDecimal("100")).intValue();
  4. request.setTotalFee(totalFee);
  5. request.setBody("共婵娟-充值会员");
  6. request.setOutTradeNo(orderCode);
  7. request.setSpbillCreateIp(IpUtils.getIpAddr());
  8. request.setNotifyUrl(HnConfigUtils.getConfig("pay.wx.notifyUrl"));
  9. request.setTradeType(WxPayConstants.TradeType.APP);
  10. WxPayService wxPayService = WxPayAutoConfiguration.getWxPayService();
  11. try {
  12. return wxPayService.createOrder(request);
  13. } catch (WxPayException e) {
  14. throw new BusinessException(e.getMessage());
  15. }
  16. }Copy to clipboardErrorCopied


测试App支付

需要前端配合