根据SAGE API 3.1 manual,要创建发票,您必须传递以下信息:
POST /sales_invoices
Content-Type: application/json
Accept: */*
{
"sales_invoice": {
"contact_id": "14d93840783b11e8990a122c8428e4b2",
"date": "2018-06-24",
"invoice_lines": [
{
"description": "A Minimal Invoice Item",
"ledger_account_id": "4195173e75db11e8990a122c8428e4b2",
"quantity": "1",
"unit_price": "0.99",
"tax_rate_id": "584793ca75db11e8990a122c8428e4b2"
}
]
}
}
好吧,在我的代码上
$client = new Client();
$endpoint = $this->endpoint.'/'.$this->action; // https://api.accounting.sage.com/v3.1/sales_invoices
$response = $client->post($endpoint, [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$this->token // My token valid
],
'form_params' => $this->params
]);
我的参数
"sales_invoice" => array:3 [
"contact_id" => "a39b46d1cb8a4f5a9048c32f7895147c"
"date" => "2018-03-04"
"invoice_lines" => array:1 [
0 => array:5 [
"description" => "Factura creada por error"
"ledger_account_id" => "49131457ee4f11e8ae720268dc652fba"
"quantity" => "1"
"unit_price" => "0"
"tax_rate_id" => "ES_EXEMPT"
]
]
]
]
并且Guzzle扩展错误显示了sales_invoice[invoice_lines]
中缺少值的问题。
[{
"$severity": "error",
"$dataCode": "Validation",
"$message": "sales_invoice[invoice_lines] is invalid",
"$source": "sales_invoice[invoice_lines]"
}, {
"$severity": "error",
"$dataCode": "Validation",
"$message": "sales_invoice[invoice_lines] is invalid",
"$source": "sales_invoice[invoice_lines]"
}, {
"$severity": "error",
"$dataCode": "Validation",
"$message": "sales_invoice[invoice_lines] is invalid",
"$source": "sales_invoice[invoice_lines]"
}, {
"$severity": "error",
"$dataCode": "Validation",
"$message": "sales_invoice[invoice_lines][0][description] is missing",
"$source": "sales_invoice[invoice_lines][0][description]"
}, {
"$severity": "error",
"$dataCode": "Validation",
"$message": "sales_invoice[invoice_lines][0][ledger_account_id] is missing",
"$source": "sales_invoice[invoice_lines][0][ledger_account_id]"
}, {
"$severity": "error",
"$dataCode": "Validation",
"$message": "sales_invoice[invoice_lines][0][unit_price] is missing",
"$source": "sales_invoice[invoice_lines][0][unit_price]"
}]
此代码有什么问题?
答案 0 :(得分:0)
与其通过form_params
发送,而不是通过json
发送有效载荷:
$response = $client->post($endpoint, [
'headers' => [
'Authorization' => 'Bearer '.$this->token // My token valid
],
'json' => $this->params
]);
内容类型标头
application/json
是自动添加的。