PHP 企业付款到微信零钱

 

 /**
     * [企业付款到零钱]
     * @param  [type] $amount     [发送的金额(分)目前发送金额不能少于1元]
     * @param  [type] $re_openid  [发送人的 openid]
     * @param  string $desc       [企业付款描述信息 (必填)]
     * @param  string $check_name [收款用户姓名 (选填)]
     * @return [type]             [description]
     * @time   2018/
     */
    public function Paymentmoneysmagr(){
        $money = '1';//提现金额
     
        $total_amount = (100) * $money; //以分为单位
        $data=array(
            'mch_appid'=>'',//商户账号appid
            'mchid'=> '',//商户号
            'nonce_str'=>createNoncestr(),//随机字符串
            'partner_trade_no'=>date('YmdHis').rand(1000, 9999),//商户订单号
            'openid'=> '',//用户openid
            'check_name'=>'NO_CHECK',//校验用户姓名选项,
            're_user_name'=> '王',//收款用户姓名
            'amount'=>$total_amount,//金额
            'desc'=> '描述',//企业付款描述信息
            'spbill_create_ip'=> '127.0.0.1',//Ip地址
        );

        //生成签名算法
        $secrect_key='';///这个就是个API密码。MD5 32位。
        $data=array_filter($data);
        ksort($data);
        $str='';
        foreach($data as $k=>$v) {
            $str.=$k.'='.$v.'&';
        }
        $str.='key='.$secrect_key;
        //最后MD5转大写
        $data['sign']=strtoupper(md5($str));
        //生成签名算法
        $xml=arraytoxml($data);
        $url='https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //调用接口
        $res=curl_post_ssl($url,$xml);
      
        //返回来的结果是xml,最后转换成数组
        $return=xmltoarray($res);
        //如果返回来SUCCESS,则发生成功,处理自己的逻辑
        echo $return;
    }
/**
 * [curl_post_ssl 发送curl_post数据]
 * @param  [type]  $url     [发送地址]
 * @param  [type]  $xmldata [发送文件格式]
 * @param  [type]  $second [设置执行最长秒数]
 * @param  [type]  $aHeader [设置头部]
 * @return [type]           [description]
 */
function curl_post_ssl($url, $postData)
{
    if (is_array($postData)) {
        $postData = http_build_query($postData);
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数
    //https请求 不验证证书和host
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    //第一种方法,cert 与 key 分别属于两个.pem文件
    //默认格式为PEM,可以注释
    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/apiclient_cert.pem');
    //默认格式为PEM,可以注释
    curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/apiclient_key.pem');
    $data = curl_exec($ch);
//    $error = curl_error($ch);
    curl_close($ch);
    return $data;
}
/**
 * [createNoncestr 生成随机字符串]
 * @param  integer $length [长度]
 * @return [type]          [字母大小写加数字]
 */
function createNoncestr($length =32){
    $nonce = substr(md5(time()), 0, $length);//md5加密,time()当前时间戳
    $nonce_str = strtoupper($nonce);
    return  $nonce_str;
}
/**
 * [arraytoxml 将数组转换成xml格式(简单方法):]
 * @param  [type] $data [数组]
 * @return [type]       [array 转 xml]
 */
function arraytoxml($data){
    $str='<xml>';
    foreach($data as $k=>$v) {
        $str.='<'.$k.'>'.$v.'</'.$k.'>';
    }
    $str.='</xml>';
    return $str;
}
/**
 * [xmltoarray xml格式转换为数组]
 * @param  [type] $xml [xml]
 * @return [type]      [xml 转化为array]
 */
function xmltoarray($xml) {
    //禁止引用外部xml实体
    libxml_disable_entity_loader(true);
    $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
    $val = json_decode(json_encode($xmlstring),true);
    return $val;
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值