SAE에서 알리페이의 "발송 확인"인터페이스를 지원하여 "protocol error"를 완벽하게 해결
나중에 알리페이 인터페이스의'alipay_core.function.php'의 getHttpResponse는 fsockopen+ssl을 사용하여 원격 캡처를 했지만 SAE는 SSL을 열지 않았습니다.그러나 알리페이 인터페이스의 주석도 "이 함수의 기능은curl로 실현하고 대체할 수 있다.curl은 자체적으로 작성해야 한다"고 썼다.
알리페이 인터페이스의 원래 getHttpResponse 방법은 다음과 같습니다.
/**
*
* : curl 。curl 。
* $url URL
* @param $input_charset 。 :
* @param $time_out 。 :60
* return
*/
function getHttpResponse($url, $input_charset = '', $time_out = "60") {
$urlarr = parse_url($url);
$errno = "";
$errstr = "";
$transports = "";
$responseText = "";
if($urlarr["scheme"] == "https") {
$transports = "ssl://";
$urlarr["port"] = "443";
} else {
$transports = "tcp://";
$urlarr["port"] = "80";
}
$fp=@fsockopen($transports . $urlarr['host'],$urlarr['port'],$errno,$errstr,$time_out);
if(!$fp) {
die("ERROR: $errno - $errstr<br />
");
} else {
if (trim($input_charset) == '') {
fputs($fp, "POST ".$urlarr["path"]." HTTP/1.1\r
");
}
else {
fputs($fp, "POST ".$urlarr["path"].'?_input_charset='.$input_charset." HTTP/1.1\r
");
}
fputs($fp, "Host: ".$urlarr["host"]."\r
");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r
");
fputs($fp, "Content-length: ".strlen($urlarr["query"])."\r
");
fputs($fp, "Connection: close\r
\r
");
fputs($fp, $urlarr["query"] . "\r
\r
");
while(!feof($fp)) {
$responseText .= @fgets($fp, 1024);
}
fclose($fp);
$responseText = trim(stristr($responseText,"\r
\r
"),"\r
");
return $responseText;
}
}
이제 이 방법을 다음과 같이 수정합니다.
/**
*
* : curl 。curl 。
* $url URL
* @param $input_charset 。 :
* @param $time_out 。 :60
* return
*/
function getHttpResponse($url, $input_charset = '', $time_out = "60") {
/* SAE fsockopen + ssl CURL */
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $time_out);
$responseText = curl_exec($ch);
curl_close($ch);
return $responseText;
}
이렇게 하면'ERROR:501-protocol error'문제를 완벽하게 해결할 수 있다.알리페이 인터페이스에서 제공하는 데모를 사용하여 확인 배송을 테스트했는데 과연 성공했습니다.마지막으로 SAE의 문봉이의 따뜻한 도움에 감사드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Nginx를 사용하여 도메인을 포트 번호로 리디렉션하고 SSL을 설정하는 방법은 무엇인가요?nano 또는 vim에서 이 파일 열기/etc/nginx/nginx.conf nginx.conf를 업데이트한 후 이 명령을 적용합니다. nginx.conf 테스트sudo nginx -tnginx 서비스 다시 시작su...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.