обновлено – файл JSON вернется, но он не изменит дату выставления счетов.
Ссылка 1 : Официальная документация об изменении даты выставления счета .
Ссылка2 : их примерный код в деталях:
<?php $request = new HttpRequest(); $request->setUrl('https://domain.chargify.com/subscriptions/$subscriptionId.json'); $request->setMethod(HTTP_METH_PUT); $request->setHeaders(array( 'authorization' => 'Basic YXBpa2V5Og==', 'content-type' => 'application/json' )); $request->setBody('{"subscription":{"next_billing_at":"2028-12-15"}}'); try { $response = $request->send(); echo $response->getBody(); } catch (HttpException $ex) { echo $ex; }
Мой код в деталях:
public function changeYearlySubscriptionBillingDate(Request $request) { $user = $request->user(); $subscriptionId = $user->subscription->subscription_id; $nextBilling = Carbon::now()->addYear(); $hostname = env('CHARGIFY_HOSTNAME'); $headers = [ 'authorization' => 'Basic ANIDIANDIAJIJCQ', 'content-type' => 'application/json' ]; $body = ["subscription" => ["next_billing_at" =>[ $nextBilling ]]]; $config = [ 'headers' => $headers, 'form_param' => $body ]; $client = new Client($config); $res = $client->put("https://$hostname/subscriptions/$subscriptionId.json", ["json" => [ [ "subscription" => [ "next_billing_at" => $nextBilling ] ] ] ]); echo $res->getBody(); }
Строка, которую вы строите, неверна. Не должно быть между $subscription
и .json
+ Изменить
$res = $client->put("https://$hostname/subscriptions/$subscriptionId/.json",
в
$res = $client->put("https://$hostname/subscriptions/$subscriptionId.json",
РЕДАКТИРОВАТЬ
Попробуйте изменить логику, чтобы Guzzle вызывал это.
$headers = [ 'authorization' => 'Basic ANIDIANDIAJIJCQ', 'content-type' => 'application/json' ]; $body = ["subscription" => ["next_billing_at" =>[ $nextBilling ]]]; $client = new Client(); $res = $client->put("https://$hostname/subscriptions/$subscriptionId.json", [ 'headers' => $headers, 'body' => json_encode($body) ] ); echo $res->getBody()->getContents();
Спасибо всем за то, что помогли мне.
Я работаю над этой проблемой в течение 2 дней, и это должно было быть правильным для меня. В конце концов, это их API ввел меня в заблуждение.
единственное, что нам нужно сделать, это просто изменить
'body' => "{\"subscription\":{\"next_billing_at\":\"$nextBilling\"}}"
добавил несколько «внутри».
Спасибо всем за то, что помогли мне, хорошо провели день!