paypal 开发者网站的 ipn.php 示例代码中以下两行的目的是什么?
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
当我测试$response
and$status
时,@status
给了我价值0
并且$response
没有价值。
这是我在执行上述两行之前的所有代码:
<?php
// Does this code actually run?
error_log("yes");
// Capture the post
$ipn_post_data = $_POST;
// Choose url
if(array_key_exists('test_ipn', $ipn_post_data) && 1 === (int) $ipn_post_data['test_ipn'])
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
else
$url = 'https://www.paypal.com/cgi-bin/webscr';
// Set up request to PayPal
$request = curl_init();
curl_setopt_array($request, array
(
CURLOPT_URL => $url,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => http_build_query(array('cmd' => '_notify-validate') + $ipn_post_data),
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_CAINFO => 'cacert.pem',
));
// Execute request and get response and status code
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
我可以yes
在 apache 错误日志中看到 a,所以我知道当 paypal 将 ipn 数据返回到我的测试服务器时,这个文件会被执行。
但是,当我检查$payment_status
从贝宝返回时,它总是有效,即当付款正常时,$payment_status
是Complete
,当它处于待处理状态时,$payment_status
贝宝返回到我的服务器Pending
等等。所以代码有效,我只是不明白为什么$response
and$status
被使用,因为它们是空白的。