php之curl提交xml数据

  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);


猜你喜欢

转载自blog.csdn.net/wyj1122/article/details/80345651