我正在尝试使用express-checkout (Payum/paypal-express-checkout-nvp)创建一个循环配置文件。
private function createAgreement(Purchase $purchase)
{
$storage = $this->payum->getStorage('Coachup\PaymentBundle\Entity\PaymentAgreement');
$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 (沙箱),一旦我登录确认协议,我就会收到一条通用的错误消息(粗略翻译)“该请求无法处理,请返回到商店并选择另一个选项”。甚至没有错误代码..。
有什么帮助吗?
发布于 2014-06-27 05:31:32
可能是0.00的初始付款失败,这使得它没有创建计费协议。这里有一种方法,你可以覆盖它并创建概要文件。这直接来自PayPal文档:
默认情况下,如果初始支付金额失败,PayPal不会激活配置文件。要覆盖此默认行为,请将FAILEDINITAMTACTION字段设置为ContinueOnFailure。如果初始付款金额失败,ContinueOnFailure会指示PayPal将失败的付款金额添加到此经常性付款配置文件上的未偿还余额中。
如果您未设置FAILEDINITAMTACTION或将其设置为CancelOnFailure,profile将创建经常性付款配置文件。但是,在初始付款完成之前,PayPal会将配置文件置于待定状态。如果初始付款被清除,PayPal将通过即时付款通知通知您它已激活挂起的配置文件。如果支付失败,PayPal会通过IPN通知您取消挂起的配置文件。
如果您使用快速结账创建了配置文件,买方会收到一封电子邮件,说明PayPal已清除初始付款或取消了待定配置文件。
以下是您需要的直接链接:
https://stackoverflow.com/questions/24433914
复制相似问题