403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/sale/checkout-form/src/blocks/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/sale/checkout-form/src/blocks/payments.js
import {ajax, Type} from 'main.core';
import {BaseBlock} from './base-block';
import {Dom, Tag, Text} from 'main.core';
import {rest as Rest} from 'rest.client';

export class Payments extends BaseBlock
{
	refreshLayout(forceLayout: boolean = false): void
	{
		let mode;

		const formStage = this.getForm().getStage();
		const blockStage = this.getStage();

		if (Type.isPlainObject(blockStage))
		{
			const {view: viewStage, edit: editStage, hide: hideStage} = blockStage;
			let currentStage = 0;

			while (currentStage <= formStage)
			{
				if (currentStage === hideStage)
				{
					mode = undefined;
				}
				else if (currentStage === editStage)
				{
					mode = BaseBlock.EDIT_MODE;
				}
				else if (currentStage === viewStage)
				{
					mode = BaseBlock.VIEW_MODE;
				}

				currentStage++;
			}
		}
		else if (Type.isNumber(blockStage))
		{
			if (blockStage <= formStage)
			{
				mode = BaseBlock.EDIT_MODE;
			}
		}

		this.clearLayout();

		if (mode || forceLayout)
		{
			if (mode)
			{
				this.setMode(mode);
			}

			this.layout();
		}
	}

	layout()
	{
		let access = this.getForm().getSchemeField('hash');
		let paySystemReturnUrl = this.getForm().getParameter('paySystemReturnUrl');

		let payments = this.getForm().getField('payments');

		let paymentId = 0;
		Object.keys(payments).forEach((id)=>{paymentId = id; return false;});

		ajax.runAction(
			'sale.entity.paymentpay',
			{
				data: {
					fields: {
						paymentId: paymentId,
						accessCode: access,
						returnUrl: paySystemReturnUrl,
					}
				}
			}
		)
			.then(this.getPaySystemsList.bind(this));

		//${this.getPaySystemNodes()}
	}

	getPaySystemsList(response)
	{
		const wrapper = this.getWrapper();

		if(
			BX.type.isPlainObject(response.data)
			&& BX.type.isNotEmptyString(response.data.html)
		)
		{
			 BX.html(wrapper, response.data.html);

			BX.addCustomEvent('onChangePaySystems', ()=>{
				this.getForm().refreshLayout();
			});
		}
	}

	getPaySystems(): []
	{
		return this.getForm().getSchemeField('paySystems', []);
	}

	getPaySystemNodes(): HTMLElement[]
	{
		const paySystemNodes = [];

		this.getPaySystems().forEach((item) => {
			paySystemNodes.push(Tag.render`
				<div class="checkout-checkout-method">
					<div class="checkout-checkout-method-image-block">
						<img src="${item.logotipSrc}" alt="" class="checkout-checkout-method-img">
					</div>
					<div class="checkout-checkout-method-name-block">
						<div class="checkout-checkout-method-name">${Text.encode(item.name)}</div>
						<div class="checkout-checkout-method-description">${Text.encode(item.description)}</div>
					</div>
					<div class="checkout-checkout-method-btn-block">
						<button 
							class="btn btn-primary checkout-checkout-btn btn-sm rounded-pill"
							data-paysystem-id="${item.id}"
							onclick="${this.handleCheckoutClick.bind(this)}"
						>Checkout</button>
<!--						<button class="checkout-checkout-btn checkout-checkout-btn-selected btn btn-sm rounded-pill">Selected</button>-->
					</div>
				</div>
			`);
		});

		return Tag.render`
			<div class="checkout-checkout-method-list">
				${paySystemNodes}
			</div>
		`;
	}

	handleCheckoutClick(event: MouseEvent): void
	{
		const paySystemId = Text.toNumber(event.target.getAttribute('data-paysystem-id'));

		this.getForm().setFieldNoDemand('paySystemId', paySystemId);
		event.target.setAttribute('disabled', 'disabled');
		Dom.addClass(event.target, 'checkout-checkout-btn-selected');
		event.target.innerHTML = '<span class="spinner-border spinner-border-sm mr-2"></span>' + event.target.innerHTML;

		let payments = this.getForm().getField('payments');
		let paymentId = 0;
		Object.keys(payments).forEach((id)=>{paymentId = id; return false;});

		ajax.runAction(
			'sale.entity.paymentpay',
			{
				data: {
					fields: {
						ID: paymentId
					}
				}
			}
		)
			.then(function (response) {

				if(
					BX.type.isPlainObject(response.data)
					&& BX.type.isNotEmptyString(response.data.html)
				)
				{
					BX.html(event.target, response.data.html);
				}
			})
		;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit