直接上代碼:php
1 /** 2 * 以post方式提交xml到對應的接口url 3 * 4 * @param string $xml 須要post的xml數據 5 * @param string $url url 6 * @param bool $useCert 是否須要證書,默認不須要 7 * @param int $second url執行超時時間,默認30s 8 * @throws WxPayException 9 */ 10 private static function postXmlCurl($xml, $url, $useCert = false, $second = 30) 11 { 12 $ch = curl_init(); 13 //設置超時 14 curl_setopt($ch, CURLOPT_TIMEOUT, $second); 15 16 //若是有配置代理這裏就設置代理 17 if(WxPayConfig::CURL_PROXY_HOST != "0.0.0.0" 18 && WxPayConfig::CURL_PROXY_PORT != 0){ 19 curl_setopt($ch,CURLOPT_PROXY, WxPayConfig::CURL_PROXY_HOST); 20 curl_setopt($ch,CURLOPT_PROXYPORT, WxPayConfig::CURL_PROXY_PORT); 21 } 22 curl_setopt($ch,CURLOPT_URL, $url); 23 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE); 24 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//嚴格校驗 25 //設置header 26 curl_setopt($ch, CURLOPT_HEADER, FALSE); 27 //要求結果爲字符串且輸出到屏幕上 28 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 29 30 if($useCert == true){ 31 //設置證書 32 //使用證書:cert 與 key 分別屬於兩個.pem文件 33 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); 34 curl_setopt($ch,CURLOPT_SSLCERT, WxPayConfig::SSLCERT_PATH); 35 curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM'); 36 curl_setopt($ch,CURLOPT_SSLKEY, WxPayConfig::SSLKEY_PATH); 37 } 38 //post提交方式 39 curl_setopt($ch, CURLOPT_POST, TRUE); 40 curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 41 //運行curl 42 $data = curl_exec($ch); 43 //返回結果 44 if($data){ 45 curl_close($ch); 46 return $data; 47 } else { 48 $error = curl_errno($ch); 49 curl_close($ch); 50 throw new WxPayException("curl出錯,錯誤碼:$error"); 51 } 52 }
response.phpcurl
1 <?php 2 if(isset($_POST['name'])){ 3 if(!empty($_POST['name'])){ 4 echo '您好,',$_POST['name'].'!'; 5 } 6 } 7 ?>