Разрабатываю платежный модуль для
Bitrix CMS . При возвращении покупателя с платежного шлюза пытаюсь обновить статус заказа:
Код $arOrder = CSaleOrder::GetByID($ID); // $ID - Id заказа в магазинне
CSalePaySystemAction::InitParamArrays($arOrder, $arOrder["ID"]);
/ ...
$reponse = $gateway->getOrderStatus($arOrder["ID"]);
$arOrderFields = array(
"PS_SUM" => $response["amount"]/100,
"PS_CURRENCY" => $response["currency"],
"PS_RESPONSE_DATE" => Date(CDatabase::DateFormatToPHP(CLang::GetDateFormat("FULL", LANG))),
"PS_STATUS" => "Y",
"PS_STATUS_DESCRIPTION" => $response["cardholderName"],
"PS_STATUS_MESSAGE" => $response["paymentState"],
"PS_STATUS_CODE" => "Y" );
CSaleOrder::Update($arOrder["ID"], $arOrderFields);
Но выскакивает следующая ошибка:
Код [Bitrix\Main\ArgumentException]
Field `PS_STATUS` not found in entity when trying to query Order row. (100)
/Applications/MAMP/htdocs/bitrix/bitrix/modules/main/lib/entity/datamanager.php:415
...
Но если после поиска заказа сделать его вывод, то в нем поле
PS_STATUS есть:
Код Array ( [ID] => 7 [LID] => s1 [ACCOUNT_NUMBER] => 7 [TRACKING_NUMBER] => [PAY_SYSTEM_ID] => 3 [DELIVERY_ID] => 1451552153 [DATE_INSERT] => 2016-02-09 11:01:33 [DATE_UPDATE] => 2016-02-09 11:32:10 [PERSON_TYPE_ID] => 1 [USER_ID] => 1 [PAYED] => Y [DATE_PAYED] => 2016-02-09 11:02:53 [EMP_PAYED_ID] => 1 [DEDUCTED] => N [DATE_DEDUCTED] => [EMP_DEDUCTED_ID] => [REASON_UNDO_DEDUCTED] => [STATUS_ID] => P [DATE_STATUS] => 2016-02-09 11:32:10 [EMP_STATUS_ID] => 1 [MARKED] => N [DATE_MARKED] => [EMP_MARKED_ID] => [REASON_MARKED] => [PRICE_DELIVERY] => 500.0000 [ALLOW_DELIVERY] => Y [DATE_ALLOW_DELIVERY] => 2016-02-09 11:02:54 [EMP_ALLOW_DELIVERY_ID] => [RESERVED] => Y [PRICE] => 1579.10 [CURRENCY] => RUB [DISCOUNT_VALUE] => 0.0000 [TAX_VALUE] => 0.00 [SUM_PAID] => 1579.10 [USER_DESCRIPTION] => [PAY_VOUCHER_NUM] => [PAY_VOUCHER_DATE] => [ADDITIONAL_INFO] => [COMMENTS] => [CREATED_BY] => 1 [RESPONSIBLE_ID] => [STAT_GID] => [DATE_PAY_BEFORE] => [DATE_BILL] => [RECURRING_ID] => [LOCKED_BY] => [DATE_LOCK] => [RECOUNT_FLAG] => Y [AFFILIATE_ID] => [DELIVERY_DOC_NUM] => [DELIVERY_DOC_DATE] => [UPDATED_1C] => N [ORDER_TOPIC] => [XML_ID] => [ID_1C] => [VERSION_1C] => [VERSION] => 14 [EXTERNAL_ORDER] => N [STORE_ID] => [CANCELED] => N [EMP_CANCELED_ID] => [DATE_CANCELED] => [REASON_CANCELED] => [BX_USER_ID] => [DATE_INSERT_FORMAT] => 09.02.2016 11:01:33 [DATE_UPDATE_SHORT] => 2016-02-09 00:00:00 [DATE_STATUS_SHORT] => 2016-02-09 00:00:00 [DATE_CANCELED_SHORT] => [BY_RECOMMENDATION] => N [LOCK_STATUS] => green [LOCK_USER_NAME] => [RESPONSIBLE_LOGIN] => [RESPONSIBLE_NAME] => [RESPONSIBLE_LAST_NAME] => [RESPONSIBLE_SECOND_NAME] => [RESPONSIBLE_EMAIL] => [RESPONSIBLE_WORK_POSITION] => [RESPONSIBLE_PERSONAL_PHOTO] => [PS_STATUS] => [PS_STATUS_CODE] => [PS_STATUS_DESCRIPTION] => [PS_STATUS_MESSAGE] => [PS_SUM] => [PS_CURRENCY] => [PS_RESPONSE_DATE] => [USER_LOGIN] => admin [USER_NAME] => Админ [USER_LAST_NAME] => Админов [USER_EMAIL] => admin@admin.ru [DATE_UPDATE_FORMAT] => 09.02.2016 11:32:10 [DATE_STATUS_FORMAT] => 09.02.2016 11:32:10 )
Причем, если удалить из массива
PS_STATUS , то
Bitrix CMS будет ругаться на другие поля:
PS_STATUS_CODE ,
PS_STATUS_DESCRIPTION и так далее. Хотя в
официальной документации эти поля описаны.