gpt4 book ai didi

php - symfony2 payum paypal express 简单结账

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:23 25 4
gpt4 key购买 nike

我是 Payum 的新手。很多事情让我很困惑。我正在尝试建立一个简单的 Paypal 快速结账,就像 Payum 上的示例所示 document .但是,当我尝试处理付款时,出现异常:

“名为 my_paypal_express_checkout 的 Payum 付款不存在。500 内部服务器错误 - InvalidArgumentException”

配置如下:

payum:
security:
token_storage:
Acme\PaymentBundle\Entity\PayumSecurityToken:
doctrine:
driver: orm
storages:
Acme\PaymentBundle\Entity\PaymentDetails:
doctrine:
driver: orm

contexts:
Ibase_paypal_express:
paypal_express_checkout_nvp:
...codes...

Controller 中prepare和done action的代码如下:

public function preparePaypalAction(Request $request)
{
$paymentName = 'ibase_paypal_express_checkout';

$form = $this->createPurchaseForm();
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData();

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

/** @var \Ibase\CartBundle\Entity\PaymentDetails $paymentDetails */
$paymentDetails = $storage->createModel();
$paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = $data['currency'];
$paymentDetails['PAYMENTREQUEST_0_AMT'] = $data['amount'];//total amount ??
$storage->updateModel($paymentDetails);

$captureToken = $this->get('payum.security.token_factory')->createCaptureToken(
$paymentName,
$paymentDetails,
'payment_done' // the route to redirect after capture;
);

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

return $this->redirect($captureToken->getTargetUrl());
}
return $this->render('PaymentBundle:PaypalExpress:paypalPrepare.html.twig', array(
'form' => $form->createView(),
'paymentName' => $paymentName
));
}

public function doneAction(Request $request)
{
$token = $this->get('payum.security.http_request_verifier')->verify($request);

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

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

if ($status->isSuccess()) {
$this->getUser()->addCredits(100);
$this->get('session')->getFlashBag()->set(
'notice',
'Payment success. Credits were added'
);
} else if ($status->isPending()) {
$this->get('session')->getFlashBag()->set(
'notice',
'Payment is still pending. Credits were not added'
);
} else {
$this->get('session')->getFlashBag()->set('error', 'Payment failed');
}

return $this->redirect('home');
}

/**
* @return \Symfony\Component\Form\Form
*/
protected function createPurchaseForm()
{
return $this->createFormBuilder()
->add('amount', null, array(
'data' => 1,
'constraints' => array(new Range(array('max' => 2)))
))
->add('currency', null, array('data' => 'AUD'))
->getForm()
;
}

任何人都可以提供帮助,我们将不胜感激!

最佳答案

查看你的YML文件

contexts:
Ibase_paypal_express:

和你的代码:

$paymentName = 'ibase_paypal_express_checkout';

注意到大写的“I”和字符串名称了吗?这两个名称/值应该相同。所以要么

$paymentName = 'Ibase_paypal_express'; 

contexts:
ibase_paypal_express_checkout:

关于php - symfony2 payum paypal express 简单结账,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25132330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com