2016-09-09 3 views
0

Ich habe versucht, einen Abonnementplan auszuführen. Ich habe einen Roadblock in Form der Abrechnungsvereinbarung getroffen. Ich bekomme den folgenden Fehler beim Versuch, die Vereinbarung zu erstellen.Paypal Billing Agreement Invalid Plan Id PHP

{"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"} 

Ich bin nicht sicher, wo das Problem liegt, versucht die Set Vereinbarung Plan, um die ID zu Ausgabe zu zwingen selbst auch einen JSON Fehler verursacht und tut nichts produktiv. Wenn Sie mehr Informationen benötigen, zögern Sie nicht zu fragen.

$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); 

Antwort

1

Ich konnte dies beheben, indem Sie ein neues Planobjekt erstellen und die ID nur so auf den tatsächlichen Plan setzen.

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

$createdPlan ist der Plan Variable, die Sie in der $agreement Klasse übergeben müssen

$agreement->setPlan($createdPlan);