簡體   English   中英

Paypal-如何將其他數據從Paypal發布回return_url?

[英]Paypal - How to post additional data from paypal back to return_url?

我一直試圖將Paypal集成到我的網站中,但是遇到了一個問題。 在我的網站上,我無需注冊即可向客戶銷售產品。 基本上,客戶選擇了他想要的產品,然后我從貝寶(Paypal)獲得了我需要的所有運輸信息。 因此,當我的IPN返回“已VERIFIED狀態時,我為客戶創建了一個訂單並將其保存到數據庫中。 但是現在我想給他們完成交易時的禮物代碼。 我知道,只要保存訂單,我就可以通過電子郵件發送代碼,但是當他們從return_url重定向回return_url時,我想向他們展示。 由於訂單在他們開始進行貝寶交易之前並不存在,並且禮品代碼在重定向回他們時就創建了,所以我不知道如何將禮品代碼連接到他們的訂單。 我認為,如果paypal向我的return_url發送了更多數據(很可能是transaction_id ,我也許可以做到。 有什么方法可以實現這種功能,而無需我向表單添加另一個隱藏的輸入? 我不希望人們繼續愚弄FireBug並將變量更改為所需的變量。

我根據本文實現了IPN,並將訂單保存在VERIFIED部分中,如下所示:

if (strcmp($res, "VERIFIED") == 0) {
  $data['Order']['first_name']=$_POST["first_name"];
  $data['Order']['last_name']=$_POST["last_name"];
  $data['Order']['email']=$_POST["payer_email"];
  $data['Order']['res'] = $res;
  $this->Order->create();
  if ($this->Order->save($data)) {

  }
} else if (strcmp ($res, "INVALID") == 0) {            
  }
}

因此,我從貝寶(first_name,last_name和payer_email)獲得了一些信息。 但是,這發生在Paypal和網站之間的會話中,而不是在用戶和網站之間的SESSION中,因此,我無法在IPN中聲明變量,然后在用戶從return_url重定向到return_url時讀取變量。

我知道了,我沒有在我的Paypal帳戶上啟用PDT,在我將其打開后,使用GET將transaction_id發送到了return_url 猜猜我應該閱讀更多。

有關如何打開PDT及其工作方式的更多信息: https : //developer.paypal.com/webapps/developer/docs/classic/paypal-payments-standard/integration-guide/paymentdatatransfer/

return_url樣子:

http://***/complete?tx=***&st=Pending&amt=***&cc=GBP&cm=&item_number=

因此,我無法在IPN中聲明一個變量,然后在用戶從Paypal重定向到return_url時讀取它。

是的,您可以使用custom字段,該字段通常用數據庫中的user_id填充。 您可以通過(POST)格式將其傳遞給Paypal,如下所示: <input type="hidden" name="custom" value="user_ID">

貝寶將始終在與您的任何后續通信中包括此數據。

PDT本身並不可靠! 無法保證用戶在付款后將其返回到您的網站(如果他按下“付款”按鈕,得到“等待10秒,將您重定向到網站”,那時候斷電了嗎?您會永遠不要在HTTP GET中獲取PDT數據)。

出於這個原因,貝寶建議您同時實現IPN和PDT: https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNPDTAnAlternativetoIPN/

使用IPN,您可以確保收到通知,因為它將多次發送,直到您答復“確定,我知道了”。 相反,PDT僅發送一次,並且僅在用戶將其返回到您的網站時發送。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM