【发布时间】:2020-09-27 18:29:57
【问题描述】:
我在将 OpenCart 集成到 PayPal API 时遇到了一个奇怪的问题。我正在通过 OpenCart 使用与 PayPal Pro 脚本的直接集成,我收到错误 28,这是我的服务器端超时,但在 paypal 仪表板中,它显示授权成功。我的服务器似乎无法从 PayPal 正确获得回复。
我尝试过的步骤:
- Telnet 到 api-3t.paypal.com 端口 443,能够访问主机,但没有验证或运行示例查询
- 将 PHP 版本更新到 7.4
- 从 CURL 打印所有调试信息
这是奇怪的部分,但是,CURL Info 告诉我,我实际上以某种方式从服务器获得了回复,并且它正在解析 url。即使值存在,CURL 也没有返回错误消息。但有些东西不能正常工作。
2020-06-08 17:18:10 - CURL INFO: Array
(
[url] => https://api-3t.paypal.com/nvp
[content_type] => text/plain; charset=utf-8
[http_code] => 200
[header_size] => 497
[request_size] => 822
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 2.919995
[namelookup_time] => 0.001446
[connect_time] => 0.057641
[pretransfer_time] => 0.190467
[size_upload] => 692
[size_download] => 191
[speed_download] => 65
[speed_upload] => 237
[download_content_length] => 191
[upload_content_length] => 692
[starttransfer_time] => 2.919881
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 173.0.88.69
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => [redacted]
[local_port] => 41214
[http_version] => 2
[protocol] => 2
[ssl_verifyresult] => 0
[scheme] => HTTPS
[appconnect_time_us] => 190395
[connect_time_us] => 57641
[namelookup_time_us] => 1446
[pretransfer_time_us] => 190467
[redirect_time_us] => 0
[starttransfer_time_us] => 2919881
[total_time_us] => 2919995
)
2020-06-08 17:18:10 - CURL Error: 28
2020-06-08 17:18:10 - CURL Error:
选择驱动脚本来获取此信息(curl 已正确初始化并在上面填充了标题):
if (!$this->config->get('pp_pro_test')) {
$curl = curl_init('https://api-3t.paypal.com/nvp');
} else {
$curl = curl_init('https://api-3t.sandbox.paypal.com/nvp');
}
curl_setopt($curl, CURLOPT_PORT, 443);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_FORBID_REUSE, 1);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 100);
curl_setopt($curl, CURLOPT_TIMEOUT, 30000);
$response = curl_exec($curl);
if (curl_errno($curl)) {
$info = curl_getinfo($curl);
$this->log->write("CURL INFO: " . print_r($info,1));
$this->log->write("CURL Error: " . curl_errno($curl));
$this->log->write("CURL Error: " . curl_error($curl));
$this->log->write("Request: " . print_r($request,1));
$this->log->write("Response: " . var_dump($response,1));
}
curl_close($curl);
$response_info = array();
parse_str($response, $response_info);
$json = array();
if (($response_info['ACK'] == 'Success') || ($response_info['ACK'] == 'SuccessWithWarning')) {
对此的任何帮助将不胜感激。太感谢了。
【问题讨论】:
标签: php api curl paypal opencart