0

我正在尝试使用 express-checkout (Payum/paypal-express-checkout-nvp) 创建一个经常性的配置文件。

如何从 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();

}

一个令牌似乎是用贝宝生成的,用户被重定向到贝宝(沙箱),一旦我登录确认协议,我收到一条通用错误消息(粗略翻译)“无法处理请求,请返回存储并选择另一个选项”。甚至没有错误代码...

有什么帮助吗?

4

1 回答 1

1

0.00 的初始付款可能失败,因此无法创建计费协议。这是一种您可以覆盖它并无论如何创建配置文件的方法。这直接来自 PayPal 文档:

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

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

如果您使用 Express Checkout 创建了配置文件,买家会收到一封电子邮件,说明 PayPal 已清除初始付款或取消了待处理的配置文件。

如果您需要,这是直接链接:

定期计费集成指南

于 2014-06-26T21:31:31.530 回答