微信分账说明

10 篇文章 0 订阅

分账有服务商分账普通商户分账,服务商下的单服务商分账,普通商户下的单普通商户分账。但目前服务商还不能绑定APPID,所以服务商不能用小程序下单(会报签名错误)。我就用的普通商户下的单,普通商户分的帐。

1.流程图

在这里插入图片描述

2.普通商户分账

1.开通分账功能

开通分账功能,产品中心->我的产品->分账,开通后产品设置,设置分账比例

在这里插入图片描述

2.添加分账接收方

添加分账接收方,也可以通过接口管理。交易中心->管理分账接收方。分账发起方选择本商户。点击添加分账接收方

在这里插入图片描述

3.根据开发文档分账

注意开发文档分普通直连分账服务商分账接口

3.开发注意

1.下单添加字段profit_sharing

实现分账只是在普通支付下单接口中新增了一个分账参数profit_sharing,其他与普通支付方式完全相同。目前支持付款码支付、JSAPI支付、Native支付、APP支付、小程序支付、H5支付、委托代扣。

$result_data = [
	'body' => '分账测试支付',
	'out_trade_no' => '订单号',
	'openid' => $openid, // $openid
	'total_fee' => '888',
	'notify_url' => 'https:xxx.xxx.com/wx_notify_url', // 支付结果通知网址,如果不设置则会使用配置里的默认地址
	'trade_type' => 'JSAPI',
	'profit_sharing' => 'Y',    // 是否指定服务商分账  Y-是,需要分账/N-否,不分账/字母要求大写,不传默认不分账
];
2.签名加密使用的是HMAC-SHA256
  • PHP示例
/**
 * Created by PhpStorm.
 * User: EricPan
 * Date: 2020/3/18
 * Time: 17:31
 * @param $attributes
 * @param $key
 * @param string $algo
 * @return string
 */
function wxHash($attributes,$key,$algo = 'sha256')
{
    ksort($attributes);

    $attributes['key'] = $key;
    $str = hash_hmac($algo,urldecode(http_build_query($attributes)),$key);
    return strtoupper($str);
}
3.XML编码解码
  • 编码
/**
 * 数组转XML
 * Created by PhpStorm.
 * User: EricPan
 * Date: 2020/3/18
 * Time: 14:08
 * @param $data
 */
function wxDataToXML($data,$k = 'xml')
{
    $xml = "<".$k.">";
    foreach ($data as $key => $val){
        if (is_numeric($val)){
            $xml.="<$key>$val</$key>";
        }
        else
        {
            $xml.="<$key><![CDATA[$val]]></$key>";
        }

    }
    $xml.="</".$k.">";
    return $xml;
}
  • 解码
/**
 * 微信XML转数组
 * Created by PhpStorm.
 * User: EricPan
 * Date: 2020/3/18
 * Time: 14:07
 * @param $xml
 * @return mixed
 */
function wxXMLToData($xml)
{
    return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
}
4.证书使用

curl发起请求的时候使用。在微信商户平台->账户中心->API安全->申请API证书

/**
  * 微信POST请求
  * Created by PhpStorm.
  * User: EricPan
  * Date: 2020/3/18
  * Time: 13:59
  * @param $url
  * @param string $type
  * @return mixed
  */
 public static function wxFPost($url,$data,$useCert = false)
 {
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_HEADER, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, wxDataToXML($data));

     if ($useCert == true) {
         // 设置证书
         curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'pem');
         curl_setopt($ch, CURLOPT_SSLCERT, 'apiclient_cert.pem');
         curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'pem');
         curl_setopt($ch, CURLOPT_SSLKEY, 'apiclient_key.pem');
     }
     else
     {
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     }
     $xml = curl_exec($ch);
     curl_close($ch);
     return wxXMLToData($xml);
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值