Laravel 5 Adyen-无法解密数据
嗨,我正试图在我的项目中集成adyen支付网关。 我使用了以下PHPSDK 我已经按照sdk中提到的步骤生成客户端加密,并将这些加密值传递给服务器端以执行支付。但我遇到了一个错误消息“无法解密数据” 下面是我的示例代码 前端: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
<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');