微信支付V3接口开发

如果没有微信商户平台,需自己申请开通,开通后配置按照 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_1.shtml 进行配置

微信支付V3接口文档地址:https://wechatpay-api.gitbook.io/wechatpay-api-v3/

微信支付
https://github.com/wechatpay-apiv3/CertificateDownloader 获取微信支付证书

# 首先需要下载生成的商户证书
# 执行此命令时需要 证书序列号,如果不知道,可以执行以下命令进行查看
# windos下opessl 下载地址: https://slproweb.com/products/Win32OpenSSL.html
openssl x509 -in apiclient_cert.pem -noout -serial
# 执行 java -jar CertificateDownloader.jar -h ,查看帮助:
java -jar CertificateDownloader.jar -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath}

#如果执行失败,可导入idea中执行  com.elias.test.CertificateDownloaderTest 测试类
    //用于证书解密的密钥
    private String apiV3key = "";
    // 商户号
    private static String mchId = "";
    // 商户证书序列号
    private static String mchSerialNo = "";
    // 商户私钥
    private static String mchPrivateKeyFilePath = "";
    // 微信支付平台证书
    private static String wechatpayCertificateFilePath = null;
    //下载成功后保存证书的路径
    private static String outputFilePath = "";
    
    //"-c", wechatpayCertificateFilePath
    String[] args = {"-k", apiV3key, "-m", mchId, "-f", mchPrivateKeyFilePath,"-s", mchSerialNo, "-o", outputFilePath};

 

curl 请求

# windows cmd 命令行下 -H 参数必须["]双引号包裹
# curl https://api.mch.weixin.qq.com/v3/certificates 
curl https://api.mch.weixin.qq.com/v3/certificates -H "Authorization: WECHATPAY2-SHA256-RSA2048 mchid=\"mchid\",serial_no=\"serial_no\",nonce_str=\"nonce_str\",timestamp=\"timestamp\",signature=\"signature\"" -H "Connection: keep-alive" -H "Accept: */*" -H "Host: api.mch.weixin.qq.com" --verbose
# --verbose 进行请求体打印跟踪

# {"code":"SIGN_ERROR","message":"Http头Authorization认证类型不正确"}  问题
# 根本原因为Authorization的值有问题。 Authorization值中的双引号["]需要用反斜杠[\]进行转移; 如果没有转移,在curl调用过程中Authorization的值中双引号或单引号会自动去掉。

 

okhttp请求, 借助postman请求json【wechatpay-postman-script】,查看发送header 定位出问题

# okhttp 此请求需要注意 header体参数
Authorization: 
Connection: keep-alive
Accept: */*
# 如果没有 Accept和 Connection值会报错误信息 code=400, message=Bad Request 错误

 

windows 下 openssl 下载地址: https://slproweb.com/products/Win32OpenSSL.html

查看证书序列号: openssl x509 -in apiclient_cert.pem -noout -serial

java开发提供的apache httpclent 工具包 https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient

# 证书、密钥加载工具类:com.wechat.pay.contrib.apache.httpclient.util.PemUtil
# 回调接口类型POST, 数据接收类:com.wechat.pay.contrib.apache.httpclient.notification.Notification, jackson注入
# 回调数据解密工具类 com.wechat.pay.contrib.apache.httpclient.util.AesUtil()
# ApiV3Key 为自己申请时填写的32位随机加密串。
AesUtil aesUtil = new AesUtil(ApiV3Key);
# 回调解密方法
AesUtil.decryptToString(AssociatedData, Nonce, Ciphertex);

所有工具包地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml

postman请求签名生成脚本 https://github.com/wechatpay-apiv3/wechatpay-postman-script

商户平台V3接口地址:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml

V3哔哩视频教程
https://www.bilibili.com/video/BV1og411F7Uz?p=2

posted @ 2022-05-17 14:22  蒂尔捷绅の  阅读(305)  评论(0)    收藏  举报