Задать вопрос
@walkerstech

Передача данных в input?

Здравствуйте, есть код для яндекс кассы, которые подставляется контактные данные в customerContact для генераций чека. Как реализовать так же, только с суммой? Прикрепил вариант от Яндекас Кассы,и свой вариант JS кода но не работатет
<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">
	<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>


Мой вариант JS кода:
<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);
        
        var customerSumValue = form.items.price.amount.value,
            receipt1 = form.ym_merchant_receipt.value,
            receipt1Object = JSON.parse(receipt1);

        if(validateContact(customerContactValue)) {
            receiptObject.customerContact = customerContactValue;
            receipt1Object.items.price.amount = sumValue;
            form.ym_merchant_receipt.value = JSON.stringify(receiptObject);
            form.ym_merchant_receipt.value = JSON.stringify(receipt1Object);
            form.submit();
        } else {
            alert('Неверно введен контакт покупателя. Ограничения: только цифры (+792100000000) или адрес электронной почты.')
            return false; 
        }
    };
</script>
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы