【问题标题】:POST data via Ajax to a Yandex Payment Gateway通过 Ajax 将数据发布到 Yandex 支付网关
【发布时间】:2015-11-11 09:25:12
【问题描述】:

我有一个这样发布的表格;

<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 实现了这一点。所以首先向我的数据库提交一个查询,然后重定向(尽管这可能不是正确的词)到支付网关。然后当响应返回时,我可以将其与数据库中的记录进行比较。

但这在这里如何运作?他们的网关似乎没有考虑到这种令牌处理。

忘记网关细节,是否可以使用 ajax 来“发布”数据?

更新

用这个怎么样?

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

【问题讨论】:

  • 在 jQuery AJAX 中使用 dataType: 'jsonp'(用于跨域)。
  • @Ahsan 但这是 XML。不会冲突吗?

标签: php ajax post yandex


【解决方案1】:

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

【讨论】:

  • 你的建议和我更新的内容有什么区别?代码库的另一部分使用了类似的东西,但 url 是内部的。
  • 其实没什么,但我认为当我发布这个答案时你没有更新问题。或者我忘了刷新它。
  • 我收到一个错误 XMLHttpRequest cannot load No 'Access-Control-Allow-Origin' header is present。所以这里有一个更深层次的问题需要解决。
  • 更新了我的回答,你可以试试吗?
猜你喜欢
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
相关资源
最近更新 更多