微信商户号商家转账到零钱v3接口证书生成步骤

先打开命令窗口,按以下步骤做,电脑系统随意,建议是linux或macOs

一、生成时间戳

jzp@MacMini ~ % date +%s

注:时间是5分钟有效

结果:1672114604

二、生成一个请求随机串

jzp@MacMini ~ % hexdump -n 16 -e ‘4/4 “%08X” 1 “\n”‘ /dev/random

结果:575971A6B99EF4A7DBDDE087DCA7023D

三、计算签名值

jzp@MacMini ~ % echo -n -e \ “GET\n/v3/certificates\n1672114604\n575971A6B99EF4A7DBDDE087DCA7023D\n\n” \ | openssl dgst -sha256 -sign apiclient_key.pem \ | openssl base64 -A

注:红色是需要替换值

结果:uOVRnA4qG/MNnYzdQxJanN+zU+lTgIcnU9BxGw5dKjK+VdEUz2FeIoC+D5sB/LN+nGzX3hfZg6r5wT1pl2ZobmIc6p0ldN7J6yDgUzbX8Uk3sD4a4eZVPTBvqNDoUqcYMlZ9uuDdCvNv4TM3c1WzsXUrExwVkI1XO5jCNbgDJ25nkT/c1gIFvqoogl7MdSFGc4W4xZsqCItnqbypR3RuGIlR9h9vlRsy7zJR9PBI83X8alLDIfR1ukt1P7tMnmogZ0cuDY8cZsd8ZlCgLadmvej58SLsIkVxFJ8XyUgx9FmutKSYTmYtWBZ0+tNvfGmbXU7cob8H/4nLBiCwIUFluw==

四、请求证书

jzp@MacMini ~ % curl https://api.mch.weixin.qq.com/v3/certificates -H ‘Authorization: WECHATPAY2-SHA256-RSA2048 mchid=”1604804704“,nonce_str=”575971A6B99EF4A7DBDDE087DCA7023D“,signature=”uOVRnA4qG/MNnYzdQxJanN+zU+lTgIcnU9BxGw5dKjK+VdEUz2FeIoC+D5sB/LN+nGzX3hfZg6r5wT1pl2ZobmIc6p0ldN7J6yDgUzbX8Uk3sD4a4eZVPTBvqNDoUqcYMlZ9uuDdCvNv4TM3c1WzsXUrExwVkI1XO5jCNbgDJ25nkT/c1gIFvqoogl7MdSFGc4W4xZsqCItnqbypR3RuGIlR9h9vlRsy7zJR9PBI83X8alLDIfR1ukt1P7tMnmogZ0cuDY8cZsd8ZlCgLadmvej58SLsIkVxFJ8XyUgx9FmutKSYTmYtWBZ0+tNvfGmbXU7cob8H/4nLBiCwIUFluw==“,timestamp=”1672114604“,serial_no=”4DFD944E3031EE401AA3CFDDF6547A1228DA0467“‘

注:

mchid:商户号

nonce_str:随机字符串,第二步生成的值

signature:签名串,第三步生成的值

timestamp:第一步生成的值,有效时间是5分钟

serial_no:证书系列号,在商户后台->api证书->管理证书可以查看到

结果:

