I have an issue during working on your API and 2pay.js library. I get a token from the card using this part of the code and submit the form(using this demo ):
<script>
window.addEventListener('load', function () {
// Initialize the 2Pay.js client.
let jsPaymentClient = new TwoPayClient('{{config('verifone.vendor_code')}}');
// Set the desired language to be used inside the iframe.
jsPaymentClient.setup.setLanguage('hr');
// Create the component that will hold the card fields.
let component = jsPaymentClient.components.create('card');
// Mount the card fields component in the desired HTML tag. This is where the iframe will be located.
component.mount('#card-element');
// Handle form submission.
document.getElementById('payment-form').addEventListener('submit', (event) => {
event.preventDefault();
// Extract the Name field value
const billingDetails = {
name: document.querySelector('#name').value
};
// Call the generate method using the component as the first parameter
// and the billing details as the second one
jsPaymentClient.tokens.generate(component, billingDetails).then((response) => {
let form = document.getElementById('payment-form');
let hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'verifoneToken');
hiddenInput.setAttribute('value', response.token);
form.appendChild(hiddenInput);
form.submit()
}).catch((error) => {
alert(error);
});
});
});
</script>
where I get tokens like this one: 8150cbb0-3253-4f4d-9add-22c60674550c But when I send a request something like this(example from their API):
$request_data = [
"Country" => "BA",
"Currency" => "EUR",
"CustomerIP" => '80.242.115.205',
"Language" => "hr",
"Source" => 'http://verifone_charge.test',
"BillingDetails" => [
"CountryCode" => "BA",
"Address1" => 'Demo Umjenovica 2',
"City" => 'Banja Luka',
"Zip" => '78000'
"FirstName" => 'John',
"LastName" => 'Doe',
"Email" => 'john@doe.com',
],
"Items" => [
[
'Code' => 1234332,
'Quantity' => 1,
]
],
"PaymentDetails" => [
"Currency" => "EUR",
"CustomerIP" => '180.148.115.05',
"PaymentMethod" => [
"EesToken" => 8150cbb0-3253-4f4d-9add-22c60674550c, "RecurringEnabled" => false,
],
"Type" => "TEST",
]
];
into https://api.2checkout.com/rest/6.0/orders/I get only this:
{"error_code":"ORDER_PAYMENT_METHOD_CARD_CURRENCY_INVALID","message":"The provided currency [EUR] is not supported with this card type. Supported currencies: []"}
Or when I put a token into a string like this:
...."PaymentMethod" => [
"EesToken" => '8150cbb0-3253-4f4d-9add-22c60674550c', "RecurringEnabled" => false,
],
I get this:
{"error_code":"INVALID_EES_TOKEN","message":"The token is not valid. In order to proceed with the place order a valid token is required"}
Can you tell me what I didn't work well? And how to fix it?