API 2.0 Новая Почта

339
02 октября 2017, 02:30

При создании электронной накладной(ЭН) получаю две ошибки:

1) ContactSender not selected

2) Sender's contact person is not full! You must specify the Sender completely. This contact person will receive a money transfer.

Это происходит из-за того что я в запросе не передаю идентификатор контактов отправителя, по той причине что я не знаю откуда взять тот самый идентификатор.

Для работы я использую эту библиотеку.

Мой запрос:

    include "api2.php";
    $np = new Api2('мой ключ');
    $senderInfo = $np->getCounterparties('Sender', 1, '', '');
    $sender = $senderInfo['data'][0];
    $senderWarehouses = $np->getWarehouses($sender['City']);
    $result = $np->newInternetDocument([ // Данные отправителя
        'FirstName' => $sender['FirstName'],
        'MiddleName' => $sender['MiddleName'],
        'LastName' => $sender['LastName'],
        'Description' => $sender['Description'],
        'Phone' => '0487447747',
        'CitySender' => $sender['City'],
        'SenderAddress' => $senderWarehouses['data'][0]['Ref'],
        'ContactSender' => ??????????????????????
    ],
    [ // Данные получателя
        'FirstName' => 'Сидор',
        'MiddleName' => 'Сидорович',
        'LastName' => 'Сиродов',
        'Phone' => '0509998877',
        'City' => 'Киев',
        'Region' => 'Киевская',
        'Warehouse' => 'Отделение №3: ул. Калачевская, 13 (Старая Дарница)',
    ],
    [
        'DateTime' => date('d.m.Y'),
        'ServiceType' => 'WarehouseWarehouse',
        'PaymentMethod' => 'Cash',
        'PayerType' => 'Recipient',
        'Cost' => '500',
        'SeatsAmount' => '1',
        'Description' => 'Кастрюля',
        'CargoType' => 'Cargo',
        'Weight' => '10',
        'VolumeGeneral' => '0.5',
        'BackwardDeliveryData' => [
            [
                'PayerType' => 'Recipient',
                'CargoType' => 'Money',
                'RedeliveryString' => 4552,
            ]
        ]
    ]
);

Ну и сам вопрос, как получить идентификатор контактов отправителя?

Answer 1
$senderCounterpartyExisting = $this->getCounterparties('Sender', 1, $sender['Description'], $sender['CityRef']);
if ($senderCounterpartyExisting['data'][0]['Ref']) {
    $sender['Sender'] = $senderCounterpartyExisting['data'][0]['Ref'];
    $contactSender = $this->getCounterpartyContactPersons($sender['Sender']);
    $contactSender = $contactSender['data'][0]['Ref'];
}

Источник

Answer 2

Решение состоит из двух шагов:

1) Прописать код для того чтобы получить идентификатор контакта

    $senderCounterpartyExisting = $this->getCounterparties('Sender', 1, $sender['Description'], $sender['CityRef']);
    if ($senderCounterpartyExisting['data'][0]['Ref']) {
        $sender['Sender'] = $senderCounterpartyExisting['data'][0]['Ref'];
        $contactSender = $this->getCounterpartyContactPersons($sender['Sender']);
        $contactSender = $contactSender['data'][0]['Ref'];
    }

2) Создать контрагента на сайте Новой Почты в разделе Настройки > Контрагенты

READ ALSO
Кириллица fgets() PHP

Кириллица fgets() PHP

Не могу разобраться с кодировкойДанная функция выполняется, и просит запрос ввода

263
GLFW - cannot find -lglfw

GLFW - cannot find -lglfw

Подключил glfw к Code::Blocks , пишет cannot find -lglfw3 причем dll в папке lib-mingw есть

185