Задача: дать возможность пользователю в любой момент оплатить заказ банковской картой, независимо от выбранного на этапе оформления способа оплаты.
Многие пользователи выбирают способ оплаты по умолчанию (это наличный расчёт), а потом звонят и спрашивают, как оплатить картой. Возможность смены способа оплаты самим пользователем на сайте сделана не была. В итоге мненеджер должен в админке менять способ оплаты, после этого появляется кнопка оплаты картой в ЛК пользователя в списке заказов.
Решение: я использовал новую возможность Битрикса в одном заказе иметь несколько оплат.
Через ядро D7 создаю принудительно дополнительную оплату - "оплата банковской картой".
Достоинства: пользователю не надо ничего менять, сразу работает кнопка оплаты
Недостатки: в админке висят две оплаты на полную сумму заказа, оплату картой приходится ставить первой, чтобы срабатывал стандартный компонент bitrix:sale.order.payment, который видит только первую оплату
Многие пользователи выбирают способ оплаты по умолчанию (это наличный расчёт), а потом звонят и спрашивают, как оплатить картой. Возможность смены способа оплаты самим пользователем на сайте сделана не была. В итоге мненеджер должен в админке менять способ оплаты, после этого появляется кнопка оплаты картой в ЛК пользователя в списке заказов.
Решение: я использовал новую возможность Битрикса в одном заказе иметь несколько оплат.
Через ядро D7 создаю принудительно дополнительную оплату - "оплата банковской картой".
$paymentCollection = $obOrder->getPaymentCollection(); //Создаём оплату с банковской карты $paymentCard = $paymentCollection->createItem( Bitrix\Sale\PaySystem\Manager::getObjectById(ID_ПС_оплаты_картой) ); $paymentCard->setField("SUM", $obOrder->getPrice()); $paymentCard->setField("CURRENCY", $obOrder->getCurrency()); $paymentCard->setField('PAY_SYSTEM_ID', ID_ПС_оплаты_картой); //Далее сохраняем заказ |
Недостатки: в админке висят две оплаты на полную сумму заказа, оплату картой приходится ставить первой, чтобы срабатывал стандартный компонент bitrix:sale.order.payment, который видит только первую оплату