{“data”:[{“effective_time”:”2022-12-26T19:57:22+08:00″,”encrypt_certificate”:{“algorithm”:”AEAD_AES_256_GCM”,”associated_data”:”certificate”,”ciphertext”:”uEFEE/zA1AF86yd0VSfHlSHQgmONWRqtMfvMmqKaRr/rSYeoSklTVCJBbC+TYmfThzDsoC710mIDKN8oayFHqUzu9l4oSOp0mNAbgKfDhyK2GNWrBYZH/bO+FDRel3F6nG0B5OysCI95Db8MtxSmCuzNAcvMVmDTD8smGVTUsx3BI6akdV+FBl/WZfmgmtED7/KCphTU0LE/UBO8ukFcZthAIbBm9hCxvgwm05oreB+ZwK8P/7bY7jiXylV4IBlGqX5VEOp2bu9I7FqHtVBcUoqRgOPwSdrrjWEub5JBW8jVcOFD/r3SaKYEsvJWmhBiNhRlvW0q4x3jVg2a/DbPsF4xIvbu68XDxTIgB1yFd7OWJ6bNEhlhw8zNohb346VePpiEgI/0Ux9ckVgPx5vdIjn6yJOyELmW8/rXA07VISO8Rm1TEFN6PsmK/TeZh8ZAf9adLEqvECY9dh2NTSHyYoN7W79xecrxRKhZIsbafp+ge1J4TCfLHkhzBVo35zb2ag6Cj3PPQWt25EIG4zz4AdrQIA0dkERVuuC3sFgzgZNFcqX0RMkkVX3LhDCOTdd5jmxGKupdzdvJeQgjpkeUGFjscxvPHQOIwuehqJKZBcPdR5Pe4sgDWEqkDKREnLMoNVqO58t9eKOo6GqHTyd3YeFiggRD7YFaNU3sa0foOhyogTpRUK0G7DswKqHdtf50bDi3XbybAHqHTO3jtfceHd7EdbS3S6XdIZg5+3dnC6Ir+cZhQvn3UaHAoQ0z1wtqvGr4Ro7g0NGRXYArQoyVaBM2+KzdnovSuDsqXr+OoHtWLXFo7/0/JXH6P4VvYbqnopiegX1vfETT70Yq8SGwLrhzLEnHJRlud+yINLLCs3YWnOFBrY4CKwZG53smIV/9m5f72eYmwA1ucxQpwDyIJi51hiomeXgc0o+Gc0GaXtGWOczRzK4Nbb3tUeSSvalntDhXmhekhzbLFEmzdtzUhhe1R1zndNGuYta0YaiJoP/Tg6Qqot5r8+BI5dtPk3tbzzTarbqqACvLw2WldtyWoUL2PNUZBobtQVbz9HVUjz3nF3XFXw13rwrEAWCY6a8wpxSx+uZX1WqEaZ9yD2Zw6h7EPJ6pQKEoA1bLxkHRDXw2YvTyYsz/hpRK8kwwrpLCFU+Bxe9sXSZKShkFSWVLaV0CSgp+XXWw0p/CLFHUYiUrzdmRLxdVm/0e7zj3gg5AI22554oqxN4o2gB363rNY2ZqimuYqGWawVXHv9KmF2einEAgPPLJQnGSODMO/tGKcpnDBzGxp3gL2QZqS8CHUodtsRT11dqBgb74QyA7l4hZTxcrMCNvrkfEHRm/moOJjokD9bZsGJBq4QV9FCjWv7g6FiCp8wme+xUQNyz/PauWvHb+DVvAslY135rfgUic8eOkzTadBTudAfT4ae5vmEYERB+DjDIVyWNtw9AbljdBAlYxI7sahFTl//yP/KrIzlfpzZuML9CTRR1Ew1UrVvdVKpxR6NeAjDs+DtnwpVsDwdjPJbnSLKU74jgnuMkvuREeafCcQz8dyCaMfiSE2xYHnB6KLs13YZUdVdYKl4l1lWDmAK8lyXvBVNWObTzo4bkr/hgqJhZvbb/6ZpR498+szfdf/b2IS6P91ivZLe+CKE7uwVkbTVcWG1ID7N64LyWvH89w8lbJEp49cKtCykJDM/3/fM76aPBhyjD2yPlkWK2+fJOyRq87H81rAwD2VN2bRKp0GS1IhihOKgebLkYLbyTg5CF5m+AbNmIiVxML8guO/9giAFf36uUNeFiONyNDZlzTlS1Lbk2kjraZvdy5a/EQ1/5pzfXS5OeXrofrU7CuDUyg1zk1M0tFI4pQyCZccPQFH0mIGZ2X7g9UtRyTwAPF0g==”,”nonce”:”6916069dd2b1″},”expire_time”:”2027-12-25T19:57:22+08:00″,”serial_no”:”18FD663CF094E4787B52C52F0FAD42CE9C51″

上面这样表示生成成功

五、下载证书,执行以下命令

java -jar CertificateDownloader.jar -k 4o7wR28L8f0JA19mO1cvltSqyTDjC3EN -m 1604804704 -f /www/wwwroot/create_cert/apiclient_key.pem -s 4DFD944E3031EE401AA3CFDDF6547A1228DA0467 -o /www/wwwroot/create_cert/

注:

CertificateDownloader.jar : 这个需要在微信和github下载,也可以点我这里直接下载:CertificateDownloader.jar

-m:商户号

-f:商户号私钥路径

-s:证书系列号,serial_no 在第四步中可查看

-o:证书下载路径

执行成功后可以在证书下载路径看到一个新文件,类似这样:

wechatpay_18FD663CF094E4787B52C52F0FAD42CE9C511BE7.pem
————————————————
版权声明:本文为CSDN博主「a669675709」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a669675709/article/details/128454469

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信商家转账零钱 V3 的实现需要通过微信支付 API 接口来实现,以下是 JAVA 版本的代码实现: 1. 导入依赖包 ```java import java.util.HashMap; import java.util.Map; import com.github.wxpay.sdk.WXPay; import com.github.wxpay.sdk.WXPayConfig; import com.github.wxpay.sdk.WXPayConstants; import com.github.wxpay.sdk.WXPayUtil; ``` 2. 构造微信支付配置对象 ```java public class WXPayConfigImpl implements WXPayConfig { private String appID; // 公众账ID或应用ID private String mchID; // 商户 private String key; // 商户密钥 private String certPath; // 商户证书路径 private int httpConnectTimeoutMs = 6 * 1000; // 连接超时时间 private int httpReadTimeoutMs = 8 * 1000; // 读取超时时间 public WXPayConfigImpl(String appID, String mchID, String key, String certPath) { this.appID = appID; this.mchID = mchID; this.key = key; this.certPath = certPath; } @Override public String getAppID() { return appID; } @Override public String getMchID() { return mchID; } @Override public String getKey() { return key; } @Override public InputStream getCertStream() { try { return new FileInputStream(new File(certPath)); } catch (FileNotFoundException e) { e.printStackTrace(); } return null; } @Override public int getHttpConnectTimeoutMs() { return httpConnectTimeoutMs; } @Override public int getHttpReadTimeoutMs() { return httpReadTimeoutMs; } } ``` 3. 构造微信支付对象 ```java WXPayConfig wxPayConfig = new WXPayConfigImpl(appID, mchID, key, certPath); WXPay wxPay = new WXPay(wxPayConfig, WXPayConstants.SignType.MD5, true); ``` 4. 构造参数并调用接口 ```java // 构造请求参数 Map<String, String> reqData = new HashMap<String, String>(); reqData.put("mch_appid", appID); reqData.put("mchid", mchID); reqData.put("nonce_str", WXPayUtil.generateNonceStr()); reqData.put("partner_trade_no", "xxxxxxxxxxxx"); // 商户订单 reqData.put("openid", "xxxxxxxxxxxx"); // 用户openid reqData.put("check_name", "NO_CHECK"); // 不校验真实姓名 reqData.put("amount", "100"); // 转账金额 reqData.put("desc", "测试转账"); // 转账描述 reqData.put("spbill_create_ip", "127.0.0.1"); // 调用接口的机器IP地址 // 调用接口 Map<String, String> respData = wxPay.transfer(reqData); ``` 其中,`appID`、`mchID`、`key`、`certPath` 等参数需要根据实际情况填写。`wxPay.transfer(reqData)` 方法返回的是一个 Map 对象,包含了接口响应的所有信息,可以根据业务需求进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值