This service can be used by the Payment Connector to initiate a Token on a card via a Payment Terminal of the Payment Terminals Provider or via online channel.
COMPATIBILITY
Type | Compatibility |
---|---|
Card present (CP) | Yes |
Card not present (CNP) | Yes |
TOKEN CARD PRESENT
REQUEST
Type | Endpoint |
---|---|
POST | /payment/v1/interface/terminalprovider/tokenize |
PARAMETERS
Request on Card present mode follows NEXO protocol:
Name |
Type |
Description |
CP mandatory |
CNP mandatory |
Example |
MessageHeader |
defined data structure |
Message header of the Sale to POI protocol message |
Y |
|
|
MessageClass |
Enum |
Class of the message |
Y |
|
Service |
MessageCategory |
Enum |
Category of the message. |
Y |
|
Payment |
MessageType |
Enum |
Type of message of the Sale to POI protocol |
Y |
|
Request |
ServiceID |
TextString {1,10} |
Identification of a message pair, which processes a transaction |
Y |
|
H9732FO20101315118TK |
SaleID |
TextString |
Identification of a Sale System or a Sale Terminal for the Sale to POI protocol |
Y |
|
w-eu-h0416FLS1 |
POIID |
TextString
|
Identification of a POI System or a POI Terminal for the Sale to POI protocol |
Y |
|
CP: AUTO |
PaymentRequest |
defined data structure |
Content of the Payment Request message |
Y |
|
|
SaleData |
defined data structure |
Data related to the Sale System. |
Y |
|
|
OperatorID |
TextString |
Identification of the Cashier or Operator Allow to identify the origin of the transaction in the provider extranet |
Y |
|
FOLS |
SaleTransactionID |
defined data structure |
Unique identification of a Sale transaction |
Y |
|
|
TransactionID |
TextString |
Unique identification of a transaction Could be empty but field should always be present |
Y |
|
|
TimeStamp |
ISODateTime
|
Date and time of a transaction for the Sale System, the POI System or the Acquirer |
Y |
|
"2019-07-09T23:18:00-05:00" |
TokenRequestedType |
Enum |
If a token is requested.
|
Y |
|
Customer
|
PaymentTransaction |
defined data structure |
Data related to the payment and loyalty transaction |
Y |
|
|
AmountsReq |
defined data structure |
Various amounts related to the payment and loyalty request from the Sale System
|
Y |
|
|
Currency |
ISOCurrency3A
|
Currency of a monetary amount
|
Y |
|
EUR |
PaymentData |
defined data structure |
Data related to the payment transaction |
Y |
|
|
PaymentType |
Enum |
this element will define the type of message sent.
|
Y |
|
TokenOnly |
RESPONSE
Name |
Type |
Description |
CP mandatory |
CNP mandatory |
Example |
MessageHeader |
defined data structure
|
|
Y |
|
|
MessageClass |
Enum |
Copy from request |
Y |
|
Service |
MessageCategory |
Enum |
Payment |
Y |
|
Payment |
MessageType |
Enum |
Response |
Y |
|
Response |
ServiceID |
TextString {1,10}
|
Copy from request |
Y |
|
H9732FO20101315118TK |
SaleID |
TextString |
Copy from request |
Y |
|
w-eu-h0867FLS1 |
POIID |
TextString
|
Terminal Identification Set to Terminal Identification |
Y |
|
CP: AUTO |
PaymentResponse |
defined data structure |
Content of the Payment Response message |
Y |
|
|
Response |
defined data structure |
Result of a message request processing.
|
Y |
|
|
Result |
Enum |
Transaction Result
|
Y |
|
Success
|
ErrorCondition |
Enum |
If the result is set to Failure then the condition should be part of the message.
Transaction Result If Transaction Result = VOICE AUTHORISATION, set ErrorCondition = "Referral" |
N |
|
DeviceOut |
AdditionnalResponse |
TextString |
Processing Status, Nok Reason, Terminal Verification Results (TVR) and Transaction Status Information (TSI).
Set as TLV structure |
N |
|
|
SaleData |
defined data structure |
Data related to the Sale System |
Y |
|
|
SaleTransactionID |
defined data structure |
Copy from request Unique identification of a Sale transaction |
Y |
|
|
TransactionID |
TextString |
Unique identification of a Sale transaction Field present but empty |
Y |
|
|
TimeStamp |
ISODateTime
|
Date and time of a transaction for the Sale System, the POI System or the Acquirer. |
Y |
|
2020-07-09T09:18:00-05:00 |
POIData |
defined data structure |
Data related to the POI System. |
Y |
|
|
POITransactionID |
defined data structure |
Unique identification of a POI transaction for a POI |
Y |
|
|
TransactionID |
TextString |
Transaction Sequence Counter Identification of the transaction on the samle system or on the POI system |
Y |
|
770223422195 |
TimeStamp |
ISODateTime |
Date and time of a transaction for the Sale System, the POI System or the Acquirer |
Y |
|
2020-07-09T09:18:00-05:00 |
PaymentResult |
defined data structure |
Data related to the result of a processed payment transaction If one data element is present |
Y |
|
|
PaymentType |
Enum |
Copy, default Normal |
Y |
|
TokenOnly |
PaymentInstrumentData |
defined data structure |
If a payment instrument is analysed by the POI. |
Y |
|
|
PaymentInstrumentType |
Enum |
Type of payment instrument - Card - Token |
Y |
|
Card |
CardData |
defined data structure |
If PaymentInstrumentType is "Card" Information related to the payment card used for the transaction |
Y |
|
|
PaymentBrand |
TextString |
Type of payment card. One digit identifier with the meaning below: V - VISA N - VISAElectron P - VPAY M - MasterCard E - Maestro A - Amex |
Y |
|
V
|
MaskedPAN |
TextString |
PAN masked required for the card, instead of clear PAN |
Y |
|
xxxxxxxxxxxx4121 |
EntryMode |
Enum |
Copy from request Technology selected |
Y |
|
File |
SensitiveCardData |
defined data structure |
Sensitive information related to the payment card, entered or read by the Sale System |
Y |
|
|
ExpiryDate |
DigitString {4,4} |
Expiration Date If data available on the card |
Y |
|
1222 |
PaymentToken |
defined data structure |
If a payment token has been requested in the request message, or in the Login request for the session. |
Y |
|
|
TokenRequestedType |
Enum |
Copy from request
|
Y |
|
Customer |
TokenValue |
TextString
|
This field will contain the token number generated and sent by the payment provider. |
Y |
|
2068236741600135 |
AmountsResp |
defined data structure |
If Result is Success or Partial Various amounts related to the payment response from the POI System |
Y |
|
|
Currency |
ISOCurrency3A |
Currency of a monetary amount. Mandatory for currency conversion. |
Y |
|
EUR |
AuthorizedAmount |
SimpleAmountType
|
Transaction Amount Send authorised value to Sale System Application |
Y |
|
0.00 |
PaymentAcquirerData |
defined data structure |
If card is analysed and data available |
Y |
|
|
AcquirerID |
DigitString
|
Identification of the Acquirer Identifications of the Acquirer when the POI System is multi-acquirer |
Y |
|
1 |
MerchantID |
TextString |
Merchant Identifier for the acquirer |
Y |
|
64022201 |
AcquirerPOIID |
TextString |
Identification of the POI for the payment acquirer |
Y |
|
54017810 |
ApprovalCode |
TextString |
Authorisation Code if available (code sent by the acquirer) |
Y |
|
936069 |
PaymentReceipt |
defined data structure |
Customer or Merchant payment receipt
Number of occurrences will be controlled by terminal parameters. ECR must support 0, 1 or 2 occurrences of this tag. 0 – No receipt will be printed 1 – Only one receipt copy will be printed, type will be specified by DocumentQualifier 2 – Two receipt copies to be printed, each type specified by DocumentQualifier. |
Y |
|
|
DocumentQualifier |
Enum |
Qualification of the document to print to the Cashier or the Customer CustomerReceipt CashierReceipt |
Y |
|
MerchantReceipt |
RequiredSignatureFlag |
Boolean |
Indicates that the payment receipt requires a physical signature line. |
Y |
|
false |
OutputContent |
defined data structure |
Content to display or print |
Y |
|
|
OutputFormat |
Enum |
Always set to “Text” - The DisplayOutput is then an OutputText data structure. |
Y |
|
Text |
OutputText |
defined data structure |
At least one occurrence of this tag will be required when OutputFormat is set to “Text”. Each occurrence will be a formatted receipt line. |
Y |
|
|
Text |
TextString |
Formatted receipt line content to be printed. Character set will be Basic Latin. |
Y |
|
MERCHANT RECEIPT |
EndOfLineFlag |
Boolean |
Indicates if the characters of the displayed Text must be terminated by an end of line. |
Y |
|
true |
EXAMPLE 1
This example show request/response for a card present transaction.
Example of request :
"SaleToPOIRequest": { "MessageHeader": { "MessageCategory": "Payment", "MessageClass": "Service", "MessageType": "Request", "POIID": "AUTO", "SaleID": " W-l5487", "ServiceID": "H9732FO20101315118TK" }, "PaymentRequest": { "PaymentData": { "PaymentType": "TokenOnly" }, "PaymentTransaction": { "AmountsReq": { "Currency": "EUR" } }, "SaleData": { "OperatorID": "FOLS", "SaleTransactionID": { "TimeStamp": "2020-10-13T10:30:29+02:00", "TransactionID": "" }, "TokenRequestedType": "Customer" } } } } |
Example of response :
{ "SaleToPOIResponse": { "MessageHeader": { "MessageCategory": "Payment", "MessageClass": "Service", "MessageType": "Response", "POIID": "54017810", "ProtocolVersion": "3.1", "SaleID": "W-l5487", "ServiceID": "H9732FO20101315118TK" }, "PaymentResponse": { "POIData": { "POITransactionID": { "TimeStamp": "2020-10-13T10:30:51.934", "TransactionID": "770223422195" } }, "PaymentReceipt": [ { "DocumentQualifier": "CashierReceipt", "OutputContent": { "OutputFormat": "Text", "OutputText": [ { "EndOfLineFlag": true, "Text": "Accor PAX test" }, { "EndOfLineFlag": true, "Text": "--------------------------------" }, { "EndOfLineFlag": true, "Text": "" }, { "EndOfLineFlag": true, "Text": "13.10.2020 10:30:45" }, { "EndOfLineFlag": true, "Text": " MERCHANT RECEIPT" }, { "EndOfLineFlag": true, "Text": "--------------------------------" }, { "EndOfLineFlag": true, "Text": "TERMINAL: 54017810" }, { "EndOfLineFlag": true, "Text": "DEVICE NAME: 54017810" }, { "EndOfLineFlag": true, "Text": "MERCHANT: 640500100" }, { "EndOfLineFlag": true, "Text": "PAN: XXXXXXXXXXXX0050" }, { "EndOfLineFlag": true, "Text": "AID: A0000000031010" }, { "EndOfLineFlag": true, "Text": "CARD TYPE: V" }, { "EndOfLineFlag": true, "Text": "EMV CHIP" }, { "EndOfLineFlag": true, "Text": " TOKEN REQUEST" }, { "EndOfLineFlag": true, "Text": "REFERENCE: 803" }, { "EndOfLineFlag": true, "Text": "AMOUNT: EUR 0,00" }, { "EndOfLineFlag": true, "Text": "AUTHORISATION CODE: 000000" }, { "EndOfLineFlag": true, "Text": "CARD TOKEN: 2125534309170050" }, { "EndOfLineFlag": true, "Text": " (00)" }, { "EndOfLineFlag": true, "Text": " APPROVED" }, { "EndOfLineFlag": true, "Text": " OFFLINE PIN" }, { "EndOfLineFlag": true, "Text": " PLEASE RETAIN FOR YOUR RECORDS" }, { "EndOfLineFlag": true, "Text": "" } ] }, "RequiredSignatureFlag": false }, { "DocumentQualifier": "CustomerReceipt", "OutputContent": { "OutputFormat": "Text", "OutputText": [ { "EndOfLineFlag": true, "Text": "Accor PAX test" }, { "EndOfLineFlag": true, "Text": "--------------------------------" }, { "EndOfLineFlag": true, "Text": "" }, { "EndOfLineFlag": true, "Text": "13.10.2020 10:30:45" }, { "EndOfLineFlag": true, "Text": " CARDHOLDER RECEIPT" }, { "EndOfLineFlag": true, "Text": "--------------------------------" }, { "EndOfLineFlag": true, "Text": "TERMINAL: 54017810" }, { "EndOfLineFlag": true, "Text": "DEVICE NAME: 54017810" }, { "EndOfLineFlag": true, "Text": "MERCHANT: 640500100" }, { "EndOfLineFlag": true, "Text": "PAN: XXXXXXXXXXXX0050" }, { "EndOfLineFlag": true, "Text": "AID: A0000000031010" }, { "EndOfLineFlag": true, "Text": "CARD TYPE: V" }, { "EndOfLineFlag": true, "Text": "EMV CHIP" }, { "EndOfLineFlag": true, "Text": " TOKEN REQUEST" }, { "EndOfLineFlag": true, "Text": "REFERENCE: 803" }, { "EndOfLineFlag": true, "Text": "AMOUNT: EUR 0,00" }, { "EndOfLineFlag": true, "Text": "AUTHORISATION CODE: 000000" }, { "EndOfLineFlag": true, "Text": " (00)" }, { "EndOfLineFlag": true, "Text": " APPROVED" }, { "EndOfLineFlag": true, "Text": " OFFLINE PIN" }, { "EndOfLineFlag": true, "Text": " PLEASE RETAIN FOR YOUR RECORDS" }, { "EndOfLineFlag": true, "Text": "" } ] }, "RequiredSignatureFlag": false } ], "PaymentResult": { "AmountsResp": { "AuthorizedAmount": 0, "Currency": "EUR" }, "PaymentAcquirerData": { "AcquirerID": "1", "AcquirerPOIID": "54017810", "ApprovalCode": "000000", "MerchantID": "640500100" }, "PaymentInstrumentData": { "CardData": { "EntryMode": "ICC", "MaskedPAN": "XXXXXXXXXXXX0050", "PaymentBrand": "V", "PaymentToken": { "TokenRequestedType": "Customer", "TokenValue": "2125534309170050" }, "SensitiveCardData": { "ExpiryDate": "1222" } }, "PaymentInstrumentType": "Card" }, "PaymentType": "TokenOnly" }, "Response": { "Result": "Success" }, "SaleData": { "SaleTransactionID": { "TimeStamp": "2020-10-13T10:30:29+02:00", "TransactionID": "" } } } } } |
TOKEN CARD NOT PRESENT
Type | Endpoint |
---|---|
POST | /payment/v1/interface/terminalprovider/payment |
PARAMETERS
Request on Card Not Present mode does not follow NEXO protocol:
Name |
Type |
Description |
CP mandatory |
CNP mandatory |
Example |
resaId |
string |
Identification of the booking |
|
Y |
|
hotelCode |
string |
hotel code |
|
Y |
0449 |
folderNumber |
string |
file number of the booking |
|
Y |
|
mainCro |
string |
main origin code |
|
Y |
INT |
subCro |
string |
sub origin code |
|
Y |
INT |
arrivalDate |
date |
date of arrival of the guest |
|
Y |
|
departureDate |
date |
departure date of the guest |
|
Y |
|
firstName |
string |
beneficiary firstname |
|
N |
johh |
lastName |
string |
beneficiary lastname |
|
Y |
do |
|
string |
beneficiary email |
|
N |
|
address |
string |
beneficiary postal address |
|
N |
2 test street |
state |
string |
beneficiary state |
|
N |
|
zipcode |
string |
beneficiary zip code |
|
N |
75000 |
city |
string |
beneficiary city |
|
N |
paris |
phoneNumber |
string |
beneficiary phone number |
|
N |
|
cardNumber |
string |
credit card number |
|
Y |
4111111111111111 |
cardType |
string |
credit card type |
|
Y |
VI |
expirationDate |
string |
expiration date of the card Format: MM/YY |
|
Y |
12/22 |
holderName |
string |
holder name of the card |
|
Y |
|
amount | string | amount value | Y | ||
currency | string | amount currency | Y | ||
partnerCode | string | partner code | Y | ||
remoteIPAddr | string | IP address of the partner | N | ||
eci | string | channel used for the transaction | N |
RESPONSE
Name |
Type |
Description |
CP mandatory |
CNP mandatory |
Example |
PAYID |
string |
identifier of the token transaction |
|
Y |
|
CardNumber |
string |
masked card number |
|
Y |
411111xxxxxxxx11 |
ExpMonth |
Date |
expiration date : month |
|
Y |
12 |
ExpYear |
Date |
expiration date : year |
|
Y |
22 |
Alias | string | token number | Y | 0463708868771111 |
EXAMPLE 2
This example show request/response for a card not present transaction.
Example of request :
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:IPGApiActionRequest xmlns="http://ipg-online.com/ipgapi/schemas/v1" xmlns:ns2="http://ipg-online.com/ipgapi/schemas/ipgapi" xmlns:ns3="http://ipg-online.com/ipgapi/schemas/a1"> <ns3:Action> <ns3:StoreHostedData> <ns3:StoreId>640500100</ns3:StoreId> <ns3:DataStorageItem> <ns3:CreditCardData> <CardNumber>XXXXXXXXXXXX1111</CardNumber> <ExpMonth>04</ExpMonth> <ExpYear>20</ExpYear> </ns3:CreditCardData> <ns3:TokenType>MULTIPAY</ns3:TokenType> <ns3:AssignToken>true</ns3:AssignToken> </ns3:DataStorageItem> </ns3:StoreHostedData> </ns3:Action> </ns2:IPGApiActionRequest> </soap:Body> </soap:Envelope> |
Example of response :
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <ipgapi:IPGApiActionResponse xmlns:ipgapi="http://ipg-online.com/ipgapi/schemas/ipgapi" xmlns:a1="http://ipg-online.com/ipgapi/schemas/a1" xmlns:v1="http://ipg-online.com/ipgapi/sche mas/v1"> <ipgapi:successfully>true</ipgapi:successfully> <ipgapi:DataStorageItem> <a1:CreditCardData> <v1:CardNumber>411111...1111</v1:CardNumber> <v1:ExpMonth>04</v1:ExpMonth> <v1:ExpYear>20</v1:ExpYear> </a1:CreditCardData> <a1:HostedDataID>0463708868771111</a1:HostedDataID> </ipgapi:DataStorageItem> </ipgapi:IPGApiActionResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |