JAVA对接微信支付V3接口保姆式教程(1)

官方接口地址:产品能力概览 | 微信支付商户平台文档中心

1、准备工作

 1.1、需要AppID(公众号/小程序/开放平台应用)

 1.2、申请微信支付获取到mchid

 1.3、AppID和mchid绑定,这一步可以忽略

 1.4、设置APIV3密钥(这个必须有,后面获取证书的时候需要用)

 1.5、配置支付商户证书(重要,后面请求接口必传项)

2、可以开始开发对接支付接口了(这里以小程序支付举例子)

2.1 、JSAPI支付接口对接接口地址-->微信支付-开发者文档

2.2、开发准备工作

准备一个springboot项目导入微信支付sdk

<dependency>
    <groupId>com.github.wechatpay-apiv3</groupId>
    <artifactId>wechatpay-apache-httpclient</artifactId>
      
</dependency>

3、构建支付请求客户端

  1. 加载证书,这里以字符串加载举例,也可以使用证书路径
  2. String MINI_APP_PAY_KEY = "-----BEGIN PRIVATE KEY-----\n"+
    "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCwCV5Vic0sYlDE\n"+
    ".......";
    // 加载商户私钥(privateKey:私钥字符串)
            PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(new ByteArrayInputStream(MINI_APP_PAY_KEY.getBytes(StandardCharsets.UTF_8)));

     3. 加载平台证书,这里用到了V3密钥

// 加载平台证书(mchId:支付商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
String MINI_PAY_MCHID = "123456";
String MINI_PAY_SERIAL_NO = "123";
String MINI_PAY_KEY = "v3密钥";
        AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
                new WechatPay2Credentials(MINI_PAY_MCHID, new PrivateKeySigner(MINI_PAY_SERIAL_NO, merchantPrivateKey)), MINI_PAY_KEY.getBytes("utf-8"));

这里有个证书序列号获取方法-->证书相关常见问题-接口规则 | 微信支付商户平台文档中心

 4.构建微信请求client


String MINI_PAY_MCHID = "支付商户号";
String MINI_PAY_SERIAL_NO = "证书序列号";
WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
                .withMerchant(MINI_PAY_MCHID, MINI_PAY_SERIAL_NO, merchantPrivateKey)
                .withValidator(new WechatPay2Validator(verifier));

5.合并到一起

@SneakyThrows
    public  CloseableHttpClient getClient() {

        // 加载商户私钥(privateKey:私钥字符串)
        PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(new ByteArrayInputStream(MINI_APP_PAY_KEY.getBytes(StandardCharsets.UTF_8)));
        // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
        AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
                new WechatPay2Credentials(MINI_PAY_MCHID, new PrivateKeySigner(MINI_PAY_SERIAL_NO, merchantPrivateKey)), MINI_PAY_KEY.getBytes("utf-8"));

        WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
                .withMerchant(MINI_PAY_MCHID, MINI_PAY_SERIAL_NO, merchantPrivateKey)
                .withValidator(new WechatPay2Validator(verifier));
        return builder.build();
    }

6.构建完整的客户端

/**
* requestUrl  请求地址
* data  请求json字符串数据
**/
public  String post(String requestUrl, String data)  {

        // 第五步生成的客户端
        CloseableHttpClient httpClient = getClient();

        try {
            // 创建Http Post请求
            HttpPost httpPost = new HttpPost(requestUrl);
            httpPost.addHeader("Accept", "application/json");
            httpPost.addHeader("Content-type", "application/json; charset=utf-8");
            StringEntity entity = new StringEntity(data, ContentType.APPLICATION_JSON);
            httpPost.setEntity(entity);
            // 执行http请求
            CloseableHttpResponse response = httpClient.execute(httpPost);
            String bodyAsString = EntityUtils.toString(response.getEntity());
            return bodyAsString;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qawine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值