Изменение способа оплаты в заказе через API Bitrix


Пример изменения способа оплаты в заказе через 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'; 

// }