大家好,一天..有谁知道如何将adyen集成到可在IOS和ANDROID上运行的React Native。
提前致谢 :)
我正在尝试使用JSON API以便通过ADYEN进行(测试)付款。
这是代码(我从Github-> Adyen-> adyen-php-sample-code获得了这个示例:
<?php
/**
* Create Payment through the API (HTTP Post)
*
*
* Please note: using our API requires a web service user. Set up your Webservice
* user: Adyen Test CA >> Settings >> Users >> ws@Company. >> Generate Password >> Submit
*
* @author Created by Adyen - Payments Made Easy
*/
/**
* A payment can be submitted by sending a PaymentRequest
* to the authorise action of the web service, the …Run Code Online (Sandbox Code Playgroud) 平台M2.3.4
日期: 2020年4月29日
情况:Redis 和 Varnish 设置中存在配置错误,导致结帐问题,由于结帐会话内存过载过多,导致结帐时间比用户预期的时间长得多。客户可以将产品添加到购物车中,继续结帐并单击“下订单”。
遇到错误:通过卡付款时,通过 PayPal 付款时出现严重错误,轮子永远旋转。
经过调查,付款成功,有时付款次数很多,因为他们认为事情失败并再次尝试。所有订单在支付提供商平台上都有订单号,例如 PayPal、Adyen、Amazon Pay。 然而,这些在 Magento 中并不存在。我们希望处理这些订单,但支付系统中没有足够的订单详细信息,例如产品信息(颜色尺寸/款式)。
对于等待 3-4 分钟页面完成并看到成功页面的客户,订单已在 Magento 后端成功创建。
有没有办法完成订单并在 Magento 2 中创建它,因为它似乎已经为 PayPal 和 Adyen 等支付系统中的交易分配了订单号,但 Magento 可见视图中没有订单?
订单号示例为 000046777
我正在将 Klarna 集成到与 Adyen 相关的沙盒环境中。我已经精确地遵循了文档,但遇到了一个问题,即小部件中没有显示“继续”按钮,从而阻止了结帐过程。
-预期的-
-实际(缺少按钮)-
重新创建的代码:
发布到: https://checkout-test.adyen.com/v67/payments
{
"merchantAccount": "MERCHANTLLC",
"reference": "123",
"paymentMethod": {
"type": "klarna_account"
},
"amount": {
"currency": "USD",
"value": 18210
},
"shopperLocale": "en_US",
"countryCode": "US",
"telephoneNumber": "1111111111",
"shopperEmail": "test@gmail.com",
"shopperName": {
"firstName": "John",
"lastName": "Doe"
},
"returnUrl": "http://someurl.com",
"lineItems": [
{
"quantity": 1,
"amountExcludingTax": "16900",
"taxPercentage": "775",
"description": "asdfasdf",
"id": "123",
"taxAmount": 1310,
"amountIncludingTax": "18210",
"productUrl": "http://producturl.com"
}
]
}
Run Code Online (Sandbox Code Playgroud)
它返回client_token:“ABC123”。然后使用该令牌通过klarna 文档加载小部件:
window['Klarna']['Payments'].init({
client_token: 'ABC123'
})
window['Klarna']['Payments'].load({
container: …Run Code Online (Sandbox Code Playgroud) 我正在尝试访问需要基本身份验证凭据的 Adyen 测试 API。https://docs.adyen.com/developers/ecommerce-integration
但是在尝试使用 XMLHttpRequest POST 请求访问 API 时,我收到了401 Unauthorized响应。
Javascript代码
var url = "https://pal-test.adyen.com/pal/servlet/Payment/v25/authorise";
var username = "ws@Company.CompanyName";
var password = "J}5fJ6+?e6&lh/Zb0>r5y2W5t";
var base64Credentials = btoa(username+":"+password);
var xhttp = new XMLHttpRequest();
xhttp.open("POST", url, true);
xhttp.setRequestHeader("content-type", "application/json");
xhttp.setRequestHeader("Authorization", "Basic " + base64Credentials);
var requestParams = XXXXXXXX;
xhttp.send(requestParams);
Run Code Online (Sandbox Code Playgroud)
结果
我从一些任意深度的嵌套数组开始。在该数组中,某些键是一系列用点分隔的令牌。例如“ billingAddress.street”或“ foo.bar.baz”。我想将这些键元素扩展为数组,因此结果是所有这些键都扩展了的嵌套数组。
例如:
[
'billingAddress.street' => 'My Street',
'foo.bar.baz' => 'biz',
]
Run Code Online (Sandbox Code Playgroud)
应该扩展为:
[
'billingAddress' => [
'street' => 'My Street',
],
'foo' => [
'bar' => [
'baz' => 'biz',
]
]
]
Run Code Online (Sandbox Code Playgroud)
可以在新的“ billingAddress”数组旁边保留原始的“ billingAddress.street”,但这不是必须的(因此解决方案可以在原始数组上运行或创建新的数组)。可能需要将其他元素(例如“ billingAddress.city”)添加到数组的同一扩展部分。
某些键可能有两个以上的令牌,这些令牌由点分隔,因此需要更深地扩展。
我已经看过了,array_walk_recursive()但这仅适用于元素。对于每个匹配的元素键,我实际上想修改这些元素所在的父数组。
我已经看过array_map,但是它不提供对键的访问,并且据我所知不是递归的。
扩展示例数组:
[
'name' => 'Name',
'address.city' => 'City',
'address.street' => 'Street',
'card' => [
'type' => 'visa',
'details.last4' => '1234',
],
]
Run Code Online (Sandbox Code Playgroud)
这将扩展为:
[
'name' => 'Name',
'address.city' => 'City', // Optional
'address' => …Run Code Online (Sandbox Code Playgroud) 我需要从 POS(销售点)(http)向支付终端(https)发出 POST 请求,它们连接在我的本地网络中。当我向邮递员发出请求时,一切正常,但每当我从 POS 发出请求时,我都会收到错误“POST https://myIPaddress:8443/nexo/ net::ERR_CERT_AUTHORITY_INVALID”
我尝试使用 xhr 对象并使用 jquery 发出请求,但我不断遇到同样的错误
jQuery
const settings = {
async: true,
crossDomain: true,
url: 'https://myIPAdress:8443/nexo/',
method: "POST",
data: JSON.stringify({
data
})
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Run Code Online (Sandbox Code Playgroud)
JS/xhr
var data = JSON.stringify({
data
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://myIPAdress:8443/nexo");
xhr.send(data);
});
Run Code Online (Sandbox Code Playgroud)
我希望能够将 POST 请求从 POS 发送到支付终端。
我正在尝试实施端到端概念验证来练习Adyen 的 Web Drop-In。粗略地说,这涉及三个步骤,如该 URL 所示,但为了方便起见,在此重复:
步骤1在服务器上完成,会话数据返回到浏览器。那部分工作正常。第 2 步必须在浏览器中完成,因为它需要 DOM,这(自然)是 CORS 问题出现的地方。这是有问题的代码:
const configuration = {
environment: "test",
clientKey: "test_APV***...",
session: {
id: uuidv4(),
sessionData: "Ab02b4c0!BQABAgBdJVhguRV6hEN..."
},
onPaymentCompleted: (result, component) => {
console.info(result, component);
},
onError: (error, component) => {
console.error(error.name, error.message, error.stack, component);
}
};
AdyenCheckout(configuration)
.then(checkout => {
const dropinComponent = checkout.create('dropin').mount('#dropin-container');
})
.catch(error => {
console.error('Creating Adyen Checkout: ', error.message)
})
}
Run Code Online (Sandbox Code Playgroud)
该行AdyenCheckout(configuration)失败,这会将执行线程放入处理程序中onError。在浏览器控制台中可以看到两个错误:
我正在尝试Adyen进行移动支付并陷入第1步......
我用一个按钮启动了一个演示活动PaymentActivity.这里有一些代码要详细说明:
btnCheckout = (Button) findViewById(R.id.btn_checkout);
btnCheckout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckoutRequest checkoutRequest = new CheckoutRequest();
try {
checkoutRequest.setBrandColor(R.color.adyen_green);
checkoutRequest.setBrandLogo(R.drawable.pay_button);
checkoutRequest.setCheckoutAmount(1.01f);
checkoutRequest.setCurrency(Currency.EUR);
//checkoutRequest.setToken(your_token);
checkoutRequest.setToken("thisISmyToken");
checkoutRequest.setTestBackend(true);//default is set to false. Set it to true if you want to use Adyen's test back-end.
Intent intent = new PaymentActivity.PaymentActivityBuilder(checkoutRequest).build(MainActivity.this, getBaseContext());
startActivity(intent);
} catch (CheckoutRequestException e) {
Log.e("SHARK", e.getMessage(), e);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我怎样以及在哪里找到这个your_token?我已经读过在CA下找到它 - >设置/用户但....我没有看到我应该在任何地方使用的令牌.我也失去了链接:/
请帮助,因为我甚至无法在没有令牌的情况下尝试示例代码.
可以允许adyen保留信用卡详细信息,并根据令牌或客户ID而不是信用卡信息向客户付款.我检查了adyen标记化方法,我找不到任何api文档的标记化方法(类似于条带化支付).
任何人请建议我.
我正在尝试将adyen api实现到我的项目中,我遇到了以下问题:
首先,我收到来自adyen的通知回调,其中AUTHORIZATION为true且传输状态为1,但在此之后,我没有收到任何其他通知.即使付款流程为CAPTURED为true,通知也不会到达.
我已经在adyen沙箱中测试了adyen通知,并且通知工作正常.以下是回调文件的代码示例:
if (($eventCode=="AUTHORISATION") && ($success=="true"))
{
if($paymentRecharge['status']!=0) //Check if status is placed only
{
ReleaseTableLock($orderID);
print('[accepted]');
return;
}
if (($paymentRecharge['adyen_amount']!=$value) || ($paymentRecharge['currency']!=$currency)) //Check to see if the paid value is the same as our value, otherwise this is Fraud
{
SetPaymentStatus($orderID,5);
ReleaseTableLock($orderID);
print('[accepted]');
return;
}
MarkAsAuthorised($orderID); //changes status to 1 - authorised
//check if we need to Capture automatically
if($adyenParams['adyen_capture']==1)
{
$adyen = new AdyenGateway();
$data = array();
$data["params"] = $adyenParams;
$data["userId"] = $paymentRecharge['customerId'];
$response;
$result=$adyen->Capture($data,$pspReference,$response,$paymentRecharge['userId'],$paymentRecharge['adyen_amount'],$paymentRecharge['currency']);
} …Run Code Online (Sandbox Code Playgroud) 我们正在使用 Angular 构建一个市场,并且希望集成 Adyen 支付。谷歌搜索“Adyen Angular”或“Adyen SPA”甚至“Adyen React”不会带来任何有用的结果。没有任何结果。
因此,我想知道为什么整个世界(包括 Adyen 文档)都没有谈论将 Adyen 集成到 SPA 中。
对我来说,它似乎并没有更容易受到网络安全攻击。至少我想不出任何理由。
请帮助我理解我错过了什么。
adyen ×12
payment ×4
php ×4
cors ×3
javascript ×3
android ×2
amazon-pay ×1
angular ×1
arrays ×1
ios ×1
jquery ×1
klarna ×1
magento-2.3 ×1
magento2 ×1
paypal ×1
react-native ×1
recursion ×1