Skip to content

Latest commit

 

History

History
80 lines (67 loc) · 5.24 KB

010-01 email 54fz js.md

File metadata and controls

80 lines (67 loc) · 5.24 KB

яндекс касса / документация / http, cms, email⬅️, тестирование, решение ошибок, демо, 54-ФЗ

🎓 Пример JS-скрипта для схемы E-mail + 54ФЗ

Это пример как сделать платежную форму на E-mail схеме и JS для вставки в customerContact электронной почты или телефона пользователя, который он вводит в вашей форме, чтобы получить электронный чек, если ваш магазин передает данные для 54ФЗ (технические подробности о реализации 54ФЗ здесь).

Рабочий пример кода

<form action="https://money.yandex.ru/eshop.xml" method="post" onsubmit="formatReceipt(this);return false;">
	<input required name="shopId" value="123456" type="hidden"/>
	<input required name="scid" value="123456" type="hidden"/>
	<input required name="sum" value="1046.47" type="hidden">
	<input required name="customerNumber" value="test-fz-54-with-dynamic-customerContact" type="hidden"/>
	<input required name="paymentType" value="AC" type="hidden"/>		
	<input required name="customerContact" value="" placeholder="Укажите телефон +7NNNxxxXXxx или электронный адрес для получения чека" size="72"/><br>

    <!-- пропишите здесь свои товары, их количество и стоимость 
    помните, что сумма товаров в ym_merchant_receipt должна быть равна сумме в sum выше в коде -->
<input name="ym_merchant_receipt"
  value='{"customerContact": "",
        "taxSystem": 1,
          "items":[
            {"quantity": 1.154, "price": {"amount": 300.23},  "tax": 3,"text": "Зеленый чай \"Юн Ву\", кг",
                        "paymentMethodType": "full_prepayment",
                        "paymentSubjectType": "commodity"},
            {"quantity": 2,     "price": {"amount": 200.00},  "tax": 3,"text": "Кружка для чая, шт., скидка 10%",
                        "paymentMethodType": "full_prepayment",
                        "paymentSubjectType": "commodity"},
            {"quantity": 0.3,   "price": {"amount": 1000.00}, "tax": 3,"text": "Предоплата 30%, настольная игра \"Tea Time\"",
                        "paymentMethodType": "partial_prepayment",
                        "paymentSubjectType": "commodity"},
            {"quantity": 1,     "price": {"amount": 0.00},    "tax": 1,"text": "Бесплатная доставка",
                        "paymentMethodType": "full_prepayment",
                        "paymentSubjectType": "service"},
            {"quantity": 1,     "price": {"amount": 0.00},    "tax": 1,"text": "Пример одинарной кавычки can\u0027t",
                        "paymentMethodType": "full_prepayment",
                        "paymentSubjectType": "commodity"}
                  ]}'
type="hidden"/>
	<input type="submit" value="test-fz-54-with-dynamic-customerContact">	
</form>

<script>
    var  validateContact = function(value) {
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/,
            phoneReg = /^\+7[0-9]{10,11}/;

        isEmail = value.match(emailReg);
        isPhone = value.match(phoneReg);

        return (isEmail || isPhone);
    }

    var formatReceipt = function (form) {
        
        var customerContactValue = form.customerContact.value,
            receipt = form.ym_merchant_receipt.value,
            receiptObject = JSON.parse(receipt);

        if(validateContact(customerContactValue)) {
            receiptObject.customerContact = customerContactValue;
            form.ym_merchant_receipt.value = JSON.stringify(receiptObject);
            form.submit();
        } else {
            alert('Неверно введен контакт покупателя. Ограничения: только цифры (+792100000000) или адрес электронной почты.')
            return false; 
        }
    };
</script>