/**
* 生成app支付订单
*
*@accesspublic
*@paramstring $total_amount
*@paramstring $out_trade_no
*@returnstring
*/
public functionbuild_order($total_amount,$out_trade_no,$body='支付')
{
$data=array();
$data['appid'] =$this->user_config['appid'];
$data['mch_id'] =$this->user_config['mch_id'];
$data['nonce_str'] = MD5(time().rand(10000,99999));
$data['body'] =$body;
$data['out_trade_no'] =$out_trade_no;
$data['total_fee'] =$total_amount;
$data['spbill_create_ip'] = getIP();
$data['notify_url'] =$this->user_config['notify_url'];
$data['trade_type'] ='APP';
ksort($data);
$data['sign'] = getSign($data,$this->user_config['api']);
$xml= arrayToXml($data);
$response= postXmlCurl($xml);
$res= xmlstr_to_array($response);
$prepay_id=$res['prepay_id'];
$payData= payData($prepay_id,$this->user_config);
return$payData;
}
functionpostXmlCurl($xml,$url='https://api.mch.weixin.qq.com/pay/unifiedorder',$second=30)
{
//初始化curl
$ch=curl_init();
//超时时间
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
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);
//返回结果
if($data)
{
curl_close($ch);
return$data;
}
else
{
$error=curl_errno($ch);
echo"curl出错,错误码:$error"."
";
echo"错误原因查询
";
curl_close($ch);
return false;
}
}