#paypal #express-checkout #recurring #payum
#paypal #экспресс-оформление заказа #повторяющиеся #payum
Вопрос:
Я пытаюсь создать повторяющийся профиль с помощью express-checkout (Payum / paypal-express-checkout-nvp).
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 долларов США.