Php Payum捆绑包发送空付款-paypal接受:):(
我从这个示例中配置Bundle 当我转到/payment时,我被重定向到PayPal站点,但没有任何关于它的信息 有信息-你可以看到细节-但这不是真的-我接受付款(不知道价格和说明-付款成功 此捆绑包已准备好使用或处于工作阶段 配置:Php Payum捆绑包发送空付款-paypal接受:):(,php,symfony,paypal,payum,Php,Symfony,Paypal,Payum,我从这个示例中配置Bundle 当我转到/payment时,我被重定向到PayPal站点,但没有任何关于它的信息 有信息-你可以看到细节-但这不是真的-我接受付款(不知道价格和说明-付款成功 此捆绑包已准备好使用或处于工作阶段 配置: payum: security: token_storage: ed\partnerBundle\Entity\PayumSecurityToken: doctrine:
payum:
security:
token_storage:
ed\partnerBundle\Entity\PayumSecurityToken:
doctrine:
driver: orm
contexts:
frei_payment:
paypal_express_checkout_nvp:
api:
options:
username: 'myusername'
password: 'mypass'
signature: 'mysing'
sandbox: false
storages:
ed\partnerBundle\Entity\PaymentDetails:
doctrine:
driver: orm
路由:
payment_start:
pattern: /payment
defaults: { _controller: edpartnerBundle:Payment:preparePaypalExpressCheckoutPayment }
edpartner_payment_done:
pattern: /payment/done
defaults: { _controller: edpartnerBundle:Payment:done }
付款控制器中的操作:
public function doneAction(){
$request = $this->getRequest();
$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->getRequest()->getSession()->getFlashBag()->set(
'notice',
'Payment success. Credits were added'
);
} else if ($status->isPending()) {
$this->getRequest()->getSession()->getFlashBag()->set(
'notice',
'Payment is still pending. Credits were not added'
);
} else {
$this->getRequest()->getSession()->getFlashBag()->set('error', 'Payment failed');
}
return $this->redirect('homepage');
}
/**
*/
public function preparePaypalExpressCheckoutPaymentAction(){
$paymentName = 'my_payment';
$storage = $this->get('payum')->getStorageForClass(
'ed\partnerBundle\Entity\PaymentDetails',
$paymentName
);
/** @var \ed\partnerBundle\Entity\PaymentDetails $paymentDetails */
$paymentDetails = $storage->createModel();
$paymentDetails['PAYMENTREQUEST_0_CURRENCYCODE'] = 'USD';
$paymentDetails['PAYMENTREQUEST_0_AMT'] = 1.23;
$storage->updateModel($paymentDetails);
$captureToken = $this->get('payum.security.token_factory')->createCaptureToken(
$paymentName,
$paymentDetails,
'edpartner_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());
}
您描述的行为是可能的,这里有任何问题。要查看付款详细信息,您必须配置其他字段。ok now中有一个示例,它可以正常工作,但我在paypal中有。这几乎是您在网站上确认的最终付款…-但当我单击ok时-付款执行不要求确认?我的原因很奇怪你不要在手动页面上添加详细信息-我想任何人都想发送空支付…payum不抽象支付字段,所以你仍然需要了解paypal规范。这就是他们如何做到的。好的,我理解,但我认为在paypal集成示例中,你可以添加工作示例,不仅是部分工作。但感谢您提供了良好的库。公平地说,我问题似乎更多地出现在PayPal端,它允许此类数据通过。公平地说,Payum可以(也可能应该)在这之前处理事情,但PayPal应该用某种“无效字段”来回答在交易创建之前回复。请您解释一下您是如何将信息发送到PayPal的,因为我在同一点上被卡住了,无法理解答案。我将非常感激。