PHP 微信发送红包

public function hbPay($open_id,$total_amount,$order_no="",$wishing="分享有礼")
{
    $name = "红包名称";

    $appid = '';
    $mch_id = '';
    $nonce_str = getRandom(32);
    if($order_no){
        $mch_billno = $order_no;
    }else{
        $mch_billno = makeOrderNo();
    }
    $key = '';

    $arr = [
        'wxappid'    => $app_id,
        'mch_id'     => $mch_id,
        'nonce_str'  => $nonce_str,
        'mch_billno' => $mch_billno,
        'send_name'  => $name,
        're_openid'  => $open_id,
        'total_amount'=>$total_amount*100,
        'total_num'=>1,
        'wishing'=>$wishing,
        'client_ip'=>request()->ip(),
        'act_name'=>'红包',
        'remark'=>'分润'
    ];


    ksort($arr);

    $sign_str = "";
    foreach ($arr as $k => $v) {
        $sign_str .= $k.'='.$v.'&';
    }

    $sign_str = rtrim($sign_str, '&');
    $sign_str = $sign_str.'&key='.$key;
    $sign_str = strtoupper(md5($sign_str));

    $arr['sign'] = $sign_str;
    $xmlData = '<?xml version="1.0" encoding="UTF-8"?><xml>';
    foreach ($arr as $key => $val) {
        $xmlData .= "<".$key.">$val</".$key.">";
    }
    $xmlData .= "</xml>";

    $url
        = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack'; //接收xml数据的文件
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    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_SSLCERTTYPE, 'PEM');
    $cert_pem = '';
    $key_pem = '';
    curl_setopt(
        $ch,
        CURLOPT_SSLCERT,
        $cert_pem
    );
    curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
    curl_setopt(
        $ch,
        CURLOPT_SSLKEY,
        $key_pem
    );
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
    $result = curl_exec($ch);
    curl_close($ch);
    return $this->toXml($result);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值