Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
Laravel 5 Adyen-无法解密数据_Laravel 5_Payment Gateway_Payment_Adyen - Fatal编程技术网

Laravel 5 Adyen-无法解密数据

Laravel 5 Adyen-无法解密数据,laravel-5,payment-gateway,payment,adyen,Laravel 5,Payment Gateway,Payment,Adyen,嗨,我正试图在我的项目中集成adyen支付网关。 我使用了以下PHPSDK 我已经按照sdk中提到的步骤生成客户端加密,并将这些加密值传递给服务器端以执行支付。但我遇到了一个错误消息“无法解密数据” 下面是我的示例代码 前端: <script type="text/javascript" src="https://test.adyen.com/hpp/cse/js/MY_LIBRARY_TOKEN.shtml"></script> <form method="P

嗨,我正试图在我的项目中集成adyen支付网关。 我使用了以下PHPSDK

我已经按照sdk中提到的步骤生成客户端加密,并将这些加密值传递给服务器端以执行支付。但我遇到了一个错误消息“无法解密数据”

下面是我的示例代码

前端:

<script type="text/javascript" src="https://test.adyen.com/hpp/cse/js/MY_LIBRARY_TOKEN.shtml"></script>
  <form method="POST"  id="adyen-encrypted-form">
    <input placeholder="number" type="text" size="20" data-encrypted-name="number" value="2223520443560010" />
    <input placeholder="holderName" type="text" size="20" data-encrypted-name="holderName" value="Ashok" />
    <input placeholder="expiryMonth" type="text" size="2" data-encrypted-name="expiryMonth" value="10" />
    <input placeholder="expiryYear" type="text" size="4" data-encrypted-name="expiryYear" value="2020" />
    <input placeholder="cvc" type="text" size="4" data-encrypted-name="cvc" value="737" />
    <input type="hidden" value="<?php echo date('Y-m-d\TH:i:sO'); ?>" data-encrypted-name="generationtime"/>
    <input type="submit" value="Pay"/>
 </form>

<script>
    // The form element to encrypt.
    var form = document.getElementById('adyen-encrypted-form');

    var options = {};
    // Bind encryption options to the form.
    var encryptedBlobFieldName = "myFieldName";
    options.name = encryptedBlobFieldName;
    options.onsubmit = function(e) {
        var encryptedData = form.elements[encryptedBlobFieldName].value;
        // Encrypted form detials
        console.log(encryptedData);
        e.preventDefault();
    };
var result = adyen.createEncryptedForm(form, options);
</script>
以下是我传递给授权方法的值

Array(
[amount] => Array
    (
        [value] => 19
        [currency] => GBP
    )

[reference] => payment-test
[merchantAccount] => MERCHANT_ACCOUNT_CODE
[additionalData] => Array
    (
        [card.encrypted.json] => 'ENCRYPTED_DATA_FROM_FRONT_END'
    )
)

我不确定我做错了什么,从服务器端我收到一个错误,因为无法解密数据。请帮助我解决此问题

您是否尝试在不刷新页面的情况下付款?
在这种情况下,您确实应该创建字段来加密自己,在您的情况下,您将其称为“myFieldName”。如果你把它添加到你的表格中,你就可以开始了。如果不起作用,请告诉我。

您需要使用带有冒号的偏移量,以小时和分钟分隔

从更改日期生成

echo date('Y-m-d\TH:i:sO');


我发现了问题。问题是在通过CSE从前端生成令牌之后,我已经通过GETAPI将这些值传递给服务器端。因此,在加密字符串中添加了一些附加字符。(在url中传递的数据使用url加密进行加密)


我已将服务器API方法更改为post,它工作得非常好。

问题可能在于JavaScript代码。您正在尝试加密
myFieldName
,但该字段不存在…@nirajsah我已经从中引用了adyen文档。Adyne将使用给定的encryptedBlobFieldName动态创建一个字段,并返回该字段中的加密数据,因此该名称没有错误。我还尝试了不添加该名称,出现了相同的问题输出加密数据?是的,我得到加密数据。但在服务器端进行支付时,我遇到了无法解密的问题。我不确定我做错了什么我已经更新了我的日期格式,正如你提到的,但仍然是相同的错误。我是否需要更新服务器端代码中的任何其他内容?是,我正在尝试在不刷新页面的情况下创建加密数据。我尝试过在我的表单中添加字段
myFieldName
,就像这样
当我添加此字段时,我不会得到任何加密数据。我手动添加了一个提交事件,并检查了
myFieldName
中的值,在我的案例中,它返回空值。此外,在adyne文档中没有提到任何内容,例如,需要手动添加字段,这样我就没有将新字段添加到表单中。
echo date('Y-m-d\TH:i:sO');
echo date('Y-m-d\TH:i:sP');