测试 Paypal 订阅 IPN
-
21-09-2019 - |
题
我想测试 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,因此您只需“购买”一份订阅即可进行测试。购买一份订阅后,您可以执行以下操作:
- 登录您的 PayPal 沙箱 卖方 帐户。
- 选择“个人资料”=>“我的销售偏好”。
- 从第三列中选择“即时付款通知首选项”。
- 确认 IPN 已启用并且 URL 正确。
- 单击链接到 IPN 历史 页。
- 向下滚动,勾选一个或多个 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: