最近为客户进行微信支付接入,客户提到需要配置服务商模式以便查看多个子商户账号的流水,我下载了微信支付sdk配置和对接后,发现该sdk仅做了一些普通商户配置,没有针对服务商模式的配置,因此需要自己去修改sdk demo来支持服务商模式。
1.配置WxPay.Config.php
在类WxPayConfig里添加以下代码
public function GetSubAppId(){
return "(这里配置你的子商户公众账号ID)";
}
public function GetSubMerchantId(){
return "(这里配置微信支付分配的子商户号)";
}
public function GetKey() {
return "(这里配置服务商的商户支付密钥)";
}
public function GetAppSecret()
{
return "(服务商appid对应的appsecrest)";
}
注意,代码里的GetAppid()(不是GetSubAppId())和GetAppsecret()在服务商模式下,应 return 服务商的公众号的appid和appsecret,GetKey()方法也应返回服务商的商户支付密钥,签名错误的报错可能就会在这里发生,切记切记。
2.配置Wxpay.Data.php
//配置子公众账号ID
public function SetSubAppid($value){
$this->values['sub_appid'] = $value;
}
//获取子公众账号ID
public function GetSubAppid()
{
return $this->values['sub_appid'];
}
//配置子商户号
public function SetSubMch_id($value){
$this->values['sub_mch_id'] = $value;
}
//获取子商户号
public function GetSubMch_id()
{
return $this->values['sub_mch_id'];
}
3.配置 Wxpay.Api.php
在方法unifiedOrder里配置:
$inputObj->SetSubAppid($config->GetSubAppId());
$inputObj->SetSubMch_id($config->GetSubMerchantId());
这样配置就基本完成了。 但在调用的时候也是有坑的。我们看官方文档JSAPI支付统一下单的部分