This chapter will describe the flow of performing either a one-time or recurring payment.
Table of Contents | ||
---|---|---|
|
Step 1: Request a payment
...
Request example for one-time payment:
{ "transaction" : { "merchantId": "7699cab7-2dfa-4981-9c90-0d0c93c801ac ", "amount": "10.00", "currency": "EUR", "country": "NL", "description": "TestPayment", "accountHolderName" : "Test account holder" // Account holder name }, "password": "MerchantTestPassword" // Merchant transaction password, provided by Globadyme } |
---|
The following transaction fields are mandatory for all payments:
...
Example of a Klarna payment request:
{ "transaction": { "merchantId": "7699cab7-2dfa-4981-9c90-0d0c93c801ac", "amount": "250.00", "currency": "EUR", "country": "NL", "description": "KlarnaTestTransaction", "accountHolderName" : "Test account holder" // Account holder name "klarnaSpec": { "billingAddress": { "attention": "Attn", "email": "test@test.com", "city": "Amsterdam", "familyName": "Janssen", "givenName": "Piet", "phoneNumber": "+31612345678", "postalCode": "1021AA", "region": "Noord-Holland", "streetAddress1": "Kasteelstraat 123", "streetAddress2": "Amsterdam", "title": "Hr." }, "orderItems": [{ "name": "Waterbottle", "quantity": 2, "totalAmount": 10000, "unitPrice": 5000 }, { "name": "Macbook", "quantity": 1, "totalAmount": 15000, "unitPrice": 15000 } ] } }, "password" : " MerchantTestPassword" } |
The following fields are mandatory for recurring payments:
...
Example of recurring payment request:
{ "transaction": { "merchantId": "7699cab7-2dfa-4981-9c90-0d0c93c801ac", "amount": "250.00", "country": "NL", "currency": "EUR", "description": "Test recurring transaction", "accountHolderName" : "Test account holder", // Account holder name "transactionRecurrenceType": "FIRST", "recurrences": [{ "recurrenceStatus": "ACTIVE", "startDate": "2023-08-31", "recurrenceAmount": "90.00", "recurrenceFrequency": "MONTHLY" } ] }, "password" : "MerchantTestPassword" } |
The following fields are mandatory for SEPA payments:
...
Example of a SEPA payment request:
{ "transaction": { "merchantId": "7699cab7-2dfa-4981-9c90-0d0c93c801ac", "amount": "368.00", "currency": "EUR", "country": "NL", "description": "TestSEPASpecTST", "accountHolderName": "Test klant SEPA", "sepaSpec": { "emailAddress": "klant@harry.com", "postalAddress": "klantstraat 14 5920JQ Klantstad", "iban": "ES9121000418450200051332" } }, "password" : "dumdum" } |
Step 2: Receive a response
...
Response example for any (one-time or recurring) transaction:
{ "message": "OK", "details": { "requestId": "852f0c72-0024-4070-9ac7-563eeb4755f6" // Unique ID for this request "redirectUrl": "https://dev.globadyme.com/pay?data=0f628205c22995c7eda38b96b336df05421b3464055fc756cb8a61ce2d052bf35f80a0d43fc6541152a58644b2952927b86e5333b4d0d94c8a30d5b3c17b3fd68af5246aa0e37b261375646d519c2539d4f6fd01254474ab66221835a9604ad27c7d8d3a31d601c3937e322b0d5c87482229e008ccd28dce88fd98cbfba4014a8c6a999698628ca08b8fc8988696cf08fac22c61a431c9d0384255b3e7ac3ffdc264446bb45ac5dbad38411a93ce2d3ae11f2a0b078e6dea72c662152d5e862e5e59e26ce32a4f51448c3bec26d8b211706cbc83e70fa87536ced4cacdb2f844b5651e3d6ce5aa7dbb57b556b1cafda0f2f9fd9742106d324a857e577dd47bf50031653f0554e0e3226b46783544734ed3c5136f03f6ce6ac9b39b126395671169c0342c7807e0332342d090b58890be9a872be5d7b23b6b8f0bd1d1ac600330700f247a2cb2b77e345549fe4d743b3c02ee116640e9cc338fb9023b21f19b69bc2515ed3bf498d003a7c495d2fb520b864e580242ef94a294db6f431015bf5c644e23f09e94718635eafccfbd7c946654d0ba9560fe7d57dec1b2209d713c3a6767a76ede2ff6d2b51b17d9d7073c078419599e6675815776b9285af5e661b80f6402bb2c85a9edadae2817bb50b9f069610e0376b16b88a2d1f9cef2820e5be7b2e7deb52d2ab85d10f5ca526cf7feb20408b74481ef7ec579af79092e4afdd66dbe63e906eadf316fc5a193f52af7db22532e793ba5c6e2e35e1a4dbf8e2a6c9aa65cfc8c4e8c8617a89d24dc93c2050cf2fcc5f2c24eff778c3a3ff83183eb4117a2ce55f0f09bf0282c3d328f423efb4c30cebcfaf9d25ebfbf55341d099561aac5a1bc1d9d33d40457f3b5cb55c5b53c0fc1dacc47e4f4ec5a64c282d27664375d0ed30986ebcb77532be586c14cdca31ffc9dfffbc5fa1d76d0de0524aff98db0040b58802371ac48632aec8a160ff023bbda12c36ca1d2b85dbde0513884f6f233c73c5dc32bb4216ffe9c5e93e12c0390a1b9ba1dbf81a9bb251c79903a09781fb1bfa5e821e5ab8af980e01ba2629fb957299517cab38ce42888f90d72e8cc8a96d70b96c42446e325c66734bd77e62ddc5c0d73e1551cd1dd5cdccea169fc21e23c5a2ba674de86ba4c8a573933b224bb538141e06d639b6cf0073894104315c4b0f581e191bda8ed5ed3ae2779db24c3a49837b02f2652bd317f3cb28040eb0885acd4edb1ac4240e56dfdbddd10fc2edf9946f11a819369f665de2753bab777583e113f7f8c847e34be6b0d3a6cf103f2d01cb90a583589b0d82b7aa3d6210d9673dca12166bf507d175dd15d2ef06699f9009ec2478ee73a49d3864ec5c9281068f77978594755ad84d347f892aa2099c91633e3cf328965f67e17470d39daa4b35ab13983ee6f0486f9372b7a79329595640f9ef6196b211c5f3ebb7f887d58cb69a6c20db44971832a936a4c0dbfeb37dfed7b6336adf1d3529f140306316a5eb12b9539edc16d3410800197ae196ef02e6150d47d1adc11a0c3d1f37d6ed5b3db19be19e557ad92da8286249536ed6116178ae0a08dedec6c7ce76f7d52c2eacb4a0c473d4387ad23784912a61d7948d8a9ecf5ff32e040ae889a6cd49884aeea545c12fb7752a2c05ddb7d42c4b23b59d2062d31a1235f8bb3b9b5426d484403b73a8a63be591292d80151ec2ad345072d153d6e0b11f6689b8472c4dad421e06502392bea0fbf66fb8d93613d20104ee8d8c2f7865a4a6021aa315e25657fd9aaedcd8429fae352542231bfafedfbdd83b8aad72ecfa40703b27306e4956eb6f96b7473fab254e6d8e705add9fa2910a2e673055dd716f0d9ccce060cf15e5022864565ec36bcec430f06ea70f8fe3eeafeb301517a9e4af367794803ea2d0efe8ddb7ab24a36d55d07c3b9e77a38599c6b03f84ceb830eb1fa1944f66efe9b24179c53e821692ec0e2ced394f8971ccdd294e9a9fb379e978fd0b06afc928dd7da8149060cadb0ebd38d936eb019745c00d1f0e7a4d6879eb7ce1e0734e1bab61eb733fb184e9fde20c140096f068605de0e5b3ea112e46d0cee8f84b159884d4169f3b702f12bf832ea415db0abf68a72917b3ad0e0c7c17d788f3547e896add17f442307dd64aa05135bf1d206635e5d76052fac843aca69abe1a1efb4a9d0829b11d4968e6337a3a90d21c2488cdeb0b9ce97901b1b49ddec9bc2bf41a3b76c68b380d8bc2a08bad08aad8e3a8f68", } } |
Step 3a: Redirect your customer to the redirectUrl provided in the response.
...
Url: https://sandbox.globadyme.com/api/globadymeGateway/transaction/initiatePayment
{ "encryptedTransaction": "0f628205c22995c7eda38b96b336df05421b3464055fc756cb8a61ce2d052bf35f80a0d43fc6541152a58644b2952927b86e5333b4d0d94c8a30d5b3c17b3fd68af5246aa0e37b261375646d519c2539d4f6fd01254474ab66221835a9604ad27c7d8d3a31d601c3937e322b0d5c87482229e008ccd28dce88fd98cbfba4014a8c6a999698628ca08b8fc8988696cf08fac22c61a431c9d0384255b3e7ac3ffdc264446bb45ac5dbad38411a93ce2d3ae11f2a0b078e6dea72c662152d5e862e5e59e26ce32a4f51448c3bec26d8b211706cbc83e70fa87536ced4cacdb2f844b5651e3d6ce5aa7dbb57b556b1cafda0f2f9fd9742106d324a857e577dd47bf50031653f0554e0e3226b46783544734ed3c5136f03f6ce6ac9b39b126395671169c0342c7807e0332342d090b58890be9a872be5d7b23b6b8f0bd1d1ac600330700f247a2cb2b77e345549fe4d743b3c02ee116640e9cc338fb9023b21f19b69bc2515ed3bf498d003a7c495d2fb520b864e580242ef94a294db6f431015bf5c644e23f09e94718635eafccfbd7c946654d0ba9560fe7d57dec1b2209d713c3a6767a76ede2ff6d2b51b17d9d7073c078419599e6675815776b9285af5e661b80f6402bb2c85a9edadae2817bb50b9f069610e0376b16b88a2d1f9cef2820e5be7b2e7deb52d2ab85d10f5ca526cf7feb20408b74481ef7ec579af79092e4afdd66dbe63e906eadf316fc5a193f52af7db22532e793ba5c6e2e35e1a4dbf8e2a6c9aa65cfc8c4e8c8617a89d24dc93c2050cf2fcc5f2c24eff778c3a3ff83183eb4117a2ce55f0f09bf0282c3d328f423efb4c30cebcfaf9d25ebfbf55341d099561aac5a1bc1d9d33d40457f3b5cb55c5b53c0fc1dacc47e4f4ec5a64c282d27664375d0ed30986ebcb77532be586c14cdca31ffc9dfffbc5fa1d76d0de0524aff98db0040b58802371ac48632aec8a160ff023bbda12c36ca1d2b85dbde0513884f6f233c73c5dc32bb4216ffe9c5e93e12c0390a1b9ba1dbf81a9bb251c79903a09781fb1bfa5e821e5ab8af980e01ba2629fb957299517cab38ce42888f90d72e8cc8a96d70b96c42446e325c66734bd77e62ddc5c0d73e1551cd1dd5cdccea169fc21e23c5a2ba674de86ba4c8a573933b224bb538141e06d639b6cf0073894104315c4b0f581e191bda8ed5ed3ae2779db24c3a49837b02f2652bd317f3cb28040eb0885acd4edb1ac4240e56dfdbddd10fc2edf9946f11a819369f665de2753bab777583e113f7f8c847e34be6b0d3a6cf103f2d01cb90a583589b0d82b7aa3d6210d9673dca12166bf507d175dd15d2ef06699f9009ec2478ee73a49d3864ec5c9281068f77978594755ad84d347f892aa2099c91633e3cf328965f67e17470d39daa4b35ab13983ee6f0486f9372b7a79329595640f9ef6196b211c5f3ebb7f887d58cb69a6c20db44971832a936a4c0dbfeb37dfed7b6336adf1d3529f140306316a5eb12b9539edc16d3410800197ae196ef02e6150d47d1adc11a0c3d1f37d6ed5b3db19be19e557ad92da8286249536ed6116178ae0a08dedec6c7ce76f7d52c2eacb4a0c473d4387ad23784912a61d7948d8a9ecf5ff32e040ae889a6cd49884aeea545c12fb7752a2c05ddb7d42c4b23b59d2062d31a1235f8bb3b9b5426d484403b73a8a63be591292d80151ec2ad345072d153d6e0b11f6689b8472c4dad421e06502392bea0fbf66fb8d93613d20104ee8d8c2f7865a4a6021aa315e25657fd9aaedcd8429fae352542231bfafedfbdd83b8aad72ecfa40703b27306e4956eb6f96b7473fab254e6d8e705add9fa2910a2e673055dd716f0d9ccce060cf15e5022864565ec36bcec430f06ea70f8fe3eeafeb301517a9e4af367794803ea2d0efe8ddb7ab24a36d55d07c3b9e77a38599c6b03f84ceb830eb1fa1944f66efe9b24179c53e821692ec0e2ced394f8971ccdd294e9a9fb379e978fd0b06afc928dd7da8149060cadb0ebd38d936eb019745c00d1f0e7a4d6879eb7ce1e0734e1bab61eb733fb184e9fde20c140096f068605de0e5b3ea112e46d0cee8f84b159884d4169f3b702f12bf832ea415db0abf68a72917b3ad0e0c7c17d788f3547e896add17f442307dd64aa05135bf1d206635e5d76052fac843aca69abe1a1efb4a9d0829b11d4968e6337a3a90d21c2488cdeb0b9ce97901b1b49ddec9bc2bf41a3b76c68b380d8bc2a08bad08aad8e3a8f68", "requestId": "852f0c72-0024-4070-9ac7-563eeb4755f6", "paymentMethod": "IDEAL", "bank": "ING" } |
Mandatory elements:
encryptedTransaction: The encrypted transaction as received in the return url in step 2.
requestId: The request ID as received in step 2.
paymentMethod: The payment method as chosen by the consumer. Case insensitive. Valid payment methods:
IDEAL: In case of an IDEAL payment, the ‘bank’ element must be specified. Valid bank values:
NN
ING
ABNAMRO
KNAB
ASN
RABO
BUNQ
REGIOBANK
REVOLUT
SNS
TRIODOS
VANLANSCHOT
YOURSAFE
N26
PAYPAL
KLARNA
CREDITCARD
EPS
GIROPAY
SOFORT
PAYCONIQ
SEPA
BANCONTACT
...
Example in Java:signatureHash = bytesToHex(digest.digest((notification + notifySecret).getBytes()));
Example of a callback:
{ "id": "055ff314-6399-4350-8b8b-c9cd1e22a065", "amount": 10.00, "status": { "displayName": "Processed successfully", "name": "PROCESSED" }, "paymentMethod": "IDEAL", "currency": "EUR", "country": "NL", "description": "TestPayment", "feeCalculation": { "sellPercentage": 0.00, "sellCents": 15 }, "timestamp": "2024-01-20T13:05:51.948873470Z", "requestId": "852f0c72-0024-4070-9ac7-563eeb4755f6" } |
Step 5: Optional - Request payment status
...
The endpoint expects a GET request with an application/json Content-Type.
Example of a request:
{ "password": "apiPassword", // Merchant transaction password, provided by Globadyme "merchantId": "7699cab7-2dfa-4981-9c90-0d0c93c801ac", // Merchant UUID "requestId": "3bdf2480-4ae6-44a1-bce0-3710d89cbfc4" } |
Mandatory fields:
password: The API password as provided by Globadyme
merchantId: The merchant UUID as provided by Globadyme
requestId: The requestId as received in response to the concerning /requestPayment call
Example of a response:
{ "message": "PaymentByRequestId", "details": { "requestId": "3bdf2480-4ae6-44a1-bce0-3710d89cbfc4", "transactions": [ { "id": "f791c1e4-39eb-4bd1-8201-0460d560fef1", "created": "2024-01-15T17:21:26.550656Z", "status": "PROCESSED", "amount": 10.0, "currency": "EUR", "country": "NL", "paymentMethod": "iDEAL", "accountholderName": "Oebele de Rekeninghouder", "requestId": "3bdf2480-4ae6-44a1-bce0-3710d89cbfc4" } ] } } |
Note: The response object contains a ‘transactions’ list because it is possible that one request has produced more than one transaction. For example: an end user has initiated a payment using payment method A and decided not to complete the payment. After pressing ‘back’, the end user initiated a new payment using payment method B. In this case, there can be more than one transaction with the same requestId:
{ "message": "PaymentByRequestId", "details": { "requestId": "3bdf2480-4ae6-44a1-bce0-3710d89cbfc4", "transactions": [ { "id": "c018be0a-a633-40c8-805a-a2dfd6090af8", "created": "2024-01-30T22:20:25.822136Z", "status": "PENDING", "amount": 10.0, "currency": "EUR", "country": "NL", "paymentMethod": "Creditcard", "accountholderName": "Oebele de Rekeninghouder", "requestId": "3bdf2480-4ae6-44a1-bce0-3710d89cbfc4" }, { "id": "b88e446c-6889-4cc1-958e-10a4ed951ace", "created": "2024-01-30T22:20:32.424212Z", "status": "PROCESSED", "amount": 10.0, "currency": "EUR", "country": "NL", "paymentMethod": "iDEAL", "accountholderName": "Oebele de Rekeninghouder", "requestId": "3bdf2480-4ae6-44a1-bce0-3710d89cbfc4" } ] } } |
In this case one can check if there is any transaction with a “PROCESSED” status to confirm that a successful payment has been made.
...