3DSecure – Programmer’s Manual

Index

Introduction

This manual covers available methods for implementing 3D Secure (3DS) using Pelecard’s endpoints, with step-by-step integration flows.

The appropriate 3DS strategy depends on the business type:

  • Service-based businesses (e.g. gyms): a direct debit transaction is typically sufficient.
  • Product-based businesses (e.g. variable inventory): a card check or pre-authorization (hold) is recommended, with the final amount confirmed later.

Workflow + Methods

J Parameter – Action Types

Code Description
J2 Card check / Token save. No transaction made.
J5 Authorization (amount hold). No debit yet.
J4 Finalized debit transaction.

Token = encrypted value of credit card number + expiry date.

Methods

3DS via Iframe/Redirect Activated automatically on submit. Most commonly used. Enabled via parameter or default Pelecard setting.

3DS via API Manual 3DS authentication via REST API. Used when J2/J5 actions are made without knowing the full transaction amount. Token is saved for later processing.


Workflows with 3DSecure

(First step is always an Iframe)

Flow Description
J4 Simple debit with 3DS. Completed after Iframe closes.
J5 → J4 Authorization with 3DS in Iframe. Completed via REST API using J5 response parameters.
J2 → J4 Card check + token creation. Completed via REST API using J2 response parameters.
J2 → J5 → J4 Card check + token. Then J5 authorization via API. Completed using J5 response parameters.

⚠️ If J2/J5 is Step 1 and the amount is unknown, use Initiate3DSAuthenticationProcess.

Iframe

Method URL: https://gateway21.pelecard.biz/PaymentGW/init

Action 3DS Enabled 3DS Disabled
J2
J5
J4

1. J2 Card Check with 3DS

				
					{
  "terminal": "",
  "user": "",
  "password": "",
  "ActionType": "J2",
  "Total": "500",
  "currency": "376",
  "GoodURL": "https://gateway21.pelecard.biz/sandbox/landingpage",
  "CardHolderName": "must",
  "ThreeDSecure": {
    "Initiate": "True"
  }
}
				
			

Notes:

  • Full transaction amount must be sent in Total with ISO 4217 currency code.
  • CardHolderName must be set to "must".
  • Save Eci, XID, Cavv from response for later use.

2. J2 Card Check without 3DS

				
					{
  "terminal": "",
  "user": "",
  "password": "",
  "ActionType": "J2",
  "GoodURL": "https://gateway21.pelecard.biz/sandbox/landingpage"
}
				
			

Notes:

  • No Total or Currency required — J2 only validates card.
  • CardHolderName not required.

3. J5 Authorization (Amount Hold) with 3DS

				
					{
  "terminal": "",
  "user": "",
  "password": "",
  "ActionType": "J5",
  "Currency": "1",
  "Total": "12000",
  "GoodURL": "https://gateway21.pelecard.biz/sandbox/landingpage",
  "CardHolderName": "must",
  "ThreeDSecure": {
    "Initiate": "True"
  }
}
				
			

Notes:

  • If amount is unknown, use Initiate3DSAuthenticationProcess instead.
  • Total and Currency are required for J5.

4. J5 Authorization (Amount Hold) without 3DS

				
					{
  "terminal": "",
  "user": "",
  "password": "",
  "ActionType": "J5",
  "Currency": "1",
  "Total": "100",
  "GoodURL": "https://gateway21.pelecard.biz/sandbox/landingpage"
}
				
			

5. J4 Debit Request with 3DS

				
					{
  "terminal": "",
  "user": "",
  "password": "",
  "ActionType": "J4",
  "Currency": "1",
  "Total": "12000",
  "GoodURL": "https://gateway21.pelecard.biz/sandbox/landingpage",
  "CardHolderName": "must",
  "ThreeDSecure": {
    "Initiate": "True"
  }
}
				
			

Notes:

  • No additional step required after success.

API

Base URL: https://gateway21.pelecard.biz/services/[Method-Name]

1. J5 via API

A 3DS authentication must have been completed beforehand. Send eci, xid, cavv from the authentication response.

Method URL Description
AuthorizeCreditCard /services/AuthorizeCreditCard Authorize in 1 payment
AuthorizePaymentsType /services/AuthorizePaymentsType Authorize in installments
AuthorizeCreditType /services/AuthorizeCreditType Authorize in credit payments

1.1 AuthorizeCreditCard

				
					{
  "terminalNumber": "", "user": "", "password": "",
  "shopNumber": "", "creditCard": "", "creditCardDateMmYy": "",
  "Token": "", "total": "100", "createtoken": "",
  "currency": "1", "cvv2": "", "id": "", "paramX": "",
  "eci": "", "xid": "", "cavv": ""
}
				
			

1.2 AuthorizePaymentsType

				
					{
  "terminalNumber": "", "user": "", "password": "",
  "shopNumber": "", "creditCard": "", "creditCardDateMmYy": "",
  "token": "", "total": "100", "currency": "1",
  "paymentsNumber": "2", "firstPayment": "",
  "cvv2": "", "id": "", "paramX": "",
  "eci": "", "xid": "", "cavv": ""
}
				
			

