我正在尝试使用快速结账(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(沙盒),一旦我登录确认协议,我得到一般错误消息(松散翻译) “请求无法处理,请返回商店并选择其他选项”。 甚至没有错误代码...
任何帮助?
答案 0 :(得分:1)
可能是0.00的初始付款失败,这使得未创建结算协议。这是一种方法,您可以覆盖它并始终创建配置文件。这直接来自PayPal文档:
默认情况下,如果初始付款金额失败,PayPal不会激活配置文件。要覆盖此默认行为,请将FAILEDINITAMTACTION
字段设置为ContinueOnFailure
。如果初始付款金额失败,ContinueOnFailure
会指示PayPal将失败的付款金额添加到此定期付款资料中的未付余额中。
如果您未设置FAILEDINITAMTACTION
或将其设置为CancelOnFailure
,则PayPal会创建定期付款资料。但是,PayPal会将配置文件置于待处理状态,直到初始付款完成。如果初始付款清除,PayPal会通过即时付款通知(IPN)通知您已激活待处理的个人资料。如果付款失败,PayPal会通过IPN通知您已取消待处理的个人资料。
如果您使用快速结帐创建了个人资料,则买家会收到一封电子邮件,说明PayPal已清除初始付款或已取消待处理的个人资料。
以下是您需要时的直接链接: