zoukankan      html  css  js  c++  java
  • 微信服务商分账功能开发(PHP)

    微信服务商分账功能开发(PHP)

    博客说明

    文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

    设置分账参数

    在调用支付的时候设置参数

    image-20200809140655674

    添加分账参数

    image-20200809140739741

    在JDK中添加get,set方法

    //分账
        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);
        }
    

    添加分账接收方

    核心代码

    image-20200809155717580

    部分参数写在SDK的config文件中

    <?php
    /**
     * @name ProfitSharing.php
     * @author tanglei
     * @date 2020/8/9
     */
    
    namespace appapiservice;
    
    use thinkfacadeEnv;
    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

    public function MakeSignH()
        {
            //签名步骤一:按字典序排序参数
            ksort($this->values);
            $string = $this->ToUrlParams();
            //签名步骤二:在string后加入KEY
    		$string = $string . "&key=".WxPayConfig::KEY;
            //签名
            $string = hash_hmac("sha256",$string,WxPayConfig::KEY);
            //签名步骤四:所有字符转为大写
            $result = strtoupper($string);
            return $result;
        }
    

    在Api文件中添加一个方法

    public static function profitsharingAddReceiver($inputObj, $timeOut = 6)
    {
        $url = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
    
        $inputObj->SetAppid(WxPayConfig::APPID);//公众账号ID
        $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;
    }
    
    测试

    image-20200809161118770

    分账

    image-20200809173030172

    核心代码

    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文件中添加一个方法

    public static function profitsharing($inputObj, $timeOut = 6)
        {
            $url = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing";
    
            $inputObj->SetAppid(WxPayConfig::APPID);//公众账号ID
            $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);
            //return $response;
            $result = WxPayResults::Init($response);
            self::reportCostTime($url, $startTimeStamp, $result);//上报请求花费时间
            return $result;
        }
    
    

    测试

    image-20200809172857613

    感谢

    微信开放平台

    万能的网络

    以及勤劳的自己
    关注公众号: 归子莫,获取更多的资料,还有更长的学习计划

  • 相关阅读:
    CentOS7下搭建zabbix监控(五)——Web端配置自动发现并注册
    CentOS7下搭建zabbix监控(四)——Zabbix报警设置
    CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置
    CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置
    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置
    CentOS7下配置Tomcat以APR模式+Tomcat Native运行
    Webbrowser控件判断网页加载完毕的简单方法 (转)
    反射的奥妙 (转)
    .net 浏览器请求过程(图)
    .net反射详解(转)
  • 原文地址:https://www.cnblogs.com/guizimo/p/13463637.html
Copyright © 2011-2022 走看看