Тестирование PayPal Direct Recurring Payments. Проходилка квеста

    Если Вы собираетесь прикручивать на сайте поддержку оплаты через PayPal, а точнее Website Payments Pro (WPP), а точнее Direct Recurring Payments, то скорее всего вы уже ознакомились с документацией от самого сервиса: Integrating Recurring Payments.

    Но если Вы раньше не прикручивали именно этот тип платежей, то Вы, наверняка, ещё не подозреваете о некоторых особенностях его тестирования.

    Вообще, для тестирования оплаты через PayPal существует песочница, пользоваться которой довольно просто — надо всего лишь зарегистрироваться на https://developer.paypal.com, затем создать тестовый аккаунт. В данном случае, создавать аккаунт проще методом «Create a preconfigured account», выбрать надо Account Type = Website Payments Pro (WPP), остальное по желанию. И вуаля — на странице Test Accounts у Вас появится аккаунт продавца для WPP.

    Но мы то помним, что нам нужен именно Direct Recurring Payments WPP, поэтому логинимся продавцом на https://www.sandbox.paypal.com и заходим в его профиль.

    Здесь нам нужны 2 вещи:
    1) ссылка «Request API credentials», перейдя по которой выбираем «Option 1» >> ссылка «Set up PayPal API credentials and permissions». А затем «Option 2» > ссылка «View API Signature». С этой страницы сохраняем себе: API Username, API Password, Signature, что соответствует параметрам USER, PWD, SIGNATURE в запросах к PayPal API (подробнее см. документацию).

    2) ссылка «Instant Payment Notification preferences», перейдя по которой и нажав кнопку «Choose IPN Settings», можно установить URL вашего слушателя сообщений от PayPal. (зачем это нужно, можно узнать там )

    И вот Вы, воодушевившись, пишите свою форму для приёма платежей от пользователя, и отправив первые тестовые запросы на PayPal получаете мессагу типа:

    DPRP Is Disabled For This Merchant

    Чешете затылок, перепроверяете все параметры, пароли, урлы и снова получаете «DPRP Is Disabled For This Merchant». Трёте виски и гуглите по этому поводу в интернетах, и возможно натыкаетесь на инструкции типа этих. Но то, что Вам в таком положении действительно требуется, так это вот эта ветка форума PayPal developer network.
    Потому что по каким то необъяснимым причинам, сервис PayPal считает нормальным не фиксить этот баг как минимум с февраля 2010 года. Вместо этого пэйпаловцы добрадушно предлагают писать в эту ветку мыло тестового аккаунта-WPP, чтобы каким-то хитрым образом (недоступным простым смертным) включить вам эти самые DPRP.

    Итак, если требуется, то регистрируемся, и затем пишем что то типа:
    Hi,
    I'd like my test account to be enabled for DPRP:
    <имя вашего юзера>
    Thanks!

    И ждём около суток (ну или как повезёт в зависимости от Вашего часового пояса, календарных праздников и настроения модераторов)

    Получив заветное:
    Hi <Ваш ник>,
    DPRP is already enabled for your account.

    от юзера со значком PayPal X в его профиле (слева),

    можно наконец начинать интеграцию Website Payments Pro, Direct Recurring Payments.

    Ах, да и ещё небольшой момент: после создания профиля (CreateRecurringPaymentsProfile) обязательно проверьте его статус (через GetRecurringPaymentsProfileDetails), велика вероятность, что статус в ответе на первый запрос будет не совсем корректным.

    Надеюсь, что сей небольшой очерк сэкономит хорошим, читающим хабр людям один-два дня времени и пучок нервов :)
    Share post

    Similar posts

    Comments 19

      0
      Реализовывал recurring на magento, нет ничего страшного, даже не заметил, что были какие-то проблемамы.
        0
        у PayPal разные recurring есть. Тут речь о тех, которые к Website Payments Pro относятся.
          0
          Ну в последних версиях Мадженты они вообще из коробки :) правда в Бета-статусе
          0
          Такая же ситуация и с методом DoDirectPayment.
          Собственно исправлять баг они не собираются, мотивируя это тем, что очень много другого делать.
            0
            1) сслка «Request API credentials», перейдя по
            букву пропустили ссЫлка
            ну это так чтобы норм было)
              0
              Спасибо, исправлено.
              0
              Буквально пару дней назад прикручивал пэйпаловские Encrypted Website Payments (это такое шифрование + ЭЦП передаваемой информации, иначе можно подделать форму и купить любой товар по кнопке buy it now за один цент), так без геморроя тоже не обошлось. PayPal предлагает использовать для этих целей «библиотеку», написанную на java в 2004 году криворукими программистами. Мало того что дают по сути кривые исходники, которые ещё нужно правильно скомпилировать, эта штука тянет за собой 27 метровую библиотеку (хотя на деле из неё нужны 4 файла) и требует патча jre! На официальном форуме было несколько топиков по этой проблеме, но готового решения ни в одном не было. В итоге пришлось провозиться 2 полных дня с этой ерундой, прежде чем получился рабочий вариант. Казалось бы крупная компания, а о своих клиентах-разработчиках совсем не заботится…
                0
                >иначе можно подделать форму и купить любой товар по кнопке buy it now за один цент)

                как пишут сотрудники пейпала, это «не проблема». Достаточно сверять атрибуты платежа и в случае подмены на стороне клиента запросить refund. На практике это, конечно, совершенно лишний геморрой.
                Вот что им мешало сделать хотя бы простенькое шифрование данных платежной формы на стороне мерчанта в виде md5 + закрытый ключ :(
                  0
                  За 2 дня сделали? Респект.

                  А вообще да — у Пейпала хватает косяков с документацией и исходниками. Тут они что-то лажают.
                  0
                  Мне больше понравились AdaptivePayments.
                    0
                    Кому интересно, кратко, коммент из paypal/api/adaptive.py:

                    PayPal Adaptive Payments API.

                    Links:
                    https://www.x.com/docs/DOC-1419 Preapproval API Operation
                    https://www.x.com/message/157029#157029 Preapproval approve by user
                    https://www.x.com/docs/DOC-1421 PreapprovalDetails API Operation
                    https://www.x.com/docs/DOC-1414 Pay API Operation

                    Manual:
                    For make preapproval payments we call `Preapproval API` and get preapprovalKey.
                    We redirect user to https://www.sandbox.paypal.com/webscr?cmd=_ap-preapproval&preapprovalkey={{ preapprovalKey }}

                    When we need to make pay, we get senderEmail by `PreapprovalDetails API` call. Then we call
                    `Pay API` whith preapprovalKey and senderEmail.
                      0
                      Индийские следы видны :)
                        0
                        Где? Мне не видны, API нормальный, хорошо оборачивается.
                    0
                    Спасибо, как раз скоро понадобится!
                      0
                      Пожалуйста. Как говорится — приходите ещё :)
                      0
                      Ну вот… после статьи, некоторые камни стали НАДВОДНЫМИ!
                        0
                        Ещё бы «Палки» можно было принимать в РФ. Вообще хорошо было…
                          0
                          JuliaTem, квест прошли и главное.
                            0
                            Я так понял эта услуга Recurring Payments доступна только для аккаунтов Payments Pro, а точнее только для USA?

                            Only users with full accounts can post comments. Log in, please.