2012-01-24 28 views
4

我試圖使用新的Paypal API(自適應付款)實現付款系統。PayKey使用貝寶自適應付款的工作流程

到目前爲止,我有這樣的工作流程:

  • 請求發送到貝寶:AdaptivePayments/Pay
  • 此創建付款請求,並返回一個payKey是有效的3小時(source
  • 現在,我等待貝寶通過IPN向我發送請求。當它會,我會得到它的pay_key
  • 使用這個pay_key,我會打電話AdaptivePayments/PaymentDetails知道付款的狀態。

但是我想知道,如果超過3小時,該怎麼辦? (如在退款?)

那麼肯定的方法是什麼?

感謝您的幫助!

回答

10

好吧,我會在那個問題上回答我自己,然後讀一下。

而不是使用調用AdaptivePayments/Pay時給定的payKey,而其他解決方案是使用trackingId。

方法如下:

第一步,創建一個AdaptivePayments/Pay並指定trackingId(必須是唯一的):

{ 
    "actionType":"PAY", 
    "currencyCode":"USD", 
    "receiverList":{"receiver":[{"amount":"1.00","email":"[email protected]"}]}, 
    "returnUrl":"http://apigee.com/console/-1/handlePaypalReturn", 
    "cancelUrl":"http://apigee.com/console/-1/handlePaypalCancel?", 
    "trackingId":"abcde-12345-unique-of-course", 
    "ipnNotificationUrl":"http://apigee.com/console/-1/ipn", 
    "requestEnvelope":{"errorLanguage":"en_US", "detailLevel":"ReturnAll"} 
} 

對此,你將有你重定向payKey您買方爲了做付款。

然後,對於此付款的整個演變,您將被通知到您的IPN網址(這裏,「http://apigee.com/console/-1/ipn」)。

當您在此地址收到(POST)請求時,檢查paypal的有效性,您將在參數中獲得trackingId。檢查這個trackingId存在,然後問AdaptivePayments/PaymentDetails與trackingId這樣的:

{ 
"trackingId":"{put here}", 
"requestEnvelope":{"errorLanguage":"en_US", "detailLevel":"ReturnAll"} 
} 

,你將有回報付款的完整的相關詳細情況。

現在,你做的工作,以更新數據庫,打電話給你的買家,等等等等:)

什麼妄作:

+2

不錯的一個! Paypal文檔太複雜了,很難理解這個過程。 –