微信文档: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}¬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;
$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;
}