public function post($xmlData){
$url = 'https://pay.***.com/pay/gateway'; //接收xml数据的文件
$header[] = "Content-type: text/xml";
//初始一个curl会话
$curl = curl_init();
//设置url
curl_setopt($curl, CURLOPT_URL,$url);
//设置发送方式:post
curl_setopt($curl, CURLOPT_POST, true);
//设置发送数据
curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlData);
//设置头部
curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
//TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
//执行cURL会话 ( 返回的数据为xml )
$return_xml = curl_exec($curl);
//关闭cURL资源,并且释放系统资源
curl_close($curl);
return $return_xml;
}
public function sign($params, $k)
{
$sign_str = '';
// 排序
ksort($params);
//签名处理
foreach ($params as $key => $val) {
if ($val == '' || $key == "sign") {
continue;
}
$sign_str .= $key . '=' . $val . '&';
}
$sign_str .= 'key=' . $k;
return strtoupper(md5($sign_str));
}
public function get_url(){
$param = I('post.');
if (IS_POST && $param['code'] == 103) {
$data['service']='pay.weixin.native.intl';
$data['mch_id']='157590000172';//商户号
$data['device_info']="测试";//设备信息
$data['out_trade_no']=date('YmdHis') . rand(1000, 9999) . rand(1000, 9999);//订单号
$data['body']=$param["subject"]; //商品名称
//$data['total_fee']=100;
$data['total_fee']=$param["total_fee"] * 100;//港币价格
$data['mch_create_ip']='168.0.0.1';//随便写
$data['notify_url']="http://www.baiud.com/pay/hai/notify";//回调地址
$data['nonce_str']=date("Ymdhis");//
$k='1471bc6d3955d6fc62dc90ae75e86a9';//支付秘钥
$sign=$this->sign($data,$k);
//添加数据库的操作
$item="<xml>
<service><![CDATA[%s]]></service>
<mch_id><![CDATA[%s]]></mch_id>
<device_info><![CDATA[%s]]></device_info>
<out_trade_no><![CDATA[%s]]></out_trade_no>
<body><![CDATA[%s]]></body>
<total_fee>%d</total_fee>
<mch_create_ip><![CDATA[%s]]></mch_create_ip>
<notify_url><![CDATA[%s]]></notify_url>
<nonce_str><![CDATA[%s]]></nonce_str>
<sign><![CDATA[%s]]></sign>
</xml>";
$item_str=sprintf($item,$data['service'],$data['mch_id'],$data['device_info'],$data['out_trade_no'],$data['body'],$data['total_fee'],$data['mch_create_ip'],$data['notify_url'],$data['nonce_str'],$sign);
$res=$this->post($item_str);
$postStr=simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA);