我做的事情是這樣的使用發票字段。這是一個您可以發送PayPal的領域,他們會在回覆中將其發回。這是我如何識別從PayPal返回的交易。
在我的情況下,我不處理PDT和IPN消息。我只處理那個首先擊中我的人。當第二條消息(PDT或IPN)到達時,我檢查我是否已經處理了該事務,然後我放棄它。
此外,請不要忘記,您需要驗證消息來自PayPal。一旦獲得PDT或IPN消息,您需要使用唯一的Auth_id和他們在原始消息中發送的tx令牌回發給PayPal。您不應該依賴原始郵件中的任何字段。
一旦貝寶收到您的確認請求,它會向您發送第二封包含交易明細的信息。這是你應該依賴的一個。
對於同一事務處理PDT和IPN消息,我看不到任何好處。話雖如此,我確實鼓勵你們實施這兩者,因爲他們中的任何一個都不能保證達到你。
編輯,包括如何將發票傳遞給貝寶
要通過發票到PayPal,只需創建一個領域,如:
<input type="hidden" name="invoice" value=$uniquevaluecreatedbyyourapplication>
的唯一ID可能是你的用戶ID 。
職,貝寶將會像
paypal/or/sandbox/address?all the other fields&invoice=123456
支付寶會在PDT和IPN消息發回的發票。
編輯 - 非唯一發票ID號
我做了進一步的研究,你可以配置貝寶接受多個交易爲同一發票ID或接受每張發票ID只有一次交易。請參閱下面的信息直接從PayPal的網站:
阻止意外付款
您可以選擇是否接受用相同的發票編號或 支付阻止付款時已經使用的發票編號。
當您收到來自買家的付款時,您可以包含可選的 發票ID字段以跟蹤付款;買家不會看到這個ID。 A 買方的發票ID必須對每筆交易都是唯一的。如果PayPal 收到付款時使用的付款ID已用於其他付款 ,PayPal將不接受該交易。在https://www.paypal.com
登錄到您的PayPal賬戶:
要設置選項阻止這種類型的付款。
我的賬戶概覽頁面打開。
單擊配置文件子選項卡。
打開配置文件摘要頁面。
在「銷售首選項」列中,單擊付款接收 首選項鍊接。
打開「付款接收首選項」頁面。
將頁面向下滾動到塊意外支付部分,如下圖 所示。
選擇下列選項之一:
滾動到頁面底部並單擊保存按鈕。
另一種選擇是創建發票ID與用戶ID +一個隨機數。這將使它獨一無二。
請參閱下面的示例代碼以獲取唯一的發票號碼。
var r = Math.floor(Math.random()*100000);
var invoice = userid + "-" + r;
您也可以使用日期&時間,而不是一個隨機數。
var d = new Date();
var invoice = userid + "-" + d;
並在響應來自貝寶回來,你只需放棄破折號後會發生什麼。
我希望這會有所幫助。
因此,我通過「InvoiceField」將「UserID」發送到payPal是完全安全的嗎?你能給我提供一些代碼示例如何發送它? – 1110
我用示例更新了回覆。 – jdias
對不起,我不想無聊,但我錯過了一件事。我有PayPal生成的「PayOnceButton」代碼。我現在添加了發票字段。但如何爲它設定價值? – 1110