Я пытаюсь отправить заказ на продажу из woocommerce на внешний API. Мне удалось POST запрос json и я вижу, что он прибывает, но я не могу получить правильную структуру, поэтому API принимает запрос.
Запрос json должен быть структурирован, как показано ниже
{
"customer": "",
"delivery_instructions": "",
"delivery_address": {
"address1": "",
"address2": ""},
"payment": {
"method": "",
"transaction_id": "",
"amount": ""},
"info": [
{
"type": "",
"code": "",
"quantity": ""}
]
}
У меня проблемы с форматированием, это то, что PHP отправляет запрос в API, потому что мне не хватает квадратных скобок вокруг информационного массива.
Это мой текущий PHP:
// The data to send to the API
$postData = [
'customer' => '',
'delivery_instructions' => '',
'delivery_address' => [
'address1' => '',
'address2' => ''
],
'payment' => [
'method' => 'PP',
'transaction_id' => '',
'amount' => ''
],
'info' => [
'type' => '',
'item_code' => '',
'quantity' => ''
],
];
Но когда я POST это результат
{
"customer": "",
"delivery_instructions": "",
"delivery_address": {
"address1": "",
"address2": ""},
"payment": {
"method": "",
"transaction_id": "",
"amount": ""},
"info": {
"type": "",
"code": "",
"quantity": ""}
}
Любое руководство будет с благодарностью.
<?php
$postData = [
'customer' => '',
'delivery_instructions' => '',
'delivery_address' => [
'address1' => '',
'address2' => ''
],
'payment' => [
'method' => 'PP',
'transaction_id' => '',
'amount' => ''
],
'info' => [
'type' => '',
'item_code' => '',
'quantity' => ''
],
];$val = array();
$val["type"] = '';
$val["item_code"] = '';
$val["quantity"] = '';
$data = array();
$data['info'][] = $val;
//echo json_encode($data);
$myvalues = array_merge($postData,$data);
echo '<pre>';
echo json_encode($myvalues);
echo '</pre>';
?>
{
"customer":"",
"delivery_instructions":"",
"delivery_address":{
"address1":"",
"address2":""},
"payment":{
"method":"PP",
"transaction_id":"",
"amount":""},
"info":[
{
"type":"",
"item_code":"",
"quantity":""}
]
}
НОТА: Здесь я просто создаю один массив данных массива данных, а затем это вывод слиться с нашим на самом деле
postData
массив, а затем эхо ..
Я предлагаю вам эту структуру:
$postData = new stdClass;
$postData->customer = '';
$postData->delivery_instructions = '';
$postData->delivery_address = (object)array('address1' => '', 'address2' => '');
$postData->payment = (object)array('method' => '', 'transaction_id' => '', 'amount' => '');
$postData->info = array( (object)array('type' => '', 'code' => '', 'quantity' => '') );
print_r( json_encode($postData) );
В Php, JSON данные приближенного массива данных