Advertisement
toorr2p

Untitled

Feb 21st, 2024
1,033
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.73 KB | None | 0 0
  1.    if($errorMsg)
  2.     {
  3.         echo ShowError('Error - ' . $errorMsg);
  4.     }else{
  5.         if($session->get('paymentUrl')): ?>
  6.             <script src="https://pay.yandex.ru/sdk/v1/pay.js" onload="onYaPayLoad()" async></script>
  7.             <div id="button_container"></div>
  8.             <script>
  9.                 function onYaPayLoad() {
  10.                 const YaPay = window.YaPay;
  11.  
  12.                 // Данные платежа
  13.                 const paymentData = {
  14.                     // Для отладки нужно явно указать `SANDBOX` окружение,
  15.                     // для продакшена параметр можно убрать или указать `PRODUCTION`
  16.                     env: YaPay.PaymentEnv.<?=$yaPayEnv;?>, //Sandbox
  17.  
  18.                     // Версия 4 указывает на тип оплаты сервисом Yandex Pay
  19.                     // Пользователь производит оплату на форме Yandex Pay,
  20.                     // и мерчанту возвращается только результат проведения оплаты
  21.                     version: 4,
  22.  
  23.                     // Код валюты в которой будете принимать платежи
  24.                     currencyCode: YaPay.CurrencyCode.Rub,
  25.  
  26.                     // Идентификатор продавца, который получают при регистрации в Yandex Pay
  27.                     merchantId: '<?=YOUR_MERCHANT_ID;?>',
  28.  
  29.                     // Сумма к оплате
  30.                     // Сумма которая будет отображена на форме зависит от суммы переданной от бэкенда
  31.                     // Эта сумма влияет на отображение доступности Сплита
  32.                     totalAmount: '<?=$orderTotlaPrice;?>',
  33.  
  34.                     // Доступные для использования методы оплаты
  35.                     // Доступные на форме способы оплаты также зависят от информации переданной от бэкенда
  36.                     // Данные передаваемые тут влияют на внешний вид кнопки или виджета
  37.                     availablePaymentMethods: ['CARD', 'SPLIT'],
  38.                     redirectUrls: ['<?=PAYMENT_FAIL;?>', '<?=PAYMENT_SUCCESS;?>'],
  39.                     orderId: <?=ORDER_ID;?>
  40.                 };
  41.  
  42.                 // Обработчик на клик по кнопке
  43.                 // Функция должна возвращать промис которые резолвит ссылку на оплату полученную от бэкенда Yandex Pay
  44.                 // Подробнее про создание заказа: https://pay.yandex.ru/ru/docs/custom/backend/yandex-pay-api/order/merchant_v1_orders-post
  45.                 async function onPayButtonClick() {
  46.                     // Создание заказа...
  47.                     // и возврат URL на оплату вида 'https://pay.ya.ru/l/XXXXXX'
  48.                     return '<?=$session->get('paymentUrl');?>';
  49.                 }
  50.  
  51.                 // Обработчик на ошибки при открытии формы оплаты
  52.                 function onFormOpenError(reason) {
  53.                     // Выводим информацию о недоступности оплаты в данный момент
  54.                     // и предлагаем пользователю другой способ оплаты.
  55.                     console.error(`Payment error — ${reason}`);
  56.                 }
  57.  
  58.                 // Создаем платежную сессию
  59.                 YaPay.createSession(paymentData, {
  60.                     onPayButtonClick: onPayButtonClick,
  61.                     onFormOpenError: onFormOpenError,
  62.                 }).then(function (paymentSession) {
  63.                         // Показываем кнопку Yandex Pay на странице.
  64.                         paymentSession.mountButton(document.querySelector('#button_container'), {
  65.                             type: YaPay.ButtonType.Pay,
  66.                             theme: YaPay.ButtonTheme.Black,
  67.                             width: YaPay.ButtonWidth.Auto,
  68.                         });
  69.                     }).catch(function (err) {
  70.                         // Не получилось создать платежную сессию.
  71.                     });
  72.             }
  73.             </script>
  74.         <? else: ?>
  75.             <?=ShowError('Error - URL payment is empty!'); ?>
  76.         <? endif; ?>
  77.     <? } ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement