簡體   English   中英

PayPal IPN模擬器返回“無效”,但我遵守規則

[英]PayPal IPN simulator returning “INVALID” but I've followed the rules

因此,我有一個PHP服務,唯一的工作就是接受PayPal IPN連接。 我正在使用PSR7 $request->getBody()->getContents()從PayPal IPN模擬器請求中獲取以下內容。

payment_type=echeck&payment_date=Tue%20Jun%2007%202016%2012%3A56%3A47%20GMT+0100%20%28BST%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=buyer@paypalsandbox.com&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&business=seller@paypalsandbox.com&receiver_email=seller@paypalsandbox.com&receiver_id=seller@paypalsandbox.com&residence_country=US&item_name=something&item_number=AK-1234&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&txn_type=web_accept&txn_id=787223012&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AfBnnvbsi0E9urbgYYn51fFWPj23

因此,當我使用Guzzle 6 POST通過以下body將其發布回https://www.sandbox.paypal.com/cgi-bin/webscr

cmd=_notify-validate&payment_type=echeck&payment_date=Tue%20Jun%2007%202016%2012%3A56%3A47%20GMT+0100%20%28BST%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=buyer@paypalsandbox.com&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&business=seller@paypalsandbox.com&receiver_email=seller@paypalsandbox.com&receiver_id=seller@paypalsandbox.com&residence_country=US&item_name=something&item_number=AK-1234&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&txn_type=web_accept&txn_id=787223012&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AfBnnvbsi0E9urbgYYn51fFWPj23

我收到INVALID回復。 我不知道它是否來自處理SSL終止的服務器的其他IP地址,或者我是否發瘋了。

我對PayPal的模擬器請求正文與不帶cmd變量發回的正文進行了比較,沒有區別。

看來新的IPN Simulator界面正在使用payment_date字段中的javascript Dates。 如果您將其手動設置為今天,則可以正常運行。 我不確定這是IPN模擬器端還是IPN偵聽器中的編碼/解碼問題。

最近幾天,我們一直在使用IPN模擬器,並且收到驗證請求中返回的間歇性INVALID消息。

等待幾分鍾,或僅按幾次“發送IPN”消息似乎都可以。

我們已經看到一個請求返回一個INVALID ,不久之后,同一請求返回VERIFIED 很煩人。

如果IPN來自IPN模擬器,則PayPal交易驗證始終返回INVALID,但是我找到了一種解決方法。 如果IPN來自真實交易,則可以正常工作。 這是我做的。

  1. 轉到貝寶開發人員並登錄
  2. 創建一個沙箱帳戶(如果您已經有一個沙箱帳戶,請忽略這兩個步驟)
  3. 現在轉到https://www.sandbox.paypal.com並登錄
  4. 然后訪問按鈕管理並創建一個按鈕
  5. 不要忘記為您的沙盒帳戶設置IPN通知URL
  6. 現在,通過您在沙盒帳戶中創建的按鈕進行真實的描述
  7. 完美無瑕

作為記錄,我在使用Paypals IPN Simulator時遇到了這個問題,並發現該解決方案是Paypal的典型解決方案:

問題:當所有檢查均顯示正確時,在貝寶IPN模擬器上運行的格式正確的IPN測試將返回INVALID

解:

  • 1)模擬器始終在“沙盒”環境中運行。 我使用它來查看“實時”付款網站的反饋,並花了幾個小時才發現您的IPN需要設置為沙箱模式。 這在Paypal模擬器上沒有提及,並且似乎由Paypal硬編碼並“假定”。

  • 2)IPN Simulator中的Payment_Date字段無效,返回PayPal時不被接受,因此在提交IPN Simulator運行時,請清除此字段或將此字段設置為null

  • 3)有時,奇怪的是,貝寶​​IPN模擬器會告訴您

    IPN未發送,並且握手未驗證。 請檢查您的信息。

    即使模擬事務由我的IPN偵聽器腳本完全處理,並返回VERIFIED 始終檢查您自己的反饋腳本,而不是Paypal決定告訴您。


上述問題的結合使我失去了數小時的生命。 Stripe遠比用編碼好得多

暫無
暫無

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

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