tp5实现企业向个人付钱(分享奖励为例)

本人是在支付成功后的nofity.php进行操作的:public下的notify.php中

 require_once "cash.php";
                    $obj = array();
                    $obj['openid'] = “”;   //奖励人的openid
                    $obj['amount'] = $goods_data['xia_dan_money'] * 100;
                    $obj['desc'] = "分享奖励";
                    $obj['mch_appid'] = “”;
                    $obj['mchid'] = “”;
                    $obj['partner_trade_no'] = $setting_data['mchid'] . date('YmdHis') . rand(1000, 9999);
                    $obj['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];
                    $obj['check_name'] = "NO_CHECK";
                    $obj['re_user_name'] = "123456";
                    $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
                    $cash = new cash();
                    $res = $cash->payToUser($obj['openid'], $obj['desc'], $obj['amount'],$setting_data['appid'],$setting_data['mchid']);
                    libxml_disable_entity_loader(true);
                    $result = json_decode(json_encode(simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
                    if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
                        echo success;
                    }
                }

在引入的cash.php中:

<?php
/*
微信企业 支付到个人
*/
class cash
{

    /**
     *  array转xml
     */
    public function arrayToXml($arr)
    {
        $xml = "<xml>";
        foreach ($arr as $key => $val) {
            if (is_numeric($val)) {
                $xml .= "<" . $key . ">" . $val . "</" . $key . ">";
            } else
                $xml .= "<" . $key . "><![CDATA[" . $val . "]]></" . $key . ">";
        }
        $xml .= "</xml>";
        return $xml;
    }
    //使用证书,以post方式提交xml到对应的接口url

    /**
     *   作用:使用证书,以post方式提交xml到对应的接口url
     */
    function curl_post_ssl($url, $vars, $second=30)
    {
        $ch = curl_init();
        //超时时间
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);

        //以下两种方式需选择一种
        /******* 此处必须为文件服务器根目录绝对路径 不可使用变量代替*********/
        curl_setopt($ch,CURLOPT_SSLCERT,'./cert/apiclient_cert.pem'); //这个是证书的位置
        curl_setopt($ch,CURLOPT_SSLKEY,'./cert/apiclient_key.pem'); //这个也是证书的位置


        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);

        $data = curl_exec($ch);


        if($data){
            curl_close($ch);
            return $data;
        }
        else {
            $error = curl_errno($ch);
            echo "call faild, errorCode:$error\n";
            curl_close($ch);
            return false;
        }
    }

    //企业向个人付款
    public function payToUser($openid,$desc='申请提现',$amount,$setopenod,$setmch)
    {
        //微信付款到个人的接口
        $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';

        $params["mch_appid"]        = $setopenod ;   //公众账号appid
        $params["mchid"]            = $setmch;   //商户号 微信支付平台账号
        $params["nonce_str"]        = 'htds'.mt_rand(100,999);   //随机字符串
        $params["partner_trade_no"] = mt_rand(10000000,99999999);           //商户订单号
        $params["amount"]           = $amount;          //金额
        $params["desc"]             = $desc;            //企业付款描述
        $params["openid"]           = $openid;          //用户openid
        $params["check_name"]       = 'NO_CHECK';       //不检验用户姓名
        $params['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'];   //获取IP
        $params['key'] = config('wechat.mch.key');   //商户号的key






        //生成签名(签名算法后面详细介绍)
        $str = 'amount='.$params["amount"].'&check_name='.$params["check_name"].'&desc='.$params["desc"].'&mch_appid='.$params["mch_appid"].'&mchid='.$params["mchid"].'&nonce_str='.$params["nonce_str"].'&openid='.$params["openid"].'&partner_trade_no='.$params["partner_trade_no"].'&spbill_create_ip='.$params['spbill_create_ip'].'&key='.$params['key'];
        //md5加密 转换成大写
        $sign = strtoupper(md5($str));
        $params["sign"] = $sign;//签名

        $xml = $this->arrayToXml($params);

        $result = $this->curl_post_ssl($url, $xml);

        return $result;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值