微信支付文档地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_1.shtml
微信支付SDK地址:https://github.com/wechatpay-apiv3/wechatpay-java

一、开通支付产品、获取相关配置参数
参数 参数描述
appid 公众账号ID(可以在开放平台查看,一般是wx开头)
mch_id 商户号(可以在商户平台查看)
key 商户APIV3密钥 (可以在商户平台查看设置)
merchant_serial_number 商户证书序列号 (可以在商户平台查看设置)
二、
1、加入依赖
<dependency>
  <groupId>com.github.wechatpay-apiv3</groupId>
  <artifactId>wechatpay-java</artifactId>
  <version>0.2.9</version>
</dependency>
2、微信支付配置参数
/**
 * @ClassName: WxPayConfig
 * @Description: 微信支付配置参数
 * @Version 1.0
 */
public final class WxPayConfig {
    // 应用ID
    public final static String appId = "wx*********";
    // 商户ID
    public final static String mchId = "1*********";
    // 回调地址
    public final static String notifyUrl = "http://***.com/pay/notify";
    /** 商户API私钥文件路径 */
    public final static String privateKeyPath = "apiclient_key.pem";
    /** 商户证书序列号 */
    public final static String merchantSerialNumber = "******";
    /** 商户APIV3密钥 */
    public final static String apiV3key = "******";

}
3、微信支付Controller类
@Controller
@RequestMapping("/pay")
public class PayController {
    @Autowired
    private WxPayService wxPayService;
    /**
     * 微信支付 native
     */
    @RequestMapping(value = "/createOrder", method = RequestMethod.GET)
    @ResponseBody
    public String createOrder() {
        // 订单号
        String out_trade_no= "123456789";
        // 支付金额,单位分
        Integer money = 100;
        Map result = wxPayService.nativePayV3(out_trade_no, money);
        String code_url = (String) result.get("code_url");
        return code_url;


    }

}
4、微信支付服务类
public interface WxPayService {
    Map<String, String> nativePayV3(String out_trade_no, Integer money);
}

@Service
public class WxPayServiceImpl implements WxPayService {

    @Override
    public Map<String, String> nativePayV3(String out_trade_no, Integer money) {
        Config config = new RSAAutoCertificateConfig.Builder()
                .merchantId(WxPayConfig.mchId)
                .privateKeyFromPath(WxPayConfig.privateKeyPath)
                .merchantSerialNumber(WxPayConfig.merchantSerialNumber)
                .apiV3Key(WxPayConfig.apiV3key)
                .build();

        NativePayService service = new NativePayService.Builder().config(config).build();

        PrepayRequest request = new PrepayRequest();
        Amount amount = new Amount();
        amount.setTotal(money);
        request.setAmount(amount);
        request.setAppid(WxPayConfig.appId);
        request.setMchid(WxPayConfig.mchId);
        request.setDescription("测试商品");
        request.setNotifyUrl(WxPayConfig.notifyUrl);
        request.setOutTradeNo(out_trade_no);
        PrepayResponse response = service.prepay(request);

        Map<String, String> payParameters = new HashMap<>();
        payParameters.put("code_url", response.getCodeUrl());
        return payParameters;
    }

}

根据返回的code_url,生成二维码;扫描二维码即可支付。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