我想测试 paypal 订阅 IPN,包括创建订阅时收到的 IPN,以及稍后在下一次付款时发送的 IPN(例如每月,如果订阅为每月 x 美元)。

不过,我不想等一个月或一天才能收到第二个 IPN。有没有办法使用 PayPal 或其沙箱更快地发送 IPN(例如每小时发送一次)?

文档上说您只能指定年、月、日和周作为订阅期。

有帮助吗?

解决方案

它曾经是,在天中指定的周期将被测试服务器分钟进行处理,从而当指定“D3”你会称为每3分钟。我认为他们去掉这一点,我不知道任何替换功能测试的订阅。

其他提示

PayPal的显影支撑件和文档是尴尬它们。但是,这特别的限制不如衰弱,因为它似乎乍一看。

有关测试,确定您的定期付款的的有一个免费试用。当您创建一个新的订阅,您的服务器将在快速连续收到两条IPN消息,一个创建预订和第二申请付款。这基本上是所有你需要测试。

如果你有一个免费试用,你会得到基本相同的对消息,只是他们之间的试用期。 :)

在第一消息(“创建订阅”)将看起来像这样。注意“txn_type” - 这是的信息用于消除歧义的两个消息的键位:

{
  "txn_type"=>"subscr_signup",
  "subscr_id"=>"unique_id",
  "verify_sign"=>"random_gibberish",

  "item_number"=>"your_subscription_name"
  "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
  "btn_id"=>"1111111",
  "item_name"=>"Your Subscription Description",
  "recurring"=>"1",
  "period1"=>"1 M",

  # This example is from a "free trial" IPN notification-- if you don't have a 
  # free trial defined, there will only be 'period1' fields, and they'll
  # have the data that appears here in the 'period3' fields.
  "amount1"=>"0.00",
  "mc_amount1"=>"0.00",
  "period3"=>"1 M",
  "amount3"=>"34.95",
  "mc_amount3"=>"34.95",
  "mc_currency"=>"USD",

  "payer_status"=>"verified",
  "payer_id"=>"payer_unique_id",
  "first_name"=>"Test",
  "last_name"=>"User",
  "payer_email"=>"test_xxxx@example.com",
  "residence_country"=>"US",

  "business"=>"seller_xxxxxxx@example.com",
  "receiver_email"=>"seller_xxxxxxx@example.com",

  "reattempt"=>"1",

  "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}

在第二消息是更有趣的一个在这种情况下。这将从根本上是完全一样的消息被应经常性支付时,你会得到以后。它看起来是这样的:

{
  "txn_type"=>"subscr_payment",
  "subscr_id"=>"unique_id",
  "verify_sign"=>"random_gibberish",

  "txn_id"=>"payment_unique_id",
  "payment_status"=>"Completed",
  "payment_date"=>"12:45:33 Feb 16, 2010 PST",

  "item_number"=>"your_subscription_name"
  "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
  "custom"=>"data-you-sent-in-a-custom-field",

  "id"=>"1",
  "payment_gross"=>"34.95",
  "mc_currency"=>"USD",
  "payment_type"=>"instant",
  "payment_fee"=>"1.31",
  "payer_status"=>"verified",
  "mc_fee"=>"1.31",
  "mc_gross"=>"34.95",
  "btn_id"=>"1111111",

  "payer_id"=>"payer_unique_id",
  "first_name"=>"Test",
  "last_name"=>"User",
  "payer_email"=>"test_xxxx@example.com",
  "residence_country"=>"US",

  "receiver_id"=>"your_merchant_id",
  "business"=>"seller_xxxxxxx@example.com",
  "receiver_email"=>"seller_xxxxxxx@example.com",

  "protection_eligibility"=>"Ineligible",
  "transaction_subject"=>"",
  "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}

所以,你可以做几乎所有的测试,而不必等待了一天。通过你认为你有时间就确定下来,你就会收到大量的订阅IPN消息的第二天。

此外,此处是PayPal的文档的链接用于进一步的参考。

可以重新发送测试 IPN,因此您只需“购买”一份订阅即可进行测试。购买一份订阅后,您可以执行以下操作:

  1. 登录您的 PayPal 沙箱 卖方 帐户。
  2. 选择“个人资料”=>“我的销售偏好”。
  3. 从第三列中选择“即时付款通知首选项”。
  4. 确认 IPN 已启用并且 URL 正确。
  5. 单击链接到 IPN 历史 页。
  6. 向下滚动,勾选一个或多个 IPN,然后单击“重新发送”。

确认后,所选的 IPN 现在将重新发送到您指定的 URL。您可以使用相同的 IPN 重复无限次。

@dondo 的出色回答涵盖了其余部分。

嘿,我只是想抛出一个喊出尼尔,因为这正是我一直在寻找,我没有足够的信誉来答复或给予好评..

不管你信不信贝宝还不会使它容易做到IPN文件订阅测试:/

所以,仅仅因为我没有看到它在这里和OP那种听起来像是他们的印象,只希望两种可能的响应下,从教皇 -

如果其他人是否有问题,这里有一些其他txn_type击中我的IPN,在做测试:

//when paypal subscription profile is created for the subscriber
subscr_signup 

//payment made for a given billing cycle
subscr_payment 

//when subscription fails
subscr_failed 

//user cancels subscription - not
subscr_cancel 

//end of term - paypal is "done" with that subscriber 
subscr_eot 

//why I was looking for this thread to begin with lol
recurring_payment_suspended_due_to_max_failed_payment

这是最后一个早上打我的IPN对我的测试用户的每一个最后一个。当我抬头是什么意思,我发现下面也有可能得到:

recurring_payment_profile_created

recurring_payment_profile_cancel

recurring_payment_profile_modify

recurring_payment

recurring_payment_skipped

recurring_payment_failed

我不知道我做了什么让因为租费和循环付款PayPal的眼睛是技术上的不同(订阅都不可能永不终止,但经常性支出存在时支付的价款有人能做出任何“订阅”上设置封顶)但他们的文档并不总是直线前进,要么,所以我不知道。那我还在上搞清楚,因为这工作是由沙箱商家帐户,但不管生成的订阅按钮。

快乐头痛:)

更新: 我刚才想通了,我的问题 - 所以只是让这听起来像我知道我在做什么,我会解释...

我觉得PayPal的订阅沙箱环境中慢慢死去。我注意到有一天,当我瞎搞在sandbox.paypal.com,我得到的“致命故障”了很多次。刷新页面似乎更正此次数最多,虽然有时我必须刷新几次在屏幕回来。

我收到来自他们同样的回应打我的IPN文件,这也解释了为什么每次我订阅今日停牌才行了。由于尼尔我能够重新发送IPN反应,我抓住它变成一个文本文件(笑)然后我打的IPN文件中的响应阅读,并在贝宝扔回去(它真的更复杂的比我只是使得它听起来很容易)。

在刷新页面任何情况下,我可以启动支付宝握手或多或少的需求,当我这样做,这是50/50 - 有时我得到验证,有时我得到致命的失败 - 就像当我尝试做许多在他们的沙盒网站(致命故障)任何东西。

下面是一个失败的回应,我从他们那里得到的一部分的例子...我收到了200,所以我相信他们的命中服务器不可用连接的问题,但我开始看到“致命故障模式“在这里和这指向更它们的端部比我

HTTP/1.1 200 OK 
Date: Tue, 29 Sep 2015 02:41:00 GMT 
Server: Apache 

Fatal Failure 

也可以手动从他们的沙箱创建IPN:

https://developer.paypal.com/cgi-箱/ devscr?CMD = _ipn链路会话

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top