sale.payment.add
Добавить оплату
Описание
Метод sale.payment.add добавляет новую оплату.
Параметры
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 -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_webhook_here**/sale.payment.add
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
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type PaymentAddResult = {
payment: {
accountNumber: string
comments: string
companyId: number
currency: string
dateBill: ISODate | null
dateMarked: ISODate | null
datePaid: ISODate | null
datePayBefore: ISODate | null
dateResponsibleId: ISODate | null
empMarkedId: number
empPaidId: number
empResponsibleId: number
empReturnId: number
externalPayment: string
id: number
id1c: string
isReturn: string
marked: string
orderId: number
paid: string
payReturnComment: string
payReturnDate: ISODate | null
payReturnNum: string
paySystemId: number
paySystemIsCash: string
paySystemName: string
paySystemXmlId: string
payVoucherDate: ISODate | null
payVoucherNum: string
priceCod: string
psCurrency: string
psInvoiceId: number
psResponseDate: ISODate | null
psStatus: string
psStatusCode: string
psStatusDescription: string
psStatusMessage: string
psSum: number
reasonMarked: string
responsibleId: number
sum: number
updated1c: string
version1c: string
xmlId: string
}
}
try {
const response = await $b24.actions.v2.call.make<PaymentAddResult>({
method: 'sale.payment.add',
params: {
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,
},
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Added payment id:', result.payment.id, 'order:', result.payment.orderId)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function addPayment() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'sale.payment.add',
params: {
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,
},
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Added payment id:', result.payment.id, 'order:', result.payment.orderId)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addPayment)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
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,
}
try:
bitrix_response = client.sale.payment.add(
fields=fields,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
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.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());
}
}
);
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>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sale.payment.add", b24.Params{
"fields": b24.Params{
"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,
},
})
if err != nil {
return fmt.Errorf("sale.payment.add: %w", err)
}
// Метод заворачивает ответ в объект с ключом "payment".
raw, ok := b24.Unwrap(res.Result, "payment")
if !ok {
return fmt.Errorf("в ответе нет ключа payment")
}
var item struct {
AccountNumber string `json:"accountNumber"`
Comments string `json:"comments"`
CompanyID b24.ID `json:"companyId"`
Currency string `json:"currency"`
DateBill string `json:"dateBill"`
DateMarked string `json:"dateMarked"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.AccountNumber, item.Comments)
Ответ
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 |
Другие ошибки (например, фатальные ошибки) |

