微信支付 服务商模式支付 签名错误
最近公司来了新需求需要增加微信服务商模式,看了看微信的文档感觉很简单很轻松,但是微信留下的坑真的深,比如sdk应该是不一样的,但是得到微信的答复是:普通商户版 和服务商版本的sdk是一样的 ,但是服务商版本的开发需要自己添加子商户号和子商户appid。下面是解决步骤
1 需要自己添加的配置 Wxpay.Data.php
/**
* 设置微信分配的子商户公众账号ID 这个是子账号公众号的appid
* @param string $value
**/
public function SetSubAppid($value)
{
$this->values['sub_appid'] = $value;
}
/**
* 获取微信分配的子公众账号ID的值
* @return 值
**/
public function GetSubAppid()
{
return $this->values['sub_appid'];
}
/**
* 设置微信支付分配的子商户号
* @param string $value
**/
public function SetSubMch_id($value)
{
$this->values['sub_mch_id'] = $value;
}
/**
* 获取微信支付分配的子商户号的值
* @return 值
**/
public function GetSubMch_id()
{
return $this->values['sub_mch_id'];
}
一共四个函数
2 在Wxpay.Api.php 添加两行代码
$inputObj->SetSubAppid('xxxxxxx');//子账户的appid
$inputObj->SetSubMch_id('xxxx');//子账户商户号
然后就可以测试了,如无意外的话到了支付页面会提示你签名错误。
3 现在该修改第三个文件了Wxpay.Config.php
public function GetAppId()
{
return $this->APPID; 这个是应该填服务商对应的公众号的appid
}
public function GetMerchantId()
{
return $this->MCHID; 服务商的商户号
}
public function GetAppSecret()
{
return $this->APPSECRET; //服务商appid对应的 appsecrest
}
最终要的一个修改来了 这个应该填的是商户支付秘钥 在这里设置 https://pay.weixin.qq.com/index.php/account/api_cert
如下图,点击设置秘钥
一般刚开通的服务商是没有设置这个的 ,如果不设置这个,肯定会提示您签名错误,把这个设置完了,填在这个位置
public function GetKey()
{
return $this->KEY; //一串自己设置的key
}
ok 现在应该大功告成