将WordPress与PayPal IPN集成

时间:2016-02-25 14:01:37

标签: php wordpress paypal

我正在将一些自定义页面集成到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等,但似乎文件没有被调用。

之前有人试过类似的东西吗?你如何处理回发网址? 提前谢谢!

1 个答案:

答案 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...
}