Блог Горошко Андрея 1C-Битрикс,Bitrix24 Добавить оплату sale.payment.add

Добавить оплату sale.payment.add

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Добавить оплату sale.payment.add», разберем архитектурные особенности и предоставим готовые к интеграции примеры кода.

Добавить оплату sale.payment.add

> Scope: sale
>
> Кто может выполнять метод: администратор

Метод добавляет новую оплату.

Параметры метода

Название
тип
Описание
fields
object
Значения полей (подробное описание приведено ниже) для создания оплаты в виде структуры:

fields: {
    orderId: "значение",
    paySystemId: "значение",
    paid: "значение",
    datePaid: "значение",
    empPaidId: "значение",
    psStatus: "значение",
    psStatusCode: "значение",
    psStatusDescription: "значение",
    psStatusMessage: "значение",
    psSum: "значение",
    psCurrency: "значение",
    psResponseDate: "значение",
    payVoucherNum: "значение",
    payVoucherDate: "значение",
    datePayBefore: "значение",
    dateBill: "значение",
    xmlId: "значение",
    sum: "значение",
    companyId: "значение",
    payReturnNum: "значение",
    priceCod: "значение",
    payReturnDate: "значение",
    empReturnId: "значение",
    payReturnComment: "значение",
    responsibleId: "значение",
    empResponsibleId: "значение",
    isReturn: "значение",
    comments: "значение",
    updated1c: "значение",
    id1c: "значение",
    version1c: "значение",
    externalPayment: "значение",
    psInvoiceId: "значение",
    marked: "значение",
    reasonMarked: "значение",
    empMarkedId: "значение",
}

Параметр fields

Название
тип
Описание
orderId
sale_order.id
Идентификатор заказа
paySystemId*
sale_paysystem.id
Идентификатор платежной системы
paid
string
Оплата оплачена:

— Y — да
— N — нет

По умолчанию устанавливается N

datePaid
datetime
Дата оплаты
empPaidId
user.id
Идентификатор пользователя, который оплатил оплату
psStatus
string
Флаг статуса платежной системы — успешно ли оплачена оплата. Варианты:

— Y — да
— N — нет

По умолчанию устанавливается null

psStatusCode
string
Код статуса платёжной системы
psStatusDescription
string
Описание результата работы платежной системы
psStatusMessage
string
Сообщение от платежной системы
psSum
double
Сумма платежной системы
psCurrency
string
Валюта платежной системы
psResponseDate
datetime
Дата ответа платежной системы
payVoucherNum
string
Номер платежного документа
payVoucherDate
datetime
Дата платежного документа
datePayBefore
datetime
Устаревший.
Дата, по которой необходимо оплатить счет
dateBill
datetime
Дата выставления счета
xmlId
string
Внешний идентификатор
sum
double
Сумма оплаты
companyId
integer
Идентификатор компании, которая будет принимать оплату

В настоящий момент не используется

payReturnNum
string
Номер документа возврата
priceCod
double
Актуально только для коробочной версии
Стоимость оплаты при доставке. Используется для наложенного платежа
payReturnDate
date
Дата документа возврата
empReturnId
user.id
Идентификатор пользователя, который выполнял возврат
payReturnComment
string
Комментарий к возврату
responsibleId
user.id
Идентификатор пользователя, ответственного за оплату
empResponsibleId
user.id
Идентификатор пользователя, назначившего ответственного
isReturn
string
Выполнялся ли возврат:

— Y — да
— N — нет

По умолчанию устанавливается N

comments
string
Комментарии к оплате
updated1c
string
Оплата обновлена через 1С:

— Y — да
— N — нет

По умолчанию устанавливается N

id1c
string
Идентификатор в 1С
version1c
string
Версия документа оплаты от 1С
externalPayment
string
Актуально только для коробочной версии
Внешняя оплата или нет. Используется для импорта из 1С через XML

— Y — да
— F — да, загружена вместе с заказом
— N — нет

По умолчанию устанавливается N

psInvoiceId
string
Идентификатор оплаты в платежной системе
marked
string
Флаг маркировки. Признак того, является ли оплата отмеченной как проблемная:

— Y — да
— N — нет

По умолчанию устанавливается N

