2013-08-06 78 views
0

我試圖執行流「設置網頁調用嵌入式支付流程使用燈箱」這裏描述https://developer.paypal.com/webapps/developer/docs/classic/adaptive-payments/integration-guide/APIntro/我如何跟蹤從PayKey請求到IPN響應的交易?

我能夠獲得初始paykey,我得到的迴應是這樣這樣的:

{u'responseEnvelope': {u'ack': u'Success', u'timestamp': u'2013-08-06T01:59:32.228-07:00', u'build': u'6941298', u'correlationId': u'3f9b3609b9069'}, u'paymentExecStatus': u'CREATED', u'payKey': u'AP-4C138527MX750433P'} 

在這一點上,我們是能夠顯示在我們的網站上「支付使用PayPal」按鈕,按照支付等....現在的問題是IPN通知。

我已經試過了IPN模擬器和它所發送的這些值(例如)POST:

Key: last_name - Value: Smith 
Key: txn_id - Value: 245929950 
Key: receiver_email - Value: [email protected] 
Key: payment_status - Value: Completed 
Key: tax - Value: 2.02 
Key: residence_country - Value: US 
Key: invoice - Value: abc1234 
Key: address_state - Value: CA 
Key: payer_status - Value: verified 
Key: txn_type - Value: web_accept 
Key: address_country - Value: United States 
Key: payment_date - Value: 01:43:47 6 Aug 2013 PDT 
Key: first_name - Value: John 
Key: item_name - Value: something 
Key: address_street - Value: 123, any street 
Key: mc_gross1 - Value: 12.34 
Key: custom - Value: xyz123 
Key: notify_version - Value: 2.1 
Key: address_name - Value: John Smith 
Key: test_ipn - Value: 1 
Key: item_number - Value: AK-1234 
Key: receiver_id - Value: [email protected] 
Key: business - Value: [email protected] 
Key: payer_id - Value: TESTBUYERID01 
Key: verify_sign - Value: AFcWxV21C7fd0v3bYYYRCpSSRl31A.8pFOgHmGMTg8Lj.JUvXyp3bu63 
Key: address_zip - Value: 95131 
Key: address_country_code - Value: US 
Key: address_city - Value: San Jose 
Key: address_status - Value: confirmed 
Key: mc_fee - Value: 0.44 
Key: mc_currency - Value: USD 
Key: shipping - Value: 3.04 
Key: payer_email - Value: [email protected] 
Key: payment_type - Value: echeck 
Key: mc_gross - Value: 12.34 
Key: quantity - Value: 1 

事實是,我們的服務器接受IPN的職位必須能夠接受任何數目的交易。所以,當我收到這樣的消息時,我怎麼知道哪一個與paykey有關?

1)我可以使用payer_email跟蹤付款情況,但如果付款人想要使用不同的PayPal帳戶登錄並付款,該怎麼辦?

2)如果來自同一PayPal賬戶的兩筆未付款項會發生什麼?

3)如果付款人不想創建PayPal賬戶並想用他的信用卡付款,該怎麼辦?

在這三種情況下,我將無法將收到的IPN消息連接到我的初始交易(即我使用paykey進行識別)。

它看起來像我失去了一些東西......任何人都可以幫我嗎?謝謝!

回答

2

如果您想在用戶從您的網站進入該網站時將自定義變量傳遞給Paypal,那麼在事務完成時將返回到IPN,您希望使用該按鈕中的custom字段。

<form name="_xclick" action="https://www.paypal.com/ca/cgi-bin/webscr" method="post"> 
<input type="hidden" name="cmd" value="_xclick"> 
<input type="hidden" name="custom" value="paykey:aBjKmNi223"> 
<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" border="0"  name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> 
</form> 

而且你的IPN的反應會是這樣......

Key: last_name - Value: Smith 
Key: txn_id - Value: 245929950 
Key: receiver_email - Value: [email protected] 
Key: custom - Value: paykey:aBjKmNi223 

注意這僅適用於野外工作稱爲custom。你不能只使用任何字段。如果您想傳遞多個對象,請在自定義字段中使用逗號分隔的字符串。

+0

我有一個疑問:如果我認爲事務已經開始,我在我的數據庫中插入一行...如果用戶只是重新加載頁面會發生什麼?一個新的paykey將被複制並插入到數據庫中,等待交易完成。用戶可以開始儘可能多的交易,我必須全部管理它們,因爲我不能提前知道他是否會取消它們。這些情況下的最佳做法是什麼? –

+0

是的,用戶可以通過一次又一次刷新頁面來創建無限購買實例。但是,如果你分配一個隨機生成的密鑰,這將只會成爲一個問題,如果* a)你用盡了數據庫空間,*或* b)你用完了隨機生成的密鑰*由於這些都不太可能,你好的去爲它。 在奇怪的情況下,空間是一個限制,你可以創建一個cronjob自動刪除超過30天前創建的條目。 –