2016-02-25 144 views
0

我將一些自定義頁面整合到WordPress中。這些頁面鏈接到另一個使用API​​的外部應用程序。 我有這部分鏈接到貝寶,並從PayPal收到POST數據將運行一個文件。將WordPress與PayPal IPN整合

基本上這是我的文件結構: -

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

爲什麼不把這些IPN文件放到你網站的根目錄下?他們不應該需要WordPress的運行 – Machavity

+0

簡單的教程來整合IPN與你的WordPress網站。 http://www.kvcodes.com/2016/08/paypal-ipn-listener-wordpress-without-using-plugin/ – Kvvaradha

回答

1

使用IPN之前,您應該來自PayPal /貝寶沙箱啓用

去簡介 - >我的銷售工具 - >即時付款通知 - >點擊最新情況:>開啓

還可以鍵入通知URL(您的回調監聽器url,ipn.php)。

然後在你的ipn.php文件中捕獲貝寶的回調。

$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... 
} 
+0

感謝您的回覆。如果我不使用WordPress,則IPN會成功調用。只是在我整合到WordPress之後,這個文件並沒有被調用 – Sylph

+1

從來沒有嘗試過,但你可以嘗試安裝paypal ipn插件的wordpress https://wordpress.org/plugins/paypal-ipn/ – Elad

+0

是的,如果使用WordPress,我強烈推薦@Elad提到的插件。 –