1.3 AuthorizeCreditType

				
					{
  "terminalNumber": "", "user": "", "password": "",
  "shopNumber": "", "creditCard": "", "creditCardDateMmYy": "",
  "token": "", "total": "100", "currency": "1",
  "paymentsNumber": "2", "cvv2": "", "id": "", "paramX": "",
  "eci": "", "xid": "", "cavv": ""
}
				
			

2. J4 via API

Method URL Description
DebitRegularType /services/DebitRegularType Debit, 1 payment
DebitPaymentsType /services/DebitPaymentsType Debit in installments
DebitCreditType /services/DebitCreditType Debit in credit payments
CompleteDebitByUid /services/CompleteDebitByUid Completion after J5 (by UID)

Rules:

  • If last step was J2 with 3DS → must send eci, xid, cavv.
  • If last step was J5 with 3DS → send Token + Authorization number, OR use CompleteDebitByUID.

2.1 DebitRegularType

				
					{
  "terminalNumber": "", "user": "", "password": "",
  "shopNumber": "", "creditCard": "", "creditCardDateMmYy": "",
  "token": "", "total": "100", "currency": "1",
  "cvv2": "", "id": "", "authorizationNumber": "",
  "paramX": "test", "QAResultStatus": "",
  "eci": "", "xid": "", "cavv": ""
}
				
			

2.2 DebitPaymentsType

Same as above + paymentsNumber, firstPayment

2.3 DebitCreditType

Same as above + paymentsNumber

2.4 CompleteDebitByUID

				
					{
  "terminalNumber": "", "user": "", "password": "",
  "Uid": "", "NewAmount": "", "NewParamX": "",
  "debitTrxId": "", "NewTerminalNumber": ""
}
				
			

⚠️ Returns a different response than the other debit methods.

				
					{
  "StatusCode": "000",
  "ErrorMessage": "operation success",
  "ResultData": {
    "PelecardTransactionId": "2400278028",
    "VoucherId": "51-011-002",
    "ShvaResult": "000",
    "JParam": "4",
    "CreditCardNumber": "455743******3381",
    "CreditCardExpDate": "0426",
    "DebitTotal": "1002",
    "DebitApproveNumber": "0874329",
    "DebitCurrency": "1",
    "Token": "",
    "Uid": "25050416265408825770330",
    "eci": "", "xid": "", "cavv": "",
    "Terminal": "0882577012",
    "RRN": "512416874329"
  }
}
				
			

3. Initiate3DSAuthenticationProcess

URL: https://gateway21.pelecard.biz/services/Initiate3DSAuthenticationProcess

Used when the transaction amount is unknown at the time of J2/J5.

3.1 Request

				
					{
"terminalNumber": "", "user": "", "password": "",
"RedirectUrl": "https://gateway20.pelecard.biz/Sandbox/LandingPage3DS",
"BillingCurrencyCode": "ILS",
"BillingAmount": "500",
"CreditCardExpirationMonth": "04",
"CreditCardExpirationYear": "23",
"CreditCardNumber": "",
"Token": "",
"CardHolderName": "Israel Israeli",
"CardHolderEmail": "username@domain.co.il",
"CardHolderPhone": "", "CardHolderAddress": "",
"CardHolderCity": "", "CardHolderPostalCode": "",
"CardHolderCountry": "",
"HttpAcceptHeader": "*/*",
"BrowserScreenPixelsHeight": "600",
"BrowserScreenPixelsWidth": "800",
"BrowserLanguage": "he-IL",
"BrowserScreenBitDepth": "8",
"EndUserIPAddress": "127.0.0.1",
"UserAgent": "Mozilla/5.0 ...",
"TransactionFreeTextDescription": ""
}
				
			

3.2 Response

				
					{
"StatusCode": "000",
"ErrorMessage": "operation success",
"ResultData": {
"RequestId": "7005413",
"ChallengeRequired": true,
"ChallengeUrl": "https://gateway21.pelecard.biz/PaymentGW/ShvaThreeDSIndex?...",
"ProcessResultCode": "06",
"TranStatus": "C",
"XID": "402744a3-3fed-45b9-9595-f6f7068442f1",
"ServerTransID": "...",
"Version": "2.2.0"
}
}
				
			

TranStatus values:

Value Meaning
Y Authentication successful — save Eci, XID, Cavv
C Challenge required — redirect customer to ChallengeUrl
Other Authentication failed

Save RequestId for use in Get3dsData.

4. Get3dsData

Used to poll the status of an ongoing 3DS authentication.

4.1 Request

				
					{
  "terminalNumber": "", "user": "", "password": "",
  "requestid": ""
}
				
			

4.2 Response

				
					{
  "StatusCode": "000",
  "ErrorMessage": "operation success",
  "ResultData": {
    "RequestId": "7005413",
    "ChallengeRequired": false,
    "ProcessResultCode": "-38",
    "Eci": "00",
    "XID": "402744a3-3fed-45b9-9595-f6f7068442f1",
    "Version": "2.2.0"
  }
}
				
			

Note: Poll this endpoint every few seconds to get the authentication result quickly and redirect the user to the appropriate Good/Error page.