testingPaypal订阅IPN
我想testingPayPal订阅IPN,包括创build订阅时收到的IPN,以及随后发送的下一个付款(例如,如果订阅每月$ x,则每月发送)。
不过,我宁愿不等一个月或一天接收第二个IPN。 有没有办法让IPN更快地发送,比如每小时使用paypal或者他们的沙箱?
在文件上说,你只能指定几年,几个月,几天,几周作为订阅期。
过去,以天为单位的时间段将被testing服务器视为分钟数,所以当指定“d3”时,每3分钟就会调用一次。 我认为他们删除了这一点,我不知道任何替代function来testing订阅。
贝宝的开发者支持和文档是他们的尴尬。 但是这个特殊的限制并不像初看起来那样虚弱。
为了testing,定义您的定期付款没有免费试用。 当您创build新订阅时,您的服务器将快速连续收到两封IPN邮件,一封是创build订阅,另一封是应用付款。 这基本上是所有你需要testing。
如果您有免费试用版,那么您将获得基本相同的一对消息,只需在两者之间进行试用即可。 🙂
第一条消息(“创build订阅”)将看起来像这样。 请注意'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", }
所以你几乎可以做所有的testing而不用等一天。 当你认为你已经确定下来的时候,你将在第二天收到大量的订阅IPN消息。
此外, 这里是一个链接到贝宝的文档进一步参考。
可以重新发送testingIPN,因此您只需要“购买”一个订阅即可进行testing。 一旦你买了一个订阅,这是做什么:
- login到您的PayPal沙盒卖家帐户。
- select“个人资料”=>“我的销售偏好”。
- 从第三栏中select“即时付款通知首选项”。
- 确认已启用IPN并且URL是正确的。
- 点击链接到IPN历史页面。
- 向下滚动,勾选一个或多个IPN,然后点击“重新发送”。
确认后,所选的IPN将重新发送到您指定的URL。 您可以使用相同的IPN重复次数不限。
其余的是@dondo的优秀答案。
嘿,我只是想向Neil大喊一声,因为那正是我要找的东西,我没有足够的声望来回复或upvote ..
相信或不支付paypal仍然不容易做与ipn文件的订阅testing:/
所以,就因为我没有在这里看到它,听起来像OP的样子听起来只是期望来自教皇的两个可能的回应 –
如果其他人有问题,这里有一些其他的txn_type,在testing时打我的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今天早上对我的每个testing用户的最后一个。 当我正在查找这是什么意思时,我发现以下几点也可以得到:
recurring_payment_profile_created recurring_payment_profile_cancel recurring_payment_profile_modify recurring_payment recurring_payment_skipped recurring_payment_failed
我不知道我做了什么来做到这一点,因为订阅和定期付款在技术上是不同的贝宝认为(订阅可能永远不会终止,但经常性支付有限的人可以作出任何“订阅”),但他们的文档也不总是直截了当,所以我不知道。 我仍然在研究,因为这是沙盒商家帐户生成的订阅button,但无论如何。
快乐的头痛:)
更新:我刚才知道我的问题 – 所以这听起来像我知道我在做什么,我会解释…
我认为贝宝的订阅沙箱环境正在慢慢死亡。 我注意到有一天,当我在sandbox.paypal.com上搞乱了很多次“致命的失败”。 刷新页面似乎纠正这最多的时间,虽然有时我不得不刷新几次屏幕回来。
我得到了同样的回应,他们击中我的IPN文件,这解释了为什么我今天暂停每一个订阅。 感谢Neil,我能够重新发送IPN响应,并将其捕获到一个文本文件(lol)中,然后在响应中打开ipn文件读取并将其扔回到贝宝(它真的比我更复杂使它听起来很容易)。
无论如何,通过刷新页面,我可以根据需要或多或less地启动PayPal握手,当我这样做时,它是50/50 – 有时候我会得到validation,有时我会得到致命的失败 – 就像当我尝试去做很多事情时一样在他们的沙箱网站(致命故障)。
下面是我从他们那里得到的一个失败的答复的一部分的例子…我得到一个200,所以我相信打他们的服务器不是连接问题,但我开始看到一个模式与“致命的失败”在这里和这指向比他们更多的结局
HTTP/1.1 200 OK Date: Tue, 29 Sep 2015 02:41:00 GMT Server: Apache Fatal Failure
你也可以从他们的沙箱手动创buildIPN:
https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session