繁体   English   中英

(更新)Laravel PUT方法不起作用

[英](Updated) Laravel PUT Method Not Working

  • 已更新-JSON文件将返回,但完全不会更改结算日期。

  • 参考1 :有关更改开票日期的官方文档。

  • Reference2 :详细的示例代码:

     <?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\"}}"

在里面添加了一些“ \\”。

谢谢大家的帮助,祝您有美好的一天!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM