官方sdk地址:https://github.com/wechatpay-apiv3/wechatpay-php
记录踩坑点:

1.三种微信支付证书文件

a.key.pem 私钥证书
b cert.pem 平台证书
c plat.pem 商户api证书 公钥文件。这个需要生成。


上图分别对应 平台证书 和私钥证书

2.plat.pem 生成脚本路径


如上图所示,需要按readme的要求填写对应的参数。生成证书
注意:
生成证书文件的时候需要把对应的序列号保留。这个序列号与支付证书的序列号不同。签名需要用到。

3.微信支付接入踩坑点

a.需要先开启fileinfo扩展支持
网上有教程 在php7的安装包源文件中找到fileinfo 然后phpize config链接 make makeinstall等等。
b.需要把php的禁用函数移除proc_open proc_process_status(貌似是这个名字)
然后就可以 composer require wechatpay/wechatpay
命令执行后调试环境就ok了
c.官方sdk有缺失一个重要的环节
instance的定义和初始化

d.加载证书路径 的坑
路径前面一定要加上file:// 否则RSA无法加载秘钥文件,例如同样一个证书文件,得这么写

5.调起支付 签名参数

这四个参数缺一不可

6.回调处理踩坑

回调header拿到的参数如下所示,不是sdk写的那些
wechatpay-signature
wechatpay-timestamp
wechatpay-serial
wechatpay-nonce

请求体解密后的参数如下所示 已经转数组格式了

array (
  'mchid' => '1626702297',
  'appid' => 'wx4a0c941f2ba2cdb1',
  'out_trade_no' => 'MM_946171661694606067',
  'transaction_id' => '4200001589202208288083217709',
  'trade_type' => 'JSAPI',
  'trade_state' => 'SUCCESS',
  'trade_state_desc' => '支付成功',
  'bank_type' => 'OTHERS',
  'attach' => '',
  'success_time' => '2022-08-28T21:50:15+08:00',
  'payer' => 
  array (
    'openid' => 'o48dj5CgPxY6zZ63GgEa-cDHs7Yk',
  ),
  'amount' => 
  array (
    'total' => 10,
    'payer_total' => 10,
    'currency' => 'CNY',
    'payer_currency' => 'CNY',
  ),
)
作者:李世民  创建时间:2022-11-05 20:19
最后编辑:李世民  更新时间:2022-11-05 20:19