UPS ShipmentRequest API JSON Уведомление о доставке в точку доступа

На данный момент я в растерянности, пытаюсь добавить возможность отправки посылки на точку доступа UPS, в документации написано, что нужно добавить объект уведомления для UAP (013) и для ADL (012)

Когда я читаю документацию, объект уведомления разрешается максимум 3 раза, обычно в xml это выглядит так:

<ShipmentServiceOptions>
  <Notification>
    <NotificationCode>012</NotificationCode>
    some other values ( here..)
  </Notification>
      <Notification>
    <NotificationCode>013</NotificationCode>
    some other values ( here..)
  </Notification>
</ShipmentServiceOptions>

Но так как я использую JSON, я создаю массив объектов:

$Shipment['ShipmentServiceOptions']['Notification'][] = ['NotificationCode' => '012'];
$Shipment['ShipmentServiceOptions']['Notification'][] = ['NotificationCode' => '013'];

когда я json декодирую этот полный массив, он будет выглядеть так:

{
"Notification": [{
    "NotificationCode": "013",
    "EmailMessage": {
        "EMailAddress": "[email protected]",
        "UndeliverableEMailAddr": "[email protected]",
        "FromEMailAddress ": "[email protected]",
        "FromName": "From Email"
    },
    "Locale": {
        "Language": "ENG",
        "Dialect": "US"
    }
}, {
    "NotificationCode": "012",
    "EmailMessage": {
        "EMailAddress": "[email protected]",
        "UndeliverableEMailAddr": "[email protected]",
        "FromEMailAddress ": "From Email",
        "FromName": "From Name"
    },
    "Locale": {
        "Language": "ENG",
        "Dialect": "US"
    }
}]

}

Это допустимый объект json, но по какой-то причине я продолжаю получать сообщение об ошибке:

Код уведомления ADL (012) и данные уведомления (электронная почта или номер телефона) необходимы для удержания при получении в точке доставки.

Когда я переверну значения массива, я получу ошибку:

Код уведомления отправителя UAP (013) и данные уведомления (адрес электронной почты или номер телефона) необходимы для доставки через точку доступа UPS.

Мне кажется, что из массива считывается только 1 значение, и чтение документации заставляет меня поверить, что ожидается несколько ключей уведомлений, но я действительно понятия не имею, как добавить несколько ключей уведомлений в json, что сделало бы недействительным json объект. Любая помощь будет принята с благодарностью

Редактировать

когда я конвертирую объект JSON, чтобы он выглядел так:

"ShipmentServiceOptions": [{
            "Notification": {
                "NotificationCode": "013",
                "EmailMessage": {
                    "EMailAddress": "[email protected]",
                    "UndeliverableEMailAddr": "[email protected]",
                    "FromEMailAddress ": "fromemail",
                    "FromName": "From Name"
                },
                "Locale": {
                    "Language": "ENG",
                    "Dialect": "US"
                }
            }
        }, {
            "Notification": {
                "NotificationCode": "012",
                "EmailMessage": {
                    "EMailAddress": "[email protected]",
                    "UndeliverableEMailAddr": "[email protected]",
                    "FromEMailAddress ": "fromemail",
                    "FromName": "From Name"
                },
                "Locale": {
                    "Language": "ENG",
                    "Dialect": "US"
                }
            }
        }],

Это дает мне эту ошибку:

Код уведомления ADL (012) и данные уведомления (электронная почта или номер телефона) необходимы для удержания при получении в точке доставки.

Замена элементов не изменяет ошибку


person Thomas Lang    schedule 06.12.2017    source источник


Ответы (1)


Я знал, что это будет что-то простое, если что-то требует больше часа, чтобы исправить, вы знаете, что это просто ;-)

Я поменял документацию xml на документацию веб-сервиса, в xml называется узел, в который добавляются данные электронной почты с уведомлением:

/ShipmentConfirmRequest/Shipment/ShipmentServiceOptions/Notification/EMailMessage/

В документации JSON тот же узел, который содержит почтовые данные, называется:

/ShipmentConfirmRequest/Shipment/ShipmentServiceOptions/Notification/EMail/

Для полноты это правильная часть json для объекта уведомления:

{
"Notification": [{
    "NotificationCode": "013",
    "EMail": {
        "EMailAddress": "[email protected]",
        "UndeliverableEMailAddr": "[email protected]",
        "FromEMailAddress ": "fromemail",
        "FromName": "fromemail"
    },
    "Locale": {
        "Language": "ENG",
        "Dialect": "US"
    }
}, {
    "NotificationCode": "012",
    "EMail": {
        "EMailAddress": "[email protected]",
        "UndeliverableEMailAddr": "[email protected]",
        "FromEMailAddress ": "fromname",
        "FromName": "From Name"
    },
    "Locale": {
        "Language": "ENG",
        "Dialect": "US"
    }
}]

}

person Thomas Lang    schedule 06.12.2017