2017-10-12 98 views
0

我剛剛試圖通過使用描述爲here的客戶端REST集成來加快PayPal Express Checkout(即checkout.js)的速度。我看到付款完成後,我的onAuthorize函數會與「付款」對象一起被調用。如何驗證服務器上的PayPal Express Checkout詳細信息?

我找不到這個對象上的任何文件,但(至少目前)一些戳它揭示了以下屬性:

  • paymentToken
  • payerID
  • paymentID
  • 意圖
  • returnUrl

現在我需要將用戶重定向到我網站上的下一步,在那裏顯示收據確認他們已付款等。我想我會將上述數據發送到服務器,但由於該步驟可能很容易被惡意用戶欺騙,所以我會需要在PHP代碼,服務器端驗證這些細節。

我該怎麼做?

回答

2

你可以讓你的服務器端GET調用/v1/payments/payment/PAY-XXXXXXpaymentIDpayerID得到付款細節,並確認這些細節那裏。

https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/show-payment-details/

https://developer.paypal.com/docs/api/overview/#make-your-first-call一些基礎知識從你的服務器

+0

聽起來就像我需要的。只要有機會嘗試一下,我會將其標記爲公認的答案。 –

+0

確認,作品像魅力!感謝您指點我正確的方向。 –

0

假設你正在使用PayPal Encrypted Buttons,你實際上並不需要通過驗證服務器端發送的數量。儘管用戶確實可以操縱$_POST數據,但PayPal已經涵蓋了您,並且不允許交易完成。這是因爲PayPal加密按鈕是通過您的變量生成的,例如ID內置的價格。如果變量與用於創建按鈕的變量不一致,則交易被拒絕。

或者,如果您只是使用自己的代碼發出請求,則可以使用貝寶的Instant Payment Notification來確保付款安全。同樣,這允許將的任何$_POST數據通過付款發送。之後,PayPal會打電話給您的IPN頁面以驗證參數是否正確。這表現在以下工作流程:

IPN Flow

當您的IPN溝通,如果貝寶認爲,該值不匹配,訂單將被取消。假設這些值匹配,您可以安全地將它們重定向到您的確認頁面。

希望這會有所幫助! :)

+0

調用REST API我覺得我一直不清楚。我沒有使用「經典」API;我使用checkout.js(版本4)提供的客戶端集成_new_Express Checkout,如下所述:https://developer.paypal。com/docs/integration/direct/express-checkout/integration-jsv4/client-side-REST-integration /除非我比我想象的更困惑,否則我不認爲上述建議適用於這種情況。 –

相關問題