У меня проблемы с настройкой Securepay через Ominpay, Payum и Symfony

В настоящее время у меня PayPal работает нормально через Payum в Symfony2 и сейчас пытаюсь настроить SecurePay (через Omnipay), однако, похоже, что он даже не подключается к SecurePay, и нет документации для его поддержки, поэтому я очень застрял.

В логах не видно никаких внешних связей. В SecurePay нет записи о моем платеже.

Заранее большое спасибо за любую помощь,

Дэн

Вот пример записи базы данных payment_order:

{"amount":45,"currency":"AUD","description":"Payment for #96","clientIp":"127.0.0.1","card":{},"_reference":null,"_status":"failed","_status_code":null,"_status_message":null}

Вот моя конфигурация:

payum:
security:
token_storage:
XX\PaymentBundle\Entity\PaymentToken: { doctrine: orm }
storages:
XX\PaymentBundle\Entity\Order: { doctrine: orm }
contexts:
SecurePay_DirectPost:
omnipay:
type: 'SecurePay_DirectPost'
options:
merchantId: ABC0001
transactionPassword: abc123
testMode: true

И мой метод захвата:

 /**
* @Route("/{id}/cardcapture", name = "card_payment_capture")
* @Template()
*/
public function captureSecurePayAction(Collection $collection) {

$paymentName = 'SecurePay_DirectPost';

$storage = $this->get('payum')->getStorage('XX\PaymentBundle\Entity\Order');

$order = $storage->createModel();
$paymentDetails['amount'] = 10;
$paymentDetails['card'] = new SensitiveValue(array(
'number' => $_POST['card-number'],
'cvv' => $_POST['cvv'],
'expiryMonth' => $_POST['exp-month'],
'expiryYear' => $_POST['exp-year'],
'firstName' => $_POST['card-name'],
'lastName' => '',
));

$order->setNumber($collection->getId());
$order->setCurrencyCode('AUD');
$order->setTotalAmount($collection->getAmount()."00");
$order->setDescription('Payment for #' . $collection->getId());
$order->setClientId($collection->getId());
$order->setClientEmail($collection->getEmail());
$storage->updateModel($order);

$captureToken = $this->get('payum.security.token_factory')->createCaptureToken(
$paymentName,
$order,
'payment_complete'
);

return $this->redirect($captureToken->getTargetUrl());
}

И наконец моё полное действие:

  /**
* @Route("/complete", name = "payment_complete")
* @Template()
*/
public function completeAction()
{
$token = $this->get('payum.security.http_request_verifier')->verify($this->request);

$payment = $this->get('payum')->getPayment($token->getPaymentName());

$payment->execute($status = new GetHumanStatus($token));

$model = $status->getModel();
$id = explode("#", $model['description']);

$collection = $this->em->getRepository('XXCollectionBundle:Collection')->find($id[1]);

if ($status->isCaptured()) {
$collection->setStatus("PAID");
$collection->setAmountPaid($model['PAYMENTREQUEST_0_AMT']);
$collection->setIsActive(true);

} else if ($status->isPending()) {
$collection->setStatus("PAYMENT PENDING");

} else {
$collection->setStatus("PAYMENT FAILED");
}

$this->em->persist($collection);
$this->em->flush();

$this->sendReceiptEmail($collection, $status);

return array(
'status' => $status,
'collection' => $collection
);
}

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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