У меня есть форма, которая размещена примерно так;
<form action="https://money.yandex.ru/eshop.xml" method="post">
<input name="shopId" value="1234" type="hidden"/>
<input name="scid" value="4321" type="hidden"/>
<input name="sum" value="100.50" type="hidden">
<input name="customerNumber" value="abc000" type="hidden"/>
<input name="shopArticleId" value="567890" type="hidden"/>
<input name="paymentType" value="AC" type="hidden"/>
<input name="orderNumber" value="abc1111111" type="hidden"/>
<input name="cps_phone" value="79110000000" type="hidden"/>
<input name="cps_email" value="[email protected]" type="hidden"/>
<input type="submit" value="Pay"/>
</form>
Это пример из яндекс документы. Но моя собственная форма будет выглядеть аналогично. У меня вопрос, как я могу проверить, что sum
(сумма денег) равна общей стоимости предметов?
Для других платежных шлюзов мне удалось добиться этого с помощью ajax. Поэтому сначала отправьте запрос в мою базу данных, а затем перенаправьте (хотя это, вероятно, не то слово) на платежный шлюз. А потом, когда ответ возвращается, я могу сравнить его с записью в моей базе данных.
Но как это будет работать здесь? Их шлюз, похоже, не учитывает такого рода обработку токенов.
Забывая о специфике шлюза, можно ли просто «публиковать» данные, используя ajax?
ОБНОВИТЬ
Как насчет использования этого?
$.ajax({
method: 'POST',
url: 'https://money.yandex.ru/eshop.xml',
data: {
shopId: shopId,
scid: scid,
etc: etc
}
}
Да. возможно просто «опубликовать» данные через AJAX. Вот небольшой базовый пример.
<form id="exampleForm">
<input name="name" value="A random name" />
<input type="submit" value="Post through AJAX">
</form>
<script>
$( "#exampleForm" ).submit(function( event ) {
// Stop default form submit
event.preventDefault();
//Serialize the form data
var formData = $(this).serializeArray();
// Send the data using post
var posting = $.post( 'HERE THE DESTINATION URL OF THE POST', formData, function(responseData
{
//An action when the POST request is done
}));
});
</script>
Не забудьте включить библиотеку JQuery.
ОБНОВИТЬ
Для кросс-просмотра AJAX-запроса вам необходимо использовать dataType
‘JSONP. Согласно вашему запросу образца вы можете попробовать это:
$.ajax({
url: 'https://money.yandex.ru/eshop.xml',
data: {
shopId: shopId,
scid: scid,
etc: etc
},
type: 'POST',
dataType: 'jsonp',
success: function()
{
alert('Success callback');
},
error: function()
{
alert('Error callback');
}
});
Других решений пока нет …