微信支付V3 生成平台证书

微信支付V3里必须有平台证书文件,才能唤起唤醒支付
平台证书生成前提需要提前下载好设置apikey3后下载的证书3个证书文件

  • apiclient_key.pem
  • apiclient_cert.pem
  • apiclient_cert.p12

官方证书下载工具地址:https://github.com/wechatpay-apiv3/CertificateDownloader

用jar包下载证书

在这里插入图片描述
跳转后选择:

在这里插入图片描述
下载完成后:

这里直接按文档执行命令 java -jar 会报错
报错信息:java.security.InvalidKeyException: Illegal key size
jdk8自带的jar包AES解密只能处理128位的密钥
需要去Oracle官网下载jar包替换原有jar包

Oracle官网的jar包下载地址:https://www.oracle.com/cn/java/technologies/javase-jce8-downloads.html

下载完成后解压文件:

在这里插入图片描述
需要用到的2个jia包文件名

  • local_policy.jar
  • US_export_policy.jar

找到JDK的安装路劲:

默认为:C:\Program Files\Java
将刚才的2个jar包与 jre1.8.0_20\lib\security\ 路劲下的2个同名的jar包替换
再将刚才的2个jar包与 jdk1.8.0_20\jre\lib\security 路劲下的2个同名的jar包替换

现在可以执行命令获取平台证书了:

在这里插入图片描述
执行语句格式(不需要换行,此处为看的直观)

java -jar CertificateDownloader-1.1.jar 
-k {你的apiv3key} 
-m {商户id}
-f {证书密钥(apiclient_key.pem)的存放路径地址}
-s {你的证书序列号 }
-o {下载的平台证书的存放路径}

执行完后

找到设置的存放路劲地址
一长串.pem文件名结尾的文件就是生成的平台证书了
可修改文件名,后将其放入项目中即可使用

在PHP中使用微信支付V3生成签名的过程需要以下几个步骤: 1. **初始化配置**: 首先,确保你已经有了商户号、AppID、商户密钥(SecretKey)以及开放平台API证书(如需)。 2. **构建请求数据**: 创建一个包含交易相关的字段数组,例如: - `nonce_str`: 非对称加密随机字符串 - `timestamp`: 当前时间戳 - `package`: 支付请求的统一封装,如`prepay_id` 或 `jsapi_ticket` - `sign_type`: 签名类型,通常为`MD5` 或 `SHA256` - 其他根据支付场景所需的字段(如商品信息、用户信息等) 3. **设置数组排序**: 得到的请求参数需要按照指定的键字典序进行排序,保证每次请求参数的一致性。 4. **拼接字符串**: 将排序后的参数以"&"连接,并移除所有空值键值对。 5. **签名计算**: 使用商户密钥对上述拼接后的字符串进行哈希处理,生成签名。如果是MD5签名,使用`md5($string . "&key=" . $secretKey)`;如果是SHA256签名,可以使用`sha256($string . "&key=" . $secretKey)`。 6. **签名结果验证**: 在发送至微信服务器之前,将生成的签名和原始请求数据一起发送,微信会校验其真实性。 ```php // 示例代码片段 $param = [ 'appid' => 'your_appid', // ... 其他参数 'nonce_str' => uniqid(), // ... 排序并拼接参数 ]; ksort($param); $string_to_sign = ''; foreach ($param as $k => $v) { if (!empty($v)) { $string_to_sign .= $k . '=' . $v . '&'; } } // 移除最后一个 & $string_to_sign = rtrim($string_to_sign, '&'); $signature = hash('sha256', $string_to_sign . "&key={$your_secret_key}"); // 发送请求之前,将签名放入请求体或头部 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值