reasonMarked
string
Причина маркировки
empMarkedId
user.id
Идентификатор пользователя, промаркировавшего оплату

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"orderId":200,"paySystemId":1,"paid":"Y","datePaid":"2024-04-10T10:00:00","empPaidId":1,"psStatus":"Y","psStatusCode":"","psStatusDescription":"","psStatusMessage":"","psSum":100,"psCurrency":"RUB","psResponseDate":"2024-04-10T10:00:00","payVoucherNum":"","payVoucherDate":"2024-04-10T10:00:00","datePayBefore":"2024-04-10T10:00:00","dateBill":"2024-04-10T10:00:00","xmlId":"","sum":100,"companyId":1,"payReturnNum":"","priceCod":100,"payReturnDate":"2024-04-10T10:00:00","empReturnId":1,"payReturnComment":"","responsibleId":1,"empResponsibleId":1,"isReturn":"N","comments":"","updated1c":"N","id1c":"","version1c":"","externalPayment":"N","psInvoiceId":1,"marked":"N","reasonMarked":"","empMarkedId":1}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/sale.payment.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"orderId":200,"paySystemId":1,"paid":"Y","datePaid":"2024-04-10T10:00:00","empPaidId":1,"psStatus":"Y","psStatusCode":"","psStatusDescription":"","psStatusMessage":"","psSum":100,"psCurrency":"RUB","psResponseDate":"2024-04-10T10:00:00","payVoucherNum":"","payVoucherDate":"2024-04-10T10:00:00","datePayBefore":"2024-04-10T10:00:00","dateBill":"2024-04-10T10:00:00","xmlId":"","sum":100,"companyId":1,"payReturnNum":"","priceCod":100,"payReturnDate":"2024-04-10T10:00:00","empReturnId":1,"payReturnComment":"","responsibleId":1,"empResponsibleId":1,"isReturn":"N","comments":"","updated1c":"N","id1c":"","version1c":"","externalPayment":"N","psInvoiceId":1,"marked":"N","reasonMarked":"","empMarkedId":1},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/sale.payment.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'sale.payment.add',
    		{
    			fields: {
    				orderId: 200,
    				paySystemId: 1,
    				paid: 'Y',
    				datePaid: '2024-04-10T10:00:00',
    				empPaidId: 1,
    				psStatus: 'Y',
    				psStatusCode: '',
    				psStatusDescription: '',
    				psStatusMessage: '',
    				psSum: 100,
    				psCurrency: 'RUB',
    				psResponseDate: '2024-04-10T10:00:00',
    				payVoucherNum: '',
    				payVoucherDate: '2024-04-10T10:00:00',
    				datePayBefore: '2024-04-10T10:00:00',
    				dateBill: '2024-04-10T10:00:00',
    				xmlId: '',
    				sum: 100,
    				companyId: 1,
    				payReturnNum: '',
    				priceCod: 100,
    				payReturnDate: '2024-04-10T10:00:00',
    				empReturnId: 1,
    				payReturnComment: '',
    				responsibleId: 1,
    				empResponsibleId: 1,
    				isReturn: 'N',
    				comments: '',
    				updated1c: 'N',
    				id1c: '',
    				version1c: '',
    				externalPayment: 'N',
    				psInvoiceId: 1,
    				marked: 'N',
    				reasonMarked: '',
    				empMarkedId: 1,
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.info(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'sale.payment.add',
                [
                    'fields' => [
                        'orderId'             => 200,
                        'paySystemId'         => 1,
                        'paid'               => 'Y',
                        'datePaid'           => '2024-04-10T10:00:00',
                        'empPaidId'          => 1,
                        'psStatus'           => 'Y',
                        'psStatusCode'       => '',
                        'psStatusDescription' => '',
                        'psStatusMessage'    => '',
                        'psSum'              => 100,
                        'psCurrency'         => 'RUB',
                        'psResponseDate'     => '2024-04-10T10:00:00',
                        'payVoucherNum'      => '',
                        'payVoucherDate'     => '2024-04-10T10:00:00',
                        'datePayBefore'      => '2024-04-10T10:00:00',
                        'dateBill'           => '2024-04-10T10:00:00',
                        'xmlId'              => '',
                        'sum'                => 100,
                        'companyId'          => 1,
                        'payReturnNum'       => '',
                        'priceCod'           => 100,
                        'payReturnDate'      => '2024-04-10T10:00:00',
                        'empReturnId'        => 1,
                        'payReturnComment'   => '',
                        'responsibleId'      => 1,
                        'empResponsibleId'   => 1,
                        'isReturn'           => 'N',
                        'comments'           => '',
                        'updated1c'          => 'N',
                        'id1c'               => '',
                        'version1c'          => '',
                        'externalPayment'    => 'N',
                        'psInvoiceId'        => 1,
                        'marked'             => 'N',
                        'reasonMarked'       => '',
                        'empMarkedId'        => 1,
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding payment: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'sale.payment.add',
        {
            fields: {
                orderId: 200,
                paySystemId: 1,
                paid: 'Y',
                datePaid: '2024-04-10T10:00:00',
                empPaidId: 1,
                psStatus: 'Y',
                psStatusCode: '',
                psStatusDescription: '',
                psStatusMessage: '',
                psSum: 100,
                psCurrency: 'RUB',
                psResponseDate: '2024-04-10T10:00:00',
                payVoucherNum: '',
                payVoucherDate: '2024-04-10T10:00:00',
                datePayBefore: '2024-04-10T10:00:00',
                dateBill: '2024-04-10T10:00:00',
                xmlId: '',
                sum: 100,
                companyId: 1,
                payReturnNum: '',
                priceCod: 100,
                payReturnDate: '2024-04-10T10:00:00',
                empReturnId: 1,
                payReturnComment: '',
                responsibleId: 1,
                empResponsibleId: 1,
                isReturn: 'N',
                comments: '',
                updated1c: 'N',
                id1c: '',
                version1c: '',
                externalPayment: 'N',
                psInvoiceId: 1,
                marked: 'N',
                reasonMarked: '',
                empMarkedId: 1,
            }
        },
        function(result) {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.info(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'sale.payment.add',
        [
            'fields' => [
                'orderId' => 200,
                'paySystemId' => 1,
                'paid' => 'Y',
                'datePaid' => '2024-04-10T10:00:00',
                'empPaidId' => 1,
                'psStatus' => 'Y',
                'psStatusCode' => '',
                'psStatusDescription' => '',
                'psStatusMessage' => '',
                'psSum' => 100,
                'psCurrency' => 'RUB',
                'psResponseDate' => '2024-04-10T10:00:00',
                'payVoucherNum' => '',
                'payVoucherDate' => '2024-04-10T10:00:00',
                'datePayBefore' => '2024-04-10T10:00:00',
                'dateBill' => '2024-04-10T10:00:00',
                'xmlId' => '',
                'sum' => 100,
                'companyId' => 1,
                'payReturnNum' => '',
                'priceCod' => 100,
                'payReturnDate' => '2024-04-10T10:00:00',
                'empReturnId' => 1,
                'payReturnComment' => '',
                'responsibleId' => 1,
                'empResponsibleId' => 1,
                'isReturn' => 'N',
                'comments' => '',
                'updated1c' => 'N',
                'id1c' => '',
                'version1c' => '',
                'externalPayment' => 'N',
                'psInvoiceId' => 1,
                'marked' => 'N',
                'reasonMarked' => '',
                'empMarkedId' => 1,
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "payment": {
            "accountNumber": "356\/1",
            "comments": "",
            "companyId": 1,
            "currency": "RUB",
            "dateBill": "2024-04-10T09:00:00+03:00",
            "dateMarked": "2024-04-16T16:32:49+03:00",
            "datePaid": "2024-04-10T09:00:00+03:00",
            "datePayBefore": "2024-04-10T09:00:00+03:00",
            "dateResponsibleId": "2024-04-16T16:32:49+03:00",
            "empMarkedId": 1,
            "empPaidId": 1,
            "empResponsibleId": 1,
            "empReturnId": 1,
            "externalPayment": "N",
            "id": 144,
            "id1c": "",
            "isReturn": "N",
            "marked": "N",
            "orderId": 200,
            "paid": "Y",
            "payReturnComment": "",
            "payReturnDate": "2024-04-10T09:00:00+03:00",
            "payReturnNum": "",
            "paySystemId": 1,
            "paySystemIsCash": "N",
            "paySystemName": "Банковский перевод (Компании)",
            "paySystemXmlId": "",
            "payVoucherDate": "2024-04-10T09:00:00+03:00",
            "payVoucherNum": "",
            "priceCod": "100",
            "psCurrency": "RUB",
            "psInvoiceId": 1,
            "psResponseDate": "2024-04-10T09:00:00+03:00",
            "psStatus": "Y",
            "psStatusCode": "",
            "psStatusDescription": "",
            "psStatusMessage": "",
            "psSum": 100,
            "reasonMarked": "",
            "responsibleId": 1,
            "sum": 100,
            "updated1c": "N",
            "version1c": "",
            "xmlId": ""
        }
    },
    "time": {
        "start": 1713277968.822151,
        "finish": 1713277972.577136,
        "duration": 3.7549850940704346,
        "processing": 3.3574018478393555,
        "date_start": "2024-04-16T17:32:48+03:00",
        "date_finish": "2024-04-16T17:32:52+03:00"
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа
payment
sale_order_payment
Объект с информацией о добавленной оплате
time
time
Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400

{
    "error":200040300020,
    "error_description":"Access Denied"
}

Возможные коды ошибок

КодОписание
200040300020Недостаточно прав для добавления оплаты
100Не указан или пустой параметр fields
0Не переданы обязательные поля
0Другие ошибки (например, фатальные ошибки)
  • [](./index)
  • [](./sale-payment-update)
  • [](./sale-payment-get)
  • [](./sale-payment-list)
  • [](./sale-payment-delete)
  • [](./sale-payment-get-fields)

💡 Экспертное мнение и рекомендации

Ключевые выводы по теме «Добавить оплату sale.payment.add»:

Использование современных стандартов D7 при работе с sale.payment.add позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Абонентское техническое сопровождение и доработка Битрикс24 по SLAАбонентское техническое сопровождение и доработка Битрикс24 по SLA

Профессиональная настройка и комплексная автоматизация Битрикс24 CRM позволяет выстроить прозрачный отдел продаж, исключить потерю обращений и автоматизировать рутинный документооборот компании. Услуга «Абонентское техническое сопровождение и доработка Битрикс24 по SLA» обеспечивает

Верстка анимированных иконок и преимуществ компании (SVG)Верстка анимированных иконок и преимуществ компании (SVG)

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Верстка анимированных иконок и преимуществ компании (SVG)» гарантирует векторная графика

Как использовать метод SDK crm.currency.add в Битрикс24Как использовать метод SDK crm.currency.add в Битрикс24

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Как использовать метод SDK crm.currency.add в Битрикс24». Вы узнаете экспертные методики работы с