APP微信支付

微信文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

/**
 * 掉起微信
 */
public function wxapi($order_id){
    $m_order = Db::name("order");

    $order_map['id'] = $order_id;
    $order_data = $m_order->where($order_map)->find();
    $money = $order_data['money'];

    $appid = "**********";   #微信开放平台中应用appid
    $key = "****************************";        #商户号商户key
    $mch_id = "********";    #商户id

    if($order_data['status'] == 1){
        $body='购买课程';
    }elseif($order_data['status'] == 2){
        $body='购买课测评';
    }elseif($order_data['status'] == 3){
        $body='购买课咨询';
    }elseif($order_data['status'] == 4){
        $body='购买会员';
    }elseif($order_data['status'] == 5){
        $body='充值';
    }

    $nonce_str = strtoupper(md5(time()));
    $out_trade_no = $order_data['order'];
    $total_fee = $money * 100;//总金额
    $spbill_create_ip = $_SERVER['REMOTE_ADDR'];
    $www_url = $_SERVER['HTTP_HOST'];
    
    $notify_url = "http://".$www_url."/*************"; //接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
    $trade_type = 'APP';//支付类型
    $stringA = "appid={$appid}&body={$body}&mch_id={$mch_id}&nonce_str={$nonce_str}&notify_url={$notify_url}&out_trade_no={$out_trade_no}&spbill_create_ip={$spbill_create_ip}&total_fee={$total_fee}&trade_type={$trade_type}";
    $stringSignTemp = $stringA."&key=".$key;

    $sign=strtoupper(md5($stringSignTemp));
    $postData =
        "<xml>
    <appid>{$appid}</appid>
    <body>{$body}</body>
    <mch_id>{$mch_id}</mch_id>
    <nonce_str>{$nonce_str}</nonce_str>
    <notify_url>{$notify_url}</notify_url>
    <out_trade_no>{$out_trade_no}</out_trade_no>
    <spbill_create_ip>{$spbill_create_ip}</spbill_create_ip>
    <total_fee>{$total_fee}</total_fee>
    <trade_type>{$trade_type}</trade_type>
    <sign>{$sign}</sign>
    </xml>";
    //dump($postData);
    $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
    $dataxml = postXmlCurl($url,$postData);
    if($dataxml['return_code'] ==  'SUCCESS'){
        if($dataxml){
            $new['partnerid'] = $dataxml['mch_id'];
            $new['appid'] = $dataxml['appid'];
            $new['package'] = "Sign=WXPay";
            $new['timestamp'] = (string)time();
            $new['prepayid'] = $dataxml['prepay_id'];
            $new['noncestr'] = $dataxml['nonce_str'];

            ksort($new);
            $str = "";
            foreach($new as $k=>$v){
                $str .= $k."=".$v."&";
            }
            $str .= "key=".$key;
            $new['sign'] = md5($str);
            $new['order_id'] = $order_data['order'];
            $this->success("success",$new);
        }
    }
}

function postXmlCurl($url,$xml)
{

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验
    //设置header
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    //要求结果为字符串且输出到屏幕上
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    //post提交方式
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    //运行curl
    $data = curl_exec($ch);
    $objectxml = (array)simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA);
    //         $data = $this->xml_to_json($data);
    return $objectxml;
    //         dump($objectxml);die;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值