2009-12-03 115 views
21

我想將自定義變量傳遞給PayPal IPN。我可以設法通過一個變量。但我不知道如何傳遞多個變量。將自定義變量傳遞給PayPal IPN

我的過程是這樣

  1. 用戶填寫
  2. 他們點擊按鈕的形式和它去給PayPal
  3. 他們支付,IPN送我回的信息和ipn.php添加傳遞給數據庫的變量。

我的自定義變量是

  1. 共線(只要他們寫,我算線)
  2. 消息(他們的消息,他們寫了)
  3. 宣傳ID

但現在,我只能通過這樣一個變量

form.php的

<input name="custom" type="hidden" id="custom" value="{$line_count}"> 

$_SESSION['line_count'] = $_POST['lines_txt']; 

ipn.php

$sql="INSERT INTO `form`(`totalline`) VALUES ('" .$_POST['custom']. "');"; 
+10

這ipn.php腳本,你必須看起來像一個巨大的SQL注入安全漏洞給我。請不要提交該代碼。 – 2012-03-30 09:06:16

回答

19

我不知道,如果它甚至有可能與PayPal發送和接收多個變量。如果由於Paypal的限制而無法實現,則可以使用以下方法之一:

  • 發送數據序列化,並在返回時反序列化。
  • 將數據寫入form.php(狀態爲未付費)的數據庫併發送ID。在ipn.php中捕獲id並設置status = paid/error /數據庫中發生的任何事情。
+0

感謝您的回覆。目前我正在檢查和自定義變量只能容納200個字符,我的變量超過了這個值,所以我無法通過。我只能做一件事,就像你說的,首先,當他們提交表單時,我將所有需要存儲在數據庫中的東西存儲起來,然後獲得IPN結果,如果成功,更新狀態,如果失敗,刪除條目。但另一個問題是,如果他們關閉了瀏覽器並且從未付款,我該如何刪除該條目?我需要運行cron並刪除嗎? :(這是很多的過程和工作 – spotlightsnap 2009-12-03 09:10:54

+0

@spotligthsnap:如果用戶在貝寶網站上關閉瀏覽器,那麼數據庫條目仍然存在,是正確的。你可以通過cronjob刪除它們,但你也可以把它們留在數據庫中稍後再進行分析(支付/重定向到paypal)。同樣的精神,你可以在從PayPal返回後寫錯誤,而不是僅僅刪除條目 – Residuum 2009-12-03 09:49:39

+0

謝謝,這很好,另外,存儲一些值到db然後發送到paypal一個更好的主意 – noobcode 2010-09-23 09:54:29

0

一個模糊的記憶告訴我,有用於發送數據到PayPal兩個選項。命令x_click和我認爲有像上傳參數。當上傳參數設置爲1時,您可以發送多行到貝寶。

更新PayPal information about this

2

如果只是通過一個與PayPal不相關的變量,但當它返回時與您更相關,您可以使用值['custom']提交給paypal,paypal只會通過它一旦事情完成,他們就會回到你身邊。