2017-06-18 91 views
0
  • 已更新 - JSON文件将返回,但根本不会更改开票日期。(已更新)Laravel PUT方法不起作用

  • 参考文献1:关于changing the billing date的官方文档。

  • 定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(); 
} 
+1

尽我所能... – perror

回答

0

非常感谢大家帮助我。

我一直在处理这个问题2天,它应该是对我来说。最终,他们的API误导了我。

我们需要做的唯一的事情,仅仅是改变

'body' => "{\"subscription\":{\"next_billing_at\":\"$nextBilling\"}}" 

增加了几个 '\' S的内部。

谢谢大家帮助我,祝你有个美好的一天!

1

你正在建设的URL不正确。不应该有一个尝试改变逻辑,使狂饮这样调用/.json

之间$subscription

变化

$res = $client->put("https://$hostname/subscriptions/$subscriptionId/.json", 

$res = $client->put("https://$hostname/subscriptions/$subscriptionId.json", 

编辑

$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(); 
+0

谢谢你,我更新了问题,现在它根本无法工作(它会返回json文件,但根本没有更改订阅日期)。你能找我吗? – zhiyu

+0

尝试我的更新回答 – ayip

+0

不幸的是,虽然我得到了JSON文件,但开票日期仍然相同。这可能是JSON发回给我们的'身体'问题,我不能说如何。 – zhiyu