Создание платежного соглашения не может быть подтверждено клиентом Payum / paypal-express-checkout-nvp

#paypal #express-checkout #recurring #payum

#paypal #экспресс-оформление заказа #повторяющиеся #payum

Вопрос:

Я пытаюсь создать повторяющийся профиль с помощью express-checkout (Payum / paypal-express-checkout-nvp).

Как получить от Payum

 private function createAgreement(Purchase $purchase)
{
    $storage = $this->payum->getStorage('CoachupPaymentBundleEntityPaymentAgreement');

    $agreementDetails = $storage->createModel();
    $agreementDetails['L_BILLINGTYPE0'] = Api::BILLINGTYPE_RECURRING_PAYMENTS;
    $agreementDetails['L_BILLINGAGREEMENTDESCRIPTION0'] = 'test';
    $agreementDetails['PAYMENTREQUEST_0_AMT'] = 0;
    $agreementDetails->setPurchase($purchase);

    $storage->updateModel($agreementDetails);

    $captureToken = $this->securityTokenFactory->createCaptureToken(
        $this->paymentName,
        $agreementDetails,
        'payment_checkout_progress_payment',
        ['purchaseId' => $purchase->getId(), 'paymentType' => $this->getId()]
    );

    $agreementDetails['RETURNURL'] = $captureToken->getTargetUrl();
    $agreementDetails['CANCELURL'] = $captureToken->getTargetUrl();
    $storage->updateModel($agreementDetails);

    return $captureToken->getTargetUrl();

}
  

Похоже, что токен генерируется с помощью paypal, пользователь перенаправляется на paypal (песочница), и как только я вхожу в систему для подтверждения соглашения, я получаю общее сообщение об ошибке (в неточном переводе)
«Запрос не может быть обработан, пожалуйста, вернитесь в магазин и выберите другой вариант».
Нет даже кода ошибки…

Любая помощь?

Комментарии:

1. Я бы посоветовал вам посмотреть на sandbox.payum. forma-dev.com . вот пример повторяющегося платежа. Это написано на symfony2. Код можно найти здесь: github.com/Payum/PayumBundleSandbox/blob/master/src/Acme /…

2. при попытке настроить профиль с демонстрационной страницей я по-прежнему получаю ту же ошибку. Поэтому я предполагаю, что проблема может быть в моей учетной записи в изолированной среде. Личный / Проверенный (Premier) / CC и дебетовый / Достаточный баланс.

Ответ №1:

Возможно, что первоначальный платеж в размере 0,00 не выполняется, что приводит к тому, что платежное соглашение не создается. Вот способ, которым вы можете переопределить это и создать профиль в любом случае. Это происходит непосредственно из документации PayPal:

По умолчанию PayPal не активирует профиль, если не удается ввести сумму первоначального платежа. Чтобы переопределить это поведение по умолчанию, установите FAILEDINITAMTACTION для поля значение ContinueOnFailure . Если сумма первоначального платежа не указана, ContinueOnFailure PayPal дает указание добавить сумму несостоявшегося платежа к непогашенному остатку, подлежащему оплате в этом профиле повторяющихся платежей.

Если вы не задали FAILEDINITAMTACTION или не установили его CancelOnFailure , PayPal создаст профиль повторяющегося платежа. Однако PayPal переводит профиль в статус ожидания до завершения первоначального платежа. Если первоначальный платеж очищается, PayPal уведомляет вас мгновенным платежным уведомлением (IPN) о том, что он активировал ожидающий профиль. Если платеж не выполняется, PayPal уведомляет вас по IPN, что он отменил ожидающий профиль.

Если вы создали профиль с помощью Express Checkout, покупатель получит электронное письмо, в котором говорится, что PayPal очистил первоначальный платеж или отменил ожидающий профиль.

Вот прямая ссылка на случай, если она вам понадобится:

Руководство по интеграции регулярных выставлений счетов

Комментарии:

1. Спасибо за ваш ответ. Но это не решило проблему. Прямо сейчас я подозреваю, что проблема связана с моей учетной записью в песочнице, поскольку я получаю ту же ошибку при использовании payums demo sandbox. Учетная запись, которую я использую для оплаты, является личной, подтверждена банком, имеет действительный CC и баланс почти в 1000 долларов США.