2011-12-21 84 views
10

我已經瀏覽了(沒有那麼有用)的PayPal文檔,並且找不到這個問題的簡單答案。當用戶從PayPal返回時,URL不包含查詢字符串,因此我沒有收到'tx'值(或任何其他值)。PayPal PDT不在查詢字符串中返回一個tx值

這是我發送給貝寶的例子:

<form accept-charset="utf-8" action="https://www.sandbox.paypal.com/au/cgi-bin/webscr" id="paypal-form" method="post"> 
    <input type="hidden" name="business" value="[email protected]"> 
    <input type="hidden" name="cancel_return" value="http://localhost/checkout"> 
    <input type="hidden" name="cmd" value="_xclick"> 
    <input type="hidden" name="charset" value="utf-8"> 
    <input type="hidden" name="currency_code" value="AUD"> 
    <input type="hidden" name="custom" value="155"> 
    <input type="hidden" name="lc" value="AU"> 
    <input type="hidden" name="notify_url" value="http://localhost/paypal-ipn"> 
    <input type="hidden" name="return" value="http://localhost/checkout">   
    <input type="hidden" name="item_name" value="ABC Company - Order #155"> 
    <input type="hidden" name="item_number" value="155"> 
    <input type="hidden" name="amount" value="8.95"> 
    <input type="hidden" name="discount_amount" value="0.00"> 
    <input type="hidden" name="shipping" value="25.00"> 
    <input type="image" src="https://www.paypal.com/en_AU/i/btn/btn_buynowCC_LG.gif" name="submit" alt="Buy Now"> 
</form> 

提前感謝!

回答

15

你應該https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_profile-website-payments檢查設置,確保

  1. 自動返回設置爲ON
  2. 已指定返回URL
  3. 付款數據傳輸設爲ON

有一個還有一點我不得不通過實驗來學習,那就是你的表單不能包含「返回」值,否則將覆蓋設置中的返回URL,並阻止自動返回功能工作,並且你將在沒有必要的情況下關閉tx參數。這是Paypal最近的一個開發(bug?),因爲它曾經工作過。

+1

我得到了這個工作在現場,但沙箱(開發)網站無法正常工作。該死的沙箱區並不總是像預期的那樣工作,或者像現場一樣工作:@。 – 2012-01-03 01:16:27

+0

@Daniel - 儘管我當然同意沙盒網站看起來總是搞砸了,擁有「返回」值肯定會起作用,並且仍然包含在2011年11月底更新的PP文檔中。 – JM4 2012-03-06 23:14:36

2

我在測試過程中遇到了與沙箱相同的問題。爲了修復它,我必須在沙盒環境中驗證測試帳戶。要驗證它們,請使用內置測試電子郵件服務。驗證後,paypal沙箱開始發送TX參數。

+0

這很煩人,沒有任何意義他們會這樣做。 – 2012-01-31 07:05:32

1

我剛剛一直在努力這一段時間,另一件看起來不會導致tx價值返回的是如果你有免費試用。

因此,如果您的服務費用在前20天免費,然後是4.99,那麼您的第一次免費付款就不會得到tx價值。如果您在初始「免費」期間收取一分錢(或任何相關貨幣),那麼您將收到返還的tx值。

+0

沒有交易執行免費付款,tx值與正在執行的商戶交易有關。通常,成功傳遞$ 0並且不執行事務。 – 2012-08-12 14:08:36

4

我們實際上使用貝寶商業技術服務登錄了一張門票,以便了解這一點。 我們發現,隨着時間的推移,一些貝寶商戶賬戶似乎會忘記他們的AutoReturn/PDT設置。

即使您可以進入網站首選項,並且AutoReturn和PDT都已啓用;該帳戶的行爲就好像沒有啓用。

請按照以下步驟重新設置....

  • 點擊個人資料。
  • 點擊 「我的銷售偏好」>
  • 點擊 「網站首」

(*)直接鏈接到這個部分,如果你不能找到它 - >https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-website-payments

  • 禁用自動退貨和付款數據傳輸。
  • 保存更改。
  • 再次訪問網站偏好設置。
  • 再次啓用自動返回和付款數據傳輸。
  • 保存更改。
1

其他一些原因,您可能不會得到TX參數:

  • 對於PDT工作,你必須確認作爲商務的按鈕代碼值的電子郵件地址。如果此電子郵件地址未被確認,則PDT將不起作用。如果您的電子郵件地址未被確認,您將不會看到附加到您的返回URL的PDT查詢字符串。

  • 當您啓用PDT時,您用作默認自動返回URL的URL必須是有效的主機名或IP地址,否則用戶將不會自動返回到該URL。請確保您使用有效的網址作爲您希望用戶返回的網址,否則您將看不到預期的結果。

來源:https://ppmts.custhelp.com/app/answers/detail/a_id/469

1

我已經找到一種方法,爲我工作 - 嘗試這個字段插入到你的生成表單代碼:

<input type='hidden' name='rm' value='2'> 

RM意味着回報方法;

意味着後與變量

比用戶購買並返回到您的網站的網址後,則該網址獲取POST參數以及

附:如果使用PHP,請嘗試在您的返回URL(腳本)中插入var_dump($_POST);,然後進行測試購買,並且當您返回到您的網站時,您將看到您的網址上有哪些變量。

0

我有一個類似的問題 - 在本地服務器上工作, 我用來取代'tx'變量,我有一個'auth'變量。 在玩了一段時間之後,發現(出於一些有線的原因),如果我改變我的虛擬主機和主機文件,到真正的域,我得到'tx'變量,在我的本地環境域中,我得到'auth'變量。 爲我修好了。 希望這可以幫助任何人。