springboot 微信Native支付(V3版)

微信支付文档地址: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,生成二维码;扫描二维码即可支付。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值