客户Payum / paypal-express-checkout-nvp无法确认结算协议的创建

时间:2014-06-26 15:00:51

标签: paypal express-checkout recurring payum

我正在尝试使用快速结账(Payum / paypal-express-checkout-nvp)创建定期个人资料。

Howto from Payum

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(沙盒),一旦我登录确认协议,我得到一般错误消息(松散翻译) “请求无法处理,请返回商店并选择其他选项”。 甚至没有错误代码...

任何帮助?

1 个答案:

答案 0 :(得分:1)

可能是0.00的初始付款失败,这使得未创建结算协议。这是一种方法,您可以覆盖它并始终创建配置文件。这直接来自PayPal文档:

默认情况下,如果初始付款金额失败,PayPal不会激活配置文件。要覆盖此默认行为,请将FAILEDINITAMTACTION字段设置为ContinueOnFailure。如果初始付款金额失败,ContinueOnFailure会指示PayPal将失败的付款金额添加到此定期付款资料中的未付余额中。

如果您未设置FAILEDINITAMTACTION或将其设置为CancelOnFailure,则PayPal会创建定期付款资料。但是,PayPal会将配置文件置于待处理状态,直到初始付款完成。如果初始付款清除,PayPal会通过即时付款通知(IPN)通知您已激活待处理的个人资料。如果付款失败,PayPal会通过IPN通知您已取消待处理的个人资料。

如果您使用快速结帐创建了个人资料,则买家会收到一封电子邮件,说明PayPal已清除初始付款或已取消待处理的个人资料。

以下是您需要时的直接链接:

Recurring Billing Integration Guide