项目开发过程中,我们会使用到微信支付,需要登录到商户平台进行相关配置,运营主要配置两个模块即可,平台证书和API秘钥。API秘钥分为两个版本,V2和V3,这里我们以V3为例。
1、申请平台证书给到开发人员,开发人员在接统一下单和回调通知时会用到证书,生成签名。
2、生成一个32为的随机秘钥,去申请APIV3秘钥,此秘钥开发人员在回调通知时会用来解密。
3、证书保存到项目中的某个文件,保证可以读取到即可。
由于我的项目需要实现多个商户主体配置,所以可以在数据库做个支付配置,填写对应的商户id和秘钥。
代码中需要改动两处地方,一是回调地址的配置,二是证书路径的区分。这里我以商户id来拼接以实现自定义配置。
public function __construct($appid, $secret, $mch_id)
{
self::$appid = $appid;
self::$secret = $secret;
self::$mch_id = $mch_id;
$host = 'https://' . config('server_host');
self::$notify_v3_url = $host . '/notify_wx';
//证书以商户id命名
self::$pem_key = 'apiclient_key_' . $mch_id . '.pem';
//回调地址以商户id命名
self::$notify_v3_url .= $mch_id;
}