我正在将一些自定义页面集成到WordPress中。这些页面使用API链接到另一个外部应用程序。 我有这个链接到PayPal的部分,一旦收到来自PayPal的POST数据,就会运行一个文件。
基本上这是我的文件结构: -
wp-content/themes/myTheme/ipn
wp-content/themes/myTheme/ipn/ipnconfig.php
wp-content/themes/myTheme/ipn/ipn.php
付款成功后,我需要拨打ipn.php 因此我的$ notify_url是" ipn / ipn.php"或者应该是" ipn.php" ?我尝试了其他几种方法,比如放入完整路径,使用dirname等,但似乎文件没有被调用。
之前有人试过类似的东西吗?你如何处理回发网址? 提前谢谢!
答案 0 :(得分:1)
在使用IPN之前,您应该从paypal / paypal-sandbox
启用它转到个人资料 - >我的销售工具 - >即时付款通知 - >点击更新 - >打开它
还要输入通知网址(您的回调 - 监听网址,ipn.php)。
然后在你的ipn.php文件中捕获来自paypal的回调。
$ipn_post_data = $_POST;
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,
));
// Execute request and get response and status code
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
// Close connection
curl_close($request);
if($status == 200 && $response == 'VERIFIED')
{
// All good! Proceed...
}
else
{
// Not good. Ignore, or log for investigation...
}