通过Ajax将数据发布到Yandex支付网关

时间:2015-11-11 09:25:12

标签: php ajax post yandex

我有一张像这样张贴的表格;

<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="user@domain.com" type="hidden"/>
  <input type="submit" value="Pay"/>
</form>

这是the Yandex docs的一个例子。但我自己的形式看起来很相似。我的问题是,如何测试sum(金额)是否与项目的总成本相同?

对于其他支付网关,我已设法使用ajax实现此目的。因此,首先向我的数据库提交一个查询,然后将其重定向(尽管可能不是正确的词)到支付网关。然后当响应回来时,我可以将它与我的数据库中的记录进行比较。

但这怎么会在这里工作?他们的网关似乎没有考虑到那种令牌处理。

忘记网关细节,是否可以发布&#34;发布&#34;使用ajax的数据?

更新

使用它怎么样?

$.ajax({ 
        method: 'POST',
        url: 'https://money.yandex.ru/eshop.xml',
        data: {
            shopId: shopId,
            scid: scid,
            etc: etc
        }
    }

1 个答案:

答案 0 :(得分:0)

是。只需通过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'); 
    }
});