2015-10-12 38 views
1

我已閱讀並閱讀了關於PayPal API的鏈接和文檔,但說實話,我很困惑我需要做什麼。PayPal API流程

我想設置一個簡單的API,在我的網站上的一個用戶點擊一個按鈕,將他帶到PayPal付款。在他付款後,我所需要的就是PayPal API使用確認更新我的數據庫中的記錄。

到目前爲止,該過程完全以單向方式工作。我使用這個代碼來獲取用戶,使他們的付款:用戶完成交易

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> 
<input type="hidden" name="cmd" value="_xclick"> 
<input type="hidden" name="business" value="[email protected]"> 
<input type="hidden" name="currency_code" value="USD"> 
<input type="hidden" name="item_name" value="Gift Certificate"> 
<input type="hidden" name="item_number" value="RI001CI3481"> 
<input type="hidden" name="amount" value="313"> 
<input type="hidden" name="return" value="http://mywebsite.com/paypal/thankyou"> 
<input type="submit" value="PayPal"> 
</form> 

後,他們回到自己的「迴歸」頁面。

交易完成後,我收到一封電子郵件。這就是我現在的付款方式。然後我去PayPal,確認付款,並更新我的數據庫記錄以標記交易完成。

現在,如果PayPal在支付完成後自動更新數據庫,我該怎麼做?如果你能指出我簡單的遵循文件或樣本,那就太好了。正如我所說,我已經在網上閱讀了一些可用的文檔,但對於像我這樣的人來說,這有點令人困惑。

感謝, 曼尼

回答

1

沒有使用API​​什麼你在這裏展示。 PayPal標準只是用PayPal設置付款的基本HTML表單方法。聽起來這個部分已經在爲你工作了,所以你很好。

要更新數據庫,您希望使用Instant Payment Notification (IPN)。它在技術上仍然不是一個API,但它是一個推送服務,它將有關任何事件的事務數據POST到您的PayPal帳戶,並將其發送到您在服務器上設置的偵聽器腳本。

在這個腳本中,你可以處理你需要的數據。更新您的數據庫,生成自定義電子郵件通知,打第三方網絡服務等。

在GitHub/Packagist上有一些可用於PHP的良好IPN模板。 PayPal還提供a very basic starter template for IPN

+0

謝謝!我沒有提及的(因爲我是一個白癡)是我在Wordpress應用程序中這樣做。使用您提供的一些信息讓我可以通過WP插件來實現IPN。它現在正在按照我的想法工作。謝謝! – mannyotr

+0

我希望我知道這一點。我可以指出你對我的免費[PayPal IPN for WordPress](https://wordpress.org/plugins/paypal-ipn/)插件,並且可能爲你節省了不少時間。您可能仍然希望看看它,這取決於您對自己插件的開發有多遠。它有很多鉤子,可以讓您快速輕鬆地根據IPN交易類型或付款狀態觸發您自己的功能。 –

1

我認爲IPN是一個答案,但如果您的服務器或PayPal的服務器出現問題,它很容易出現問題並可能失敗。許多使用IPN的人只有一臺服務器,並在深夜進行維護,IPN可能會嘗試通知,但由於服務器因維護而關閉,因此會失敗。 IPN只會默默地失敗。更好的選擇是使用Express Checkout之類的API,通過SetExpressCheckout設置頁面的外觀和設置txn細節等,然後將客戶帶到PayPal頁面查看,然後將其返回給您現場。此時,您運行DoExpressCheckoutPayment完成交易,然後當您的響應包含「ACK = Success」時,您可以調用GetExpressCheckoutDetails以獲取比您在IPN上看到的更多細節,而不必擔心如果您沒有收到PayPal的回覆與IPN一樣。您可以獲得與任何API調用一樣的請求/響應,並且您可以記錄您的響應,以便能夠查看出現錯誤的時間以及獲取交易的詳細信息。通常情況下,解釋EC甚至PayPal文檔的人顯示調用setEC,然後getEc,然後doEC,但我通常會調用set,do,然後在txn成功後再獲取。我確定有些情況下,有人會需要/想要撥打電話,得到,但是對於IPN,我們只關心一旦txn成功。此外,IPN不會發送,除非有txn。您可以設置自己的代碼,以便在發生錯誤時採取相應的行動,比如當您拒絕接受拒絕卡或類似消息時發生錯誤。您可以登錄錯誤,請發送電子郵件/短信,登錄到數據庫表等

這裏是整合快速結賬的文檔: https://developer.paypal.com/docs/classic/products/express-checkout/ 這裏鏈接萬噸,因爲歐盟可用於訂單/ auth /中捕獲或簡單的銷售或訂閱等

下面是參數SetExpressCheckout名單: https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/

下面是參數DoExpressCheckoutPayment名單: https://developer.paypal.com/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/

下面是參數GetExpressCheckoutDetails名單: https://developer.paypal.com/docs/classic/api/merchant/GetExpressCheckoutDetails_API_Operation_NVP/