Пример изменения способа оплаты в заказе через API 1С-Битрикс (php) – доступно из любого скрипта с подключенным PROLOG, проверялось на Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687)
CModule::IncludeModule('sale');
$order_id = 33576; // id заказа
$payment_id = 18; // id платежной системы, которую хотим установить
$payment_name = 'Оплата картой на сайте'; // наименование платежной системы, которую хотим установить
$order = \Bitrix\Sale\Order::load($order_id);
$paymentCollection = $order->getPaymentCollection();
$paymentItem = $paymentCollection[0];
$paymentFields = $paymentItem->getFieldValues();
$payment = \Bitrix\Sale\PaySystem\Manager::getById($paymentFields['ID']);
$service = new \Bitrix\Sale\PaySystem\Service($payment);
if ($paymentItem) {
$initResult = $service->initiatePay($paymentItem, null, \Bitrix\Sale\PaySystem\BaseServiceHandler::STRING);
if ($initResult->isSuccess()) {
$buffer = $initResult->getTemplate();
echo "OK";
} else {
$buffer = implode('\n', $initResult->getErrorMessages());
}
}
$result = $order->save();
// отладка при необходимости
// if (!$result->isSuccess()){
// $result->getErrors();
// } else {
// echo 'ok';
// }