Блог Горошко Андрея 1C-Битрикс,Bitrix24 Изменить оплату sale.payment.update

Изменить оплату sale.payment.update

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Изменить оплату sale.payment.update». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.

Изменить оплату sale.payment.update

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

Метод sale.payment.update служит для обновления полей элемента коллекции оплат.

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

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

fields: {
    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

Название
тип
Описание
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 '{"id":144,"fields":{"paySystemId":1,"paid":"Y","datePaid":"2024-04-10T10:00:00","empPaidId":1,"psStatus":"Y","psSum":100,"psCurrency":"RUB","psResponseDate":"2024-04-10T10:00:00","sum":100,"companyId":1,"responsibleId":1,"empResponsibleId":1,"isReturn":"N","externalPayment":"N","psInvoiceId":1,"marked":"N"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/sale.payment.update
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":144,"fields":{"paySystemId":1,"paid":"Y","datePaid":"2024-04-10T10:00:00","empPaidId":1,"psStatus":"Y","psSum":100,"psCurrency":"RUB","psResponseDate":"2024-04-10T10:00:00","sum":100,"companyId":1,"responsibleId":1,"empResponsibleId":1,"isReturn":"N","externalPayment":"N","psInvoiceId":1,"marked":"N"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/sale.payment.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'sale.payment.update',
    		{
    			id: 144,
    			fields: {
    				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.update',
                [
                    'id' => 144,
                    'fields' => [
                        '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 updating payment: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'sale.payment.update',
        {
            id: 144,
            fields: {
                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.update',
        [
            'id' => 144,
            'fields' => [
                '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": 1713454774.293692,
        "finish": 1713454778.895877,
        "duration": 4.602184772491455,
        "processing": 4.142766952514648,
        "date_start": "2024-04-18T18:39:34+03:00",
        "date_finish": "2024-04-18T18:39:38+03:00"
    }
}

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

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

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

HTTP-статус: 400

{
    "error":200640400001,
    "error_description":"payment is not exists"
}

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

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

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

Ключевые выводы по теме «Изменить оплату sale.payment.update»:

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

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

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

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

Related Post

Разработка B2B-портала с загрузкой оптовых заказов из файлов Excel / CSVРазработка B2B-портала с загрузкой оптовых заказов из файлов Excel / CSV

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Разработка

Получить список доступных логотипов crm.timeline.logo.listПолучить список доступных логотипов crm.timeline.logo.list

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

Получить информацию о единице измерения по идентификатору catalog.measure.getПолучить информацию о единице измерения по идентификатору catalog.measure.get

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Получить информацию о единице измерения по идентификатору catalog.measure.get». Мы подготовили подробный разбор принципов работы и