API REFERENCE
Betaling of autorisatie starten
Geldt voor betalingen op een fysieke POS-terminal
Deze API verstuurt betaal- of autorisatieopdrachten vanuit de merchantapp naar de betaalapp op de POS-terminal.
De app van de merchant moet worden ondertekend, verpakt en geüpload naar de TMS-marktplaats.
Betaling starten:
Op de POS-terminal is de betaalapp Switchio Pay vooraf geïnstalleerd. De app van de merchant moet met de betaalapp Switchio Pay communiceren om een betaling of autorisatie uit te voeren. Roep deze als volgt aan:
URI = "app://switchiopay/api/main/v7/payment"
| Parameter | Type | Beschrijving | Verplicht |
|---|---|---|---|
| transactionId | String | Transactie-ID | Verplicht |
| amount | int | Bedrag in centen; bijvoorbeeld: 1.5EUR is 150 | Verplicht |
| currencyCode | int | ISO 4217-valutacode; bijvoorbeeld 978 voor euro's | Verplicht |
| invoiceNumber | string | Aangepaste unieke ID, maximaal 20 tekens | Verplicht |
Voorbeeldcode:
/**
* Process an ECR payment according to the specification
* @param transactionId Transaction ID
* @param amount Payment amount in minor units
* @param invoiceNumber Custom transaction number
* @param currencyCode ISO 4217 numeric currency code (for example, 978=EUR, 208=DKK)
* @param callback Callback interface
*/
public void processPayment(String transactionId, int amount, String invoiceNumber, String currencyCode, ECRCallback callback) {
this.ecrCallback = callback;
try {
// Build the ECR v7 URI
JSONObject paymentData = new JSONObject();
paymentData.put("transactionId", transactionId);
paymentData.put("amount", amount);
paymentData.put("currencyCode", Integer.parseInt(currencyCode));
paymentData.put("invoiceNumber", invoiceNumber);
// Build the URI manually to ensure correct formatting
String uriString = "app://switchiopay/api/main/v7/payment?data=" +
android.net.Uri.encode(paymentData.toString());
Uri uri = Uri.parse(uriString);
Intent intent = new Intent(ECR_ACTION, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("data", paymentData.toString());
intent.putExtra("transactionId", transactionId);
intent.putExtra("amount", amount);
intent.putExtra("currencyCode", Integer.parseInt(currencyCode));
intent.putExtra("invoiceNumber", invoiceNumber);
// Launch the Activity and wait for the result
activity.startActivityForResult(intent, ECR_PAYMENT_REQUEST_CODE);
Log.d(TAG, "ECR payment Intent sent; waiting for the result...");
} catch (Exception e) {
Log.e(TAG, "Payment processing exception", e);
Log.e(TAG, "Exception details: " + e.getMessage());
if (callback != null) {
callback.onError("Payment processing error: " + e.getMessage());
}
}
Log.d(TAG, "=== processPayment completed ===");
}
Voorbeeld van een aanvraag:
app://switchiopay/api/main/v7/preauth?data={"transactionId":"88bb2366-716d-11ed-a1eb-0242ac120002","amount": 1200,"currencyCode":978,"invoiceNumber": "123456789012345678"}
Voorbeeld van een antwoord:
{
"aid": "A0000000283101",
"amount": 500,
"cashbackAmount": 1500,
"aosa": "null",
"appCryptogram": "5F52BA71C7B45441",
"appLabel": "Air Bank",
"authCode": "114546",
"availableBalance": "1000",
"brand": "MASTERCARD",
"cardHolderMessage": "Approved",
"cardInputType": "CLESS",
"cid": "80",
"currency": 203,
"cvmTypeList": [
"PIN_ONLINE"
],
"dateTimeServer": "Jul 16, 2025 14:40:50",
"dateTimeTerminal": "Jul 16, 2025 14:39:37",
"driverNumber": "123456",
"emvResponseData": {
"smartCardScheme": "1",
"authorisationResponseCode": "00"
},
"expiration": "****",
"invoiceNumber": "VS353464556789780",
"isReversed": false,
"merchantIdAcquirer": "TNEXGO01",
"merchantIdIssuer": "1357",
"merchantMessage": "Approved",
"monetToken": "MONETTOKEN",
"odometer": 65403,
"pan": "970348******3910",
"par": "PAR",
"panSequenceNumber": "00",
"refundId": "1234567890",
"responseCode": "OK",
"responseMessage": "potvrzeno",
"reversal": false,
"sequenceNumber": "001001614",
"tipAmount": 100,
"terminalIdAcquirer": "M1TNEXGO01",
"terminalIdIssuer": "M1TNEXGO01",
"tokens": [
"fkdfkjbekjrhljb"
],
"transactionId": "48a3ea7d-b82f-4b42-abbb-5043365e4faa",
"transactionType": "SALE_ONLINE",
"vehicleCode": "1A21234",
"licensePlate": "EL100AC",
"authorizationResponseCode": "00"
}
Resultaat:
-
Bij een geslaagde aanroep wordt "responseCode": OK or Approved geretourneerd.
-
Bij een mislukte aanroep wordt "responseCode": other value geretourneerd.
Opmerking: sla de geretourneerde waarde par op om de kaart-ID van de gebruiker op te halen.
