我正在尝试使用快速结帐 (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();
}
token 似乎是通过 paypal 生成的,用户被重定向到 paypal(沙盒),一旦我登录以确认协议(protocol),我就会收到一条通用错误消息(粗略翻译) “无法处理请求,请返回商店并选择其他选项”。 甚至没有错误代码...
有什么帮助吗?
最佳答案
可能是 0.00 的初始付款失败,导致无法创建计费协议(protocol)。这是一种您可以覆盖它并创建配置文件的方法。这直接来自 PayPal 文档:
默认情况下,如果初始付款金额失败,PayPal 不会激活配置文件。要覆盖此默认行为,请将 FAILEDINITAMTACTION
字段设置为 ContinueOnFailure
。如果初始付款金额失败,ContinueOnFailure
指示 PayPal 将失败的付款金额添加到此定期付款配置文件的未结余额中。
如果您没有设置 FAILEDINITAMTACTION
或将其设置为 CancelOnFailure
,PayPal 会创建定期付款配置文件。但是,PayPal 会将配置文件置于待处理状态,直到初始付款完成。如果初始付款结清,PayPal 会通过即时付款通知 (IPN) 通知您它已激活待定配置文件。如果付款失败,PayPal 会通过 IPN 通知您它已取消待定配置文件。
如果您使用 Express Checkout 创建配置文件,买家会收到一封电子邮件,说明 PayPal 已结清初始付款或取消待定配置文件。
如果您需要,这里是直接链接:
关于paypal - 客户 Payum/paypal-express-checkout-nvp 无法确认创建结算协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433914/