微信支付PHP开发问题总结

微信支付PHP开发问题总结

  1. wechatpay-php 报错 Cannot load privateKey from

     //  从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名
     $privateKeyFilePath =  '/app/conf/apiclient_key.pem';
     $privateKeyInstance = Rsa::from($privateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
    

    处理方法是带 file 协议,例如:

     $privateKeyInstance = Rsa::from("file://".$privateKeyFilePath, Rsa::KEY_TYPE_PRIVATE);
    
  1. 输入源“/appid”映射到字段“公众号ID”必填性规则校验失败,此字段为必填项

    使用官方推荐的 wechatpay-php 开发库,按照微信支付文档中心APP支付接入前准备 内容确认APPID 、mchid (商户号)、商户API证书序列号、APIv3密钥这几个参数。

  1. 如何获取微信支付平台证书

    /usr/local/php/bin/php  /data/html/api_kumayi/vendor/bin/CertificateDownloader.php -k ${apiV3key} -m ${mchId} -f ${mchPrivateKeyFilePath} -s ${mchSerialNo} -o ${outputFilePath} -c ${wechatpayCertificateFilePath}
    

    参数说明:

    -k 是API v3 密钥;

    -m 是商户号;

    -f 是商户的私钥文件

    -s 是商户证书的序列号

    -o 是下载成功后保存证书的路径,可选参数

    -c 是微信支付证书,用于验签; 非必需参数

    注意:

    第一次下载证书对于微信支付平台的应答,需要使用平台证书来进行验签;但平台证书只能通过 获取平台证书接口 下载,所以当第一次去获取证书时,会出现个“死循环”。

    为解决这个“死循环”,可以临时跳过验签,来获得证书。也就是说可以不提供微信支付证书参数(-c 参数)来下载,在下载得到证书后,工具会使用证书对报文的签名进行验证如果通过则说明证书正确。

参考文档:

wechatpay-php 开发者库: https://github.com/wechatpay-apiv3/wechatpay-php

APP支付官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_1.shtml

微信支付接口规则 :https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay3_1.shtml

API证书及密钥: https://kf.qq.com/faq/161222NneAJf161222U7fARv.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容