微信文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
/**
* 微信PC端支付
*/
public function pcwxpay($order_id){
header('content-type:text/html;charset=utf-8');
$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 = "*********"; #商户号
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;//总金额
//$total_fee = 1;
$spbill_create_ip = $_SERVER['REMOTE_ADDR'];
$www_url = $_SERVER['HTTP_HOST'];
$notify_url = "http://".$www_url."/**************"; //接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
$trade_type = 'NATIVE'; //支付类型
$stringA = "appid={$appid}&body={$body}&mch_id={$mch_id}&nonce_str={$nonce_str}¬ify_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;
#$scene_info = '{"h5_info": {"type":"Wap","wap_url": "**********","wap_name": "知会教育"}}';
$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);
#dump($dataxml);die;
#注意:code_url该参数应生成为二维码,然后微信扫码支付,简单测试,微信中直接访问该链接安卓不可以,ios可以
$this->success("success",$dataxml['code_url']);
}
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;
}