Подтвердить что ты не робот

Тестирование подписки Paypal IPN

Я бы хотел протестировать IPN с подпиской PayPal, как те, которые были получены при создании подписки, так и те, которые были отправлены позже со следующим платежом (например, ежемесячно, если подписка составляет $x в месяц).

Однако я бы предпочел не ждать месяца или дня, чтобы получить второй IPN. Есть ли способ получить IPN быстрее, например, ежечасно, используя paypal или их песочницу?

В документации говорится, что в качестве периода подписки можно указать только годы, месяцы, дни и недели.

4b9b3361

Ответ 1

Раньше считалось, что период, указанный в днях, обрабатывается тестовым сервером в виде минут, поэтому вы будете называться каждые 3 минуты, если указано "d3". Я думаю, что они удалили это, и я не знаю какой-либо функции замены для тестирования подписки.

Ответ 2

Поддержка и документация разработчиков 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"=>"[email protected]",
  "residence_country"=>"US",

  "business"=>"[email protected]",
  "receiver_email"=>"[email protected]",

  "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"=>"[email protected]",
  "residence_country"=>"US",

  "receiver_id"=>"your_merchant_id",
  "business"=>"[email protected]",
  "receiver_email"=>"[email protected]",

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

Итак, вы можете сделать почти все свои тесты, не дожидаясь дня. К тому времени, когда вы думаете, что у вас есть гвоздь, вы получите много подписных IPN-сообщений на следующий день.

Кроме того, здесь является ссылкой на документацию PayPal для дальнейшей справки.

Ответ 3

Можно повторно отправить тестовые IPN, поэтому вам нужно только "купить" одну подписку для тестирования. Как только вы купили одну подписку, вот что делать:

  • Войдите в свою изолированную почтовую программу PayPal продавца.
  • Выберите "Профиль" = > "Мои настройки для продажи".
  • Выберите "Настройки уведомлений мгновенного платежа" из третьего столбца.
  • Подтвердите, что IPN включен и что URL-адрес верен.
  • Нажмите ссылку на страницу История IPN.
  • Прокрутите вниз, отметьте один или несколько IPN и нажмите "Отправить".

После подтверждения, выбранные IPN теперь будут повторно отправлены на указанный вами URL. Вы можете повторять неограниченное количество раз с теми же IPN (-ами).

Отличный ответ от @dondo охватывает остальные.

Ответ 4

Эй, я просто хотел бросить крик Нейлу, потому что это именно то, что я искал, и у меня нет достаточной репутации, чтобы ответить или возвысить.

Поверьте, или нет, PayPal все еще не упрощает проведение тестирования подписки с 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 (подписки могут никогда не прекращаться, но в повторяющихся платежах есть ограничение на общие платежи, которые кто-то может сделать для любой "подписки" ) но их документация не всегда прямолинейна, так что я не знаю. То, что я все еще работаю над выяснением, поскольку это была кнопка подписки, созданная учетной записью для песочницы, но что бы там ни было.

Счастливые головные боли:)

UPDATE: Я понял свою проблему только сейчас - так что это звучит так, как будто я знаю, что я делаю. Я объясню...

Я думаю, что среда загрузки песочницы PayPal медленно умирает. Я заметил, что на днях, когда я возился в sandbox.paypal.com, я получаю "Fatal Failure" много раз. Обновление страницы, похоже, исправляет это чаще всего, хотя иногда мне приходится несколько раз обновлять экран, чтобы вернуться.

Я получаю от них один и тот же ответ, попадающий в мой IPN файл, что объясняет, почему каждая подписка, которую я заблокировал сегодня. Благодаря Нейлу я смог повторно отправить ответ IPN, и я захватил его в текстовый файл (lol), а затем я ударил файл ipn, прочитав ответ, и отбросил его на paypal (его действительно более сложный, чем тот, который я просто что делает его легким).

В любом случае, обновляя страницу, я могу инициировать квитанцию ​​paypal более или менее по требованию, а когда я это делаю, она 50/50 - иногда я получаю ПРОВЕРЕН, а иногда получаю Fatal Failure - точно так же, как когда я пытаюсь сделать большая часть чего-либо на их сайте песочницы (Fatal Failure).

Ниже приведен пример части неудачного ответа, который я получаю от них... Я получаю 200, поэтому считаю, что поражение их сервера не связано с подключением, но я начинаю видеть шаблон с "Fatal Failure" "здесь и это указывает на больше их конца, чем у меня.

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

Fatal Failure