微信服务商分账功能开发(PHP)
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
设置分账参数
在调用支付的时候设置参数
添加分账参数
在JDK中添加get,set方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public function SetProfit_sharing($value) { $this->values['profit_sharing'] = $value; }
public function GetProfit_sharing() { return $this->values['profit_sharing']; }
public function IsProfit_sharingSet() { return array_key_exists('profit_sharing', $this->values); }
|
添加分账接收方
核心代码
部分参数写在SDK的config文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?php
namespace app\api\service;
use think\facade\Env; require_once Env::get('root_path'). "extend/WxPay/WxPay.Api.php";
class ProfitSharing { public static function addPro() { $receiver = [ "type" => "MERCHANT_ID", "account" => "11111", "name" => "有限公司", "relation_type" => "SERVICE_PROVIDER" ]; $WxOrderData = new \WxPayProfitSharing(); $WxOrderData->SetSub_Mch_id('11111'); $WxOrderData->SetSubAppid(config('base.app_id')); $WxOrderData->SetReceiver(json_encode($receiver)); $wxOrder = \WxPayApi::profitsharingAddReceiver($WxOrderData); return $wxOrder; } }
|
要改一下SDK文件
在Data的签名里面必须使用HMAC-SHA256
1 2 3 4 5 6 7 8 9 10 11 12 13
| public function MakeSignH() { ksort($this->values); $string = $this->ToUrlParams(); $string = $string . "&key=".WxPayConfig::KEY; $string = hash_hmac("sha256",$string,WxPayConfig::KEY); $result = strtoupper($string); return $result; }
|
在Api文件中添加一个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public static function profitsharingAddReceiver($inputObj, $timeOut = 6) { $url = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
$inputObj->SetAppid(WxPayConfig::APPID); $inputObj->SetMch_id(WxPayConfig::MCHID); $inputObj->SetNonce_str(self::getNonceStr());
$inputObj->SetSignHash(); $xml = $inputObj->ToXml();
$startTimeStamp = self::getMillisecond(); $response = self::postXmlCurl($xml, $url, false, $timeOut); return $response; $result = WxPayResults::Init($response); self::reportCostTime($url, $startTimeStamp, $result); return $result; }
|
测试
分账
核心代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public static function profitSharing() { $receivers = [ "type" => "MERCHANT_ID", "account" => "111111", "amount" => 2, "description" => "分到服务商" ]; $orderNo = self::makeOrderNo(); $WxOrderData = new \WxPayProfitSharing(); $WxOrderData->SetSub_Mch_id('11111'); $WxOrderData->SetTransaction_id('42789709008202008098970721631'); $WxOrderData->SetOut_order_no($orderNo); $WxOrderData->SetSubAppid(config('base.app_id')); $WxOrderData->SetReceivers(json_encode($receivers)); $wxOrder = \WxPayApi::profitsharing($WxOrderData); return json($wxOrder); }
|
在Api文件中添加一个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public static function profitsharing($inputObj, $timeOut = 6) { $url = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing";
$inputObj->SetAppid(WxPayConfig::APPID); $inputObj->SetMch_id(WxPayConfig::MCHID); $inputObj->SetNonce_str(self::getNonceStr());
$inputObj->SetSignHash(); $xml = $inputObj->ToXml();
$startTimeStamp = self::getMillisecond(); $response = self::postXmlCurl($xml, $url, true, $timeOut); $result = WxPayResults::Init($response); self::reportCostTime($url, $startTimeStamp, $result); return $result; }
|
测试
感谢
微信开放平台
万能的网络
以及勤劳的自己