2012-10-26 62 views
0

我已經實施IPN處理程序(copt從代碼項目中粘貼它)第一次在其中一個項目中。Paypal IPN處理程序 - 如何知道誰的交易發生

在用戶的問題可以註冊到我的網站有一些電子郵件地址,然後同時支付他可以用一些不同的電子郵件地址

而且IPN處理程序請求變量給其所支付的電子郵件地址。我應該如何找出哪個用戶付了錢。

if (strResponse == "VERIFIED") 
     { 
      //check the payment_status is Completed 
      //check that txn_id has not been previously processed 
      //check that receiver_email is your Primary PayPal email 
      //check that payment_amount/payment_currency are correct 
      //process payment 

      string payerEmail = Request.Form["payer_email"]; 
      string paymentStatus = Request.Form["payment_status"]; 
      string receiverEmail = Request.Form["receiver_email"]; 
      string amount = Request.Form["mc_gross"]; 
     } 

解決方案:

通過一些addiditonal可能是在支付處理頁面的用戶ID,並假設它會在IPN處理程序返回。

或者要求用戶在付款前輸入paypal電子郵件地址。 (不是感覺很好)

在這方面的任何幫助表示讚賞

回答

3

我平時POST,車信息,識別我的本地事務,或我的本地車的自定義字段中。 IPN會將該自定義字段發回給您,以便您可以將交易與您的用戶進行匹配。或者您可以傳遞USER_ID,然後無論交易如何都可以取回。

發送貝寶使用此字段中表單自定義數據:在回調

<input type="hidden" name="custom" value="YOUR_CUSTOM_INFO_HERE"> 

手柄IPN:

if (strcmp ($res, "VERIFIED") == 0) { 
    // This is the custom field i posted within the cart form. 
    $cid = $_POST['custom']; 
    $txn_id = $_POST['txn_id']; 
    $cart = load_cart_by_cid($cid); 
    if (!empty($cart)) { 
    // Fetch your user from cart and do things with it, 
    // along with your security checks. 
    $user = $cart->getUser(); 
    // For example, store the transaction. 
    TransactionManager::saveTransaction($user, $txn_id); 
    } 
} 

來源是PHP的,但我認爲是冗長足以很容易地轉換在java中,或c#,或其他。