Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Securionpay签出验证成功_Javascript_Ruby On Rails_Payment - Fatal编程技术网

Javascript Securionpay签出验证成功

Javascript Securionpay签出验证成功,javascript,ruby-on-rails,payment,Javascript,Ruby On Rails,Payment,好的,我决定使用securionpay作为一种支付方式 我正在努力的是,我不知道如何在我的服务器上验证付款是否成功 <script src = "https://securionpay.com/checkout.js"> </script> <script src="https:/ / ajax.googleapis.com / ajax / libs / jquery / 3.1.0 / jquery.min.js "></script> <

好的,我决定使用securionpay作为一种支付方式

我正在努力的是,我不知道如何在我的服务器上验证付款是否成功

<script src = "https://securionpay.com/checkout.js"> </script>
<script src="https:/ / ajax.googleapis.com / ajax / libs / jquery / 3.1.0 / jquery.min.js "></script>
<script type="
text / javascript ">
  $(function () {
    SecurionpayCheckout.key = 'pk_test_ZVhCjD2Gz7OF222L00bxIdlD';
    SecurionpayCheckout.success = function (result) {
      // handle successful payment (e.g. send payment data to your server)
    };
    SecurionpayCheckout.error = function (errorMessage) {
      // handle integration errors (e.g. send error notification to your server)
    };

    $('#payment-button').click(function () {
      SecurionpayCheckout.open({
        checkoutRequest: 'NTQ1NDAwYTczZTljMjUwYzNhZjA0NTdkOTFjNThiOTY5YzIxY2ViMjBhMDRmOTYwNjg1MDI3OWQ2OTZlN2VjMnx7ImNoYXJnZSI6eyJhbW91bnQiOjQ5OSwiY3VycmVuY3kiOiJFVVIifX0=',
        name: 'SecurionPay',
        description: 'Checkout example'
      });
    });
  });
</script>

<button id="payment-button">Payment button</button>
事情是这样的

用户选择一个产品 用户单击订单请求将发送到我的服务器,我在那里创建签名的“签出请求” 我呈现javascript文件并填写checkoutRequest 用户单击“付款按钮” 用户填写卡信息并单击支付 SecurtionpayCheckout.success运行 无论“结果”会返回给我什么,在服务器上验证都没有帮助。我只在服务器端生成签出请求

我的想法是,我的服务器应该生成一些变量,我将其存储在订单模型中,“result”应该返回该变量,如果成功,那么我可以根据我可以验证的内容来验证它?我可能错过了什么

文件:

另外,我不想在我的服务器上存储卡信息


谢谢

您应该使用。在checkoutRequest.charge.metadata属性中输入是否需要数据。它将附加到费用中,并在success method的result参数中返回。

我认为在一天结束时这样做是不合适的。因为签出请求可以从Base64解码,所以元数据是公开的,所以我无法基于它进行验证。相反,我只需将charge_id发送回我的后端,并将帖子发送到securion到。。。这就是问题所在。我不想得到任何有关卡使用等信息。我想我要找的是我猜的事件。我只是想看看这是否成功。你能帮我吗?我们可以用波兰语交谈。结帐请求可以解码,但它是用您的密钥签名的,不能修改。这是真的,但解码后,带有假结帐id的元数据可以发送回我的服务器,甚至不向securion发送付款。我的意思是,我需要通过一种或另一种方式向后端的securion发送post以完全验证它,然后我可以使用元数据来验证它。也许我误解了我应该如何使用元数据。若captured==true,这意味着客户端被收费了,对吗?我不明白如何将带有假签出id的元数据发送到后端。附加到签出请求以及随后附加到费用的元数据在前端不可修改。通常,您只需将chargeId传递到后端,在那里您可以检索费用并检查它是否被拒绝。如果未找到费用,则chargeId是假的。此外,如果有人试图使用以前的chargeId,您可以存储已处理/验证的chargeId以处理重复。不可能猜测chargeId,因为它有24个随机字母数字字符。是的,captured==true意味着客户被收取了费用。你当然是对的。需要说明的是,不可能不在后端发送post,通过签出id检查事务的状态。我只是希望能够捕获javascript响应成功并基于此响应验证签出。可以发送刚刚解码的元数据作为确认,带有假结帐id,如果在我的后端,我不会将结帐id发布到securion以检索费用,这是可能的。我想我们只是误解了对方。