Paypal 账单协议无效的计划 ID PHP

Posted

技术标签:

【中文标题】Paypal 账单协议无效的计划 ID PHP【英文标题】:Paypal Billing Agreement Invalid Plan Id PHP 【发布时间】:2017-01-18 00:47:41 【问题描述】:

我一直在尝试执行订阅计划。我遇到了账单协议形式的障碍。尝试创建协议时,我不断收到以下错误。

"name":"VALIDATION_ERROR","details":["field":"plan","issue":"Invalid Fields passed in plan. Pass only a valid plan-id."],"message":"Invalid request. See details.","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#VALIDATION_ERROR"

我不确定问题出在哪里,试图强制协议的既定计划输出 id 本身也会导致 JSON 错误并且没有任何效果。 如果您需要更多信息,请随时询问。

$createdPlan = $startPlan->create($paypal);

$patch = new Patch();
$value = new PayPalModel('
    "state":"ACTIVE"
');
$patch->setOp('replace')
    ->setPath('/')
    ->setValue($value);
$patchRequest = new PatchRequest();
$patchRequest->addPatch($patch);
$createdPlan->update($patchRequest, $paypal);
$plan = Plan::get($createdPlan->getId(), $paypal);


$agreement = new Agreement();
$agreement->setName($product . ' Agreement')
    ->setDescription('Recurring Payment')
    ->setStartDate(date(c, time()+4));

$agreement->setPlan($plan);

$payer = new Payer();
$payer->setPaymentMethod('paypal');

$agreement->setPayer($payer);
$agreement->create($paypal);

【问题讨论】:

【参考方案1】:

我可以通过创建一个新的计划对象并仅将 id 设置为实际计划来解决此问题。

$jsonplan = new Plan();
$jsonplan->setId($createdPlan->getId());
$agreement->setPlan($jsonplan);

【讨论】:

【参考方案2】:

$createdPlan$agreement类中需要传入的计划变量

$agreement->setPlan($createdPlan);

【讨论】:

以上是关于Paypal 账单协议无效的计划 ID PHP的主要内容,如果未能解决你的问题,请参考以下文章

我需要执行一次我的 PayPal 账单协议,还是每次账单到期时执行

与 Paypal 的 PHP REST SDK 的支付协议

为通过 API 创建的 PayPal 账单协议设置自定义值

如何获取某个计费协议的计费计划的 ID?

带有更多非定期参考交易的 PayPal 账单协议

Paypal 订阅(具有多个付款计划的付款协议)