Невозможно отправить платеж в PayPal с помощью Symfony

Я использую Symfony и пытаюсь отправить платежную информацию в PayPal, используя PayumBundle, Я настроил PayumBundle и работал до тех пор, пока меня не перенаправили на PayPal, но никакие реквизиты для платежа не отправлялись, поэтому я искал онлайн и наткнулся на этот вопрос в SO, и это точно пустой информационный экран, который я вижу.

Глядя на документацию, на которую указывает ответ, я нашел следующий фрагмент кода, но когда я пытаюсь получить доступ к маршруту, который вызывает следующее prepare Действие. Я сталкиваюсь с ошибкой

public function prepareAction(Request $request)
{
$paymentName = 'paypal';

$storage = $this->getPayum()->getStorage('ClickTeck\featuresBundle\Entity\Orders');

/** @var \ClickTeck\featuresBundle\Entity\Orders $paymentDetails */
$paymentDetails = $storage->create();
$paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD';
$paymentDetails['PAYMENTREQUEST_0_AMT'] = 1500;
$storage->update($paymentDetails);

$notifyToken = $this->getTokenFactory()->createNotifyToken($paymentName, $paymentDetails);
$captureToken = $this->getTokenFactory()->createCaptureToken(
$paymentName,
$paymentDetails,
'payment_done'
);

$paymentDetails['PAYMENTREQUEST_0_NOTIFYURL'] = $notifyToken->getTargetUrl();
$paymentDetails['INVNUM'] = $paymentDetails->getId();
$storage->update($paymentDetails);
return $this->redirect($captureToken->getTargetUrl());

}

Error: Cannot use object of type ClickTeck\featuresBundle\Entity\Orders as array

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

$paymentDetails->PAYMENTREQUEST_0_CURRENCYCODE = 'USD';
$paymentDetails->PAYMENTREQUEST_0_AMT = 1500;

This transaction cannot be processed. The amount to be charged is zero

Вот так мой Order Сущность выглядит как

<?php

namespace ClickTeck\featuresBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Payum\Core\Model\Order as BaseOrder;/**
* Orders
*/
class Orders extends BaseOrder
{
/**
* @var integer
*/
protected $id;/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}

Может кто-нибудь, пожалуйста, помогите мне узнать, что это происходит? Уже 2 дня я пытаюсь заставить PayumBundle работать.

Я буду очень признателен за любую помощь в этом. Как отправить платежные реквизиты в PayPal?

0

Решение

Немного теории:

Вы перепутали разные способы использования Payum. Первый полностью пользовательский (другими словами, формат оплаты). В этом случае вы можете использовать все, что реализует интерфейс \ ArrayAccess. Имена полей и их значения выглядят так же, как в документах Paypal.

Другой способ — тонкий слой поверх первого, который добавляет объединение. Здесь вы должны использовать модель заказа и заполнить ее, используя доступные сеттеры. Вы все еще можете добавить некоторые конкретные поля, используя метод setDetails.

Есть третий способ: используйте свою собственную модель (Order \ Invoice \ Payment, которую вы называете) и обеспечьте интеграцию внутри Payum.

Теперь ответ:

Как это \ClickTeck\featuresBundle\Entity\Orders модель выглядит? Вы реализуете OrderInterface или расширяете ArrayObject из Payum? Я думаю, первый. Если вы хотите использовать полностью настраиваемое решение, расширьте ArrayObject и используйте его как массив. Если вам нужен унифицированный вариант (в будущем вы собираетесь перейти на другой платеж), перейдите с Заказом

0

Другие решения

Как и требовалось, вот простой пример построения кнопки «Купить сейчас» в шаблон веточки:

{# buynow.html.twig #}
<script
data-tax="0"data-shipping="0"data-amount="{{ total }}"data-quantity="1"data-name="Player Registration {{ playDate ~ ' ' ~ player.nameLastPlayer ~ ', ' ~ player.nameFirstPlayer }} {{ player.initialPlayer }}"data-button="buynow"data-custom="My custom information"src="{{  asset('bundles/ceradteam/js/paypal-button.min.js') }}?merchant=MYMERCHANTID"></script>

Контроллер проходит в общей сумме. Вам нужно будет установить свой идентификатор продавца.

Paypal-button.min.js — это файл java-скрипта, созданный сайтом разработки PayPal. Прошло некоторое время с тех пор, как я сделал мой, но это должно быть прямо вперед. И это все, что вам нужно для простой оплаты.

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

0

По вопросам рекламы [email protected]