- Ghid de integrare
- Caracteristici acceptate (Metode de plată)
- Plățile cu posesorul cardului prezent
Posesor de card prezent
Plățile cu posesorul cardului prezent (Cardholder Present – CHP) se referă la tranzacțiile efectuate cu un terminal Punct de plată (POS). Terminalul poate citi datele de pe card prin:
- introducerea unui card EMV
- NFC (Near Field Communication), în cazul cardurilor contactless
- trecerea prin aparat a unui card cu bandă magnetică
- introducerea numărului cardului
Compatibilitatea cu toate metodele de mai sus există în API începând cu versiunea 40.
O plată CHP este inițiată de un terminal și trimisă către gateway sub forma unei tranzacții Verify, Authorize, Capture, Pay sau Refund. De exemplu, tranzacțiile autorizate offline de către cipul cardului vor fi trimise exclusiv ca tranzacții de decontare Capture, în timp ce tranzacțiile care necesită autorizația emitentului vor utiliza o tranzacție Authorize online și apoi o tranzacție Capture.
Tranzacțiile CHP pot funcționa împreună cu numeroase alte funcții de pe gateway. Puteți să:
- creați simboluri pentru carduri,
- rambursați sume folosind aceeași integrare utilizată pentru tranzacțiile magazinului dvs. sau prin intermediul IU,
- unificați raportarea pentru comerțul electronic și CHP.
Cerințe preliminare
Your payment service provider și achizitorul dvs. trebuie activeze tranzacțiile cu posesorul cardului prezent.
Câmpuri comune utilizate pentru tranzacțiile CHP
Următoarele câmpuri din API sunt aplicabile tuturor integrărilor cu posesorul cardului prezent de pe gateway.
transaction.source=CARD_PRESENT
: Dacă nu completați acest câmp, va fi utilizată sursa implicită a tranzacției, configurată în legătura dvs. achizitor de către your payment service provider. [REST][NVP]- număr card: Introducerea numărului de card este obligatorie, însă, în funcție de modul de citire a cardului (introducerea numărului, bandă magnetică sau cip EMV), îl puteți introduce:
sourceOfFunds.provided.card.number
pentru tranzacțiile cu introducere a numărului de card.sourceOfFunds.provided.card.track1
și/sausourceOfFunds.provided.card.track2
pentru tranzacțiile cu bandă magnetică sau
echivalentele cu etichetă EMV ale acestora, respectiv eticheta 56 și eticheta 57,m furnizate însourceOfFunds.provided.card.emvRequest
pentru tranzacțiile contactless în care datele cardului au formatul de bandă magnetică.- Eticheta 5A din
sourceOfFunds.provided.card.emvRequest
pentru tranzacții EMV (cu contact/contactless) când datele cardului au formatul EMV. sourceOfFunds.provided.card.p2pe.payload
pentru tranzacții P2PE (Point-to-Point Encryption) când datele cardului au formatul criptat DUKPT.
- identificatorul terminalului: Introducerea identificatorului terminalului este obligatorie, însă, în funcție de modul de citire a cardului (introducerea numărului, bandă magnetică sau cip EMV), îl puteți introduce:
posTerminal.lane
pentru tranzacțiile cu introducerea numărului cardului și tranzacțiile pe bază de bandă magnetică.- Eticheta 9F1C din
sourceOfFunds.provided.card.emvRequest
pentru tranzacții EMV (cu contact/contactless) când datele cardului au formatul EMV.
Asigurați-vă că valorile următoarelor câmpuri pentru terminalul POS sunt setate corect, în funcție de modul în care terminalul a generat datele cardului pentru tranzacție. Dacă datele pentru aceste câmpuri sunt disponibile, furnizați-le întotdeauna. Gateway-ul va transmite datele conform cerințelor achizitorului. Dacă achizitorul solicită un câmp care nu este prezent, tranzacția va eșua.
posTerminal.address
posTerminal.attended
: Dacă nu completați acest câmp, gateway-ul va utilizaUNKNOWN_OR_UNSPECIFIED
ca valoare implicităposTerminal.authorizationMethod
posTerminal.cardHolderActivated
: Dacă nu completați acest câmp, gateway-ul va utilizaNOT_CARDHOLDER_ACTIVATED
ca valoare implicităposTerminal.inputCapability
: Acest câmp este obligatoriu pentru tranzacțiile EMV.posTerminal.location
: Acest câmp este obligatoriu pentru tranzacțiile EMV.posTerminal.panEntryMode
posTerminal.pinEntryCapability
posTerminal.onlineReasonCode
: Acest câmp este obligatoriu pentru tranzacțiile cu cip și cele de rezervă (inclusiv stornările) în cazul tuturor tranzacțiilor online.posTerminal.serialNumber
posTerminal.mobile.cardInputDevice
: Acest câmp se aplică dispozitivelor POS mobile (mPOS) capabile de a accepta atingerea ecranului sau o tastatură fizică pentru introducerea codului PIN. Codurile PIN software ar trebui utilizate doar pentru dispozitive care nu au tastatură hardware pentru introducerea codurilor PIN. Pentru cerințele de integrare mPOS, consultați Integrarea pentru utilizarea mPOS.order.gratuityAmount
: Completați acest câmp dacă plata include o gratuitate.
[REST][NVP]order.cashbackAmount
: Completați acest câmp dacă plata include o sumă restituită.
[REST][NVP]order.cashAdvance
: Completați acest câmp dacă plata include un avans în numerar.
[REST][NVP]
Referință API Terminal POS [REST][NVP]
Procesarea unei tranzacții EMV
Dacă datele cardului au fost citite de pe un cip de card (numai cardurile EMV),
- Solicitați terminalului aceste etichete EMV (etichete acceptate de gateway).
- Furnizați etichetele returnate în câmpul
sourceOfFunds.provided.card.emvRequest
, ca obiecte JSON în protocolul REST sau sub forma unei colecții de câmpuri în protocolul NVP (nu este necesar ca terminalul să furnizeze toate etichetele EMV acceptate).Valorile etichetelor EMV trebuie să fie formatate exact așa cum sunt returnate de către terminal — valorile binare vor fi exprimate în formatul hexazecimal. - Completați câmpurile obligatorii.
- Completați câmpurile opționale, dacă este necesar.
sourceOfFunds.provided.card.emvRequest [REST][NVP]
Unele dintre etichetele EMV acceptate corespund conceptelor esențiale de plată, cum ar fi numărul contului principal. Aceste concepte apar, de asemenea, sub forma unor câmpuri de solicitare din API, precum sourceOfFunds.provided.card.number
. Documentația de referință API pentru aceste câmpuri corespunzătoare de solicitare API prezintă legăturile dintre acestea în descriere. De exemplu, descrierea pentru sourceOfFunds.provided.card.number
conține textul „Acest câmp corespunde etichetei EMV 5A”.
Dacă furnizați date sub forma etichetelor EMV, nu este necesar să le furnizați din nou sub forma unui câmp de solicitare API. Gateway-ul completează câmpurile corespunzătoare de solicitare API cu valorile furnizate în etichetele EMV dacă există, și utilizează aceste valori în toate procesele interne, mesajele către achizitor și răspunsurile la tranzacții. De exemplu, dacă trimiteți sourceOfFunds.provided.card.emvRequest.9F1C cu valoarea -Lane_03', atunci posTerminal.lane cu valoarea -Lane_03' este trimis la achizitor și returnat în răspunsul la tranzacție.
Dacă este necesar, puteți furniza atât etichetele EMV, cât și câmpurile corespunzătoare de solicitare API în solicitarea de tranzacție. Consultați Utilizarea avansată: Datele tranzacțiilor din etichetele EMV și câmpurile solicitărilor API.
Iată un exemplu de solicitare EMV în REST pentru o tranzacție de decontare independentă, pentru care autorizarea a avut loc offline, la terminal.
URL | https://egenius.unicredit.ro/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
Metoda HTTP | PUT |
{ "apiOperation": "CAPTURE", "transaction": { "currency": "EUR", "amount": "10.99", "source": "CARD_PRESENT" }, "sourceOfFunds": { "type": "CARD", "provided": { "card": { "number": "5457210089020012", "expiry": { "month": "1", "year": "39" }, "emvRequest": { "82": "0000", "95": "0000000000", "9F02": "000000001099", "9A": "161021", "5F2A": "840", "9F1A": "840", "9F10": "06011103A000000A0100000000000BB0ABAD", "9F34": "1E0300", "9F36": "0002", "9C": "00", "9F26": "D1F722D47FCA8273", "9F27": "40", "9F37": "2A4E1690", "9F33": "E0B8C8" } } } }, "posTerminal": { "inputCapability": "CONTACTLESS_CHIP", "panEntryMode": "CHIP", "pinEntryCapability": "PIN_SUPPORTED", "location": "MERCHANT_TERMINAL_ON_PREMISES", "lane": "Lane_03", "attended": "ATTENDED", "serialNumber":"123456789", "onlineReasonCode":"FORCED_BY_MERCHANT", "cardPresenceCapability":"CARD_PRESENT", "authorizationMethod":"OFFLINE", "address": { "country":"IRL", "city":"Dublin" } } }
{ "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTSMOKE-RETAIL", "order": { "amount": 10.99, "creationTime": "2017-06-06T09:42:54.280Z", "currency": "EUR", "id": "sa-dfc1b030-4520-48ec-a7e0-889999d7e4ab", "status": "CAPTURED", "totalAuthorizedAmount": 10.99, "totalCapturedAmount": 10.99, "totalRefundedAmount": 0 }, "posTerminal": { "address": { "city": "Dublin", "country": "IRL" }, "attended": "ATTENDED", "authorizationMethod": "OFFLINE", "cardPresenceCapability": "CARD_PRESENT", "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED", "inputCapability": "CONTACTLESS_CHIP", "lane": "Lane_03", "location": "MERCHANT_TERMINAL_ON_PREMISES", "onlineReasonCode": "FORCED_BY_MERCHANT", "panEntryMode": "CHIP", "pinEntryCapability": "PIN_SUPPORTED", "serialNumber": "123456789" }, "response": { "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "emvRequest": { "82": "0000", "95": "0000000000", "5F2A": "840", "9A": "161021", "9C": "00", "9F02": "000000001099", "9F10": "06011103A000000A0100000000000BB0ABAD", "9F1A": "840", "9F26": "D1F722D47FCA8273", "9F27": "40", "9F33": "E0B8C8", "9F34": "1E0300", "9F36": "0002", "9F37": "2A4E1690" }, "emvResponse": { "4D3E": "456", "5A2F": "123" }, "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "CAPITAL ONE BANK (CANADA BRANCH)", "number": "545721xxxxxx0012", "scheme": "MASTERCARD" } }, "type": "CARD" }, "timeOfRecord": "2017-06-06T09:42:54.280Z", "transaction": { "acquirer": { "batch": 1, "id": "FOOBANK", "merchantId": "11223344" }, "amount": 10.99, "currency": "EUR", "frequency": "SINGLE", "id": "1", "receipt": "1706063974", "source": "CARD_PRESENT", "terminal": "0001", "type": "CAPTURE" }, "version": "43" }
Iată o listă a etichetelor EMV acceptate de gateway. Dacă oricare dintre acestea sunt returnate de terminal, includeți-le în câmpul sourceOfFunds.provided.card.emvRequest
.
Etichetă EMV |
Nume |
Obligatoriu |
---|---|---|
4F | Nume identificator aplicație (AID) | - |
56 | Pista 1 | - |
57 | Date echivalente pista 2 | - |
5A | Număr cont principal (PAN) aplicație |
- |
5F24 | Dată expirare aplicație | - |
5F25 | Dată intrare în vigoare aplicație | - |
5F28 | Cod țară emitent | - |
5F2A | Cod monedă tranzacție | - |
5F34 | Număr secvențial număr cont principal (PAN) aplicație |
- |
82 | Profil de procesare aplicație (AIP) | Da |
84 | Nume fișier dedicat | - |
87 | Indicator prioritate aplicație | - |
95 | Rezultat verificare terminal (TVR) | Da |
9A | Dată tranzacție | Da |
9B | Informații stare tranzacție | - |
9C | Tip tranzacție | Da |
9F02 | Valoare autorizată | Da |
9F03 | Valoare restituită | - |
9F06 | Identificator aplicație (AID) – terminal | - |
9F07 | Control utilizare aplicație | - |
9F08 | Număr versiune aplicație – ICC | - |
9F09 | Număr versiune aplicație – Terminal | - |
9F0D | Cod acțiune emitent – Implicit | - |
9F0E | Cod acțiune emitent – Respingere | - |
9F0F | Cod acțiune emitent – Online | - |
9F10 | Date aplicație emitent (IAD) | Da |
9F1A | Cod țară terminal | Da |
9F1C | Identificare terminal | - |
9F1E | Număr de serie dispozitiv de interfață (IFD) | - |
9F21 | Oră tranzacție | - |
9F26 | Criptogramă aplicație (AC) | Da |
9F27 | Date informații criptogramă (CID) | Da |
9F33 | Capacități terminal | - |
9F34 | Rezultate metodă de verificare posesor de card (CVM)= | Da |
9F35 | Tip terminal | - |
9F36 | Contor tranzacții aplicație | Da |
9F37 | Număr imprevizibil | Da |
9F39 | Mod de introducere punct de servicii (POS) | - |
9F40 | Capacități suplimentare terminal | - |
9F41 | Contor de ordine tranzacții | - |
9F49 | Listă obiecte date autentificare date dinamice (DDOL) | - |
9F53 | Cod de categorie tranzacție | - |
9F5A | EMV (Kernel 3): Identificator program aplicație (ID program) EMV (Kernel 4): Identificator produs calitate de membru |
- |
9F5B | EMV (Kernel 3): Rezultate script emitent EMV (Kernel 2): DSDOL EMV (Kernel 4): Număr calitate de membru produs |
- |
9F66 | EMV (Kernel 2): PUNATC(Track2) EMV (Kernel 3): Calificatori tranzacție terminal (TTQ) |
- |
9F6E | Indicator format | - |
9F7C | Date exclusive client (CED) | - |
Dacă furnizați atât etichetele EMV, cât și câmpurile corespunzătoare de solicitare API în solicitarea de tranzacție, gateway-ul va utiliza valoarea din câmpul corespunzător de solicitare API. De exemplu, dacă trimiteți sourceOfFunds.provided.card.emvRequest.9F1C cu valoarea -Lane_03' și posTerminal.lane cu valoarea -Lane_04', atunci posTerminal.lane cu valoarea -Lane_04' este trimis la achizitor și returnat în răspunsul la tranzacție. Acest lucru poate fi util dacă doriți să suprascrieți etichetele EMV și valorile de control pentru fiecare câmp în parte. Rețineți că un astfel de mod de utilizare este rar și, prin urmare, trebuie luat în calcul numai dacă integrarea dvs. impune acest lucru.
Etichetele EMV acceptate și câmpurile de solicitare API corespunzătoare
Acest tabel prezintă etichetele EMV pentru care gateway-ul completează câmpurile corespunzătoare de solicitare API cu valorile furnizate în etichetele EMV.
Etichetă EMV |
Nume etichetă EMV |
Câmp corespunzător solicitare API |
---|---|---|
56 | Pista 1 | sourceOfFunds.provided.card.track1 |
57 | Date echivalente pista 2 | sourceOfFunds.provided.card.track2 |
5A | Număr cont principal (PAN) aplicație | sourceOfFunds.provided.card.number |
5F24 | Dată expirare aplicație | sourceOfFunds.provided.card.expiry.year sourceOfFunds.provided.card.expiry.month |
5F34 | Număr de serie PAN | sourceOfFunds.provided.card.sequenceNumber |
9C | Acont numerar | order.cashAdvance |
9F03 | Valoare restituită | order.cashbackAmount |
9F1A | Cod țară terminal | posTerminal.address.country |
9F1C | Identificare terminal | posTerminal.lane |
9F1E | Număr de serie dispozitiv de interfață | posTerminal.serialNumber |
9F33 | Capacități terminal | posTerminal.inputCapability posTerminal.pinEntryCapability |
9F35 | Tip terminal | posTerminal.attended posTerminal.cardholderActivated |
Gateway-ul returnează câmpul sourceOfFunds.provided.card.emvResponse
în răspunsul Retrieve Order și Retrieve Transaction. Acest câmp conține date generate de emitent, pe care cardul/dispozitivul le poate utiliza pentru verificare și pentru finalizarea sau respingerea tranzacției. Acesta poate conține, de asemenea, etichete EMV suplimentare de la emitent, inclusiv etichetele preluate din solicitare.
Tabelul de mai jos prezintă câteva etichete EMV care pot fi returnate într-un răspuns de autorizare online.
Etichetă EMV | Nume |
---|---|
8A | Cod răspuns de autorizare |
89 | Cod de autorizare |
91 | Date de autentificare emitent |
71 | Șablon 1 script emitent |
72 | Șablon 2 script emitent |
Câmpul sourceOfFunds.provided.card.emvRequest
inclus în solicitare este preluat în răspuns, în timp ce etichetele EMV identificate ca PCI sensibile sunt excluse.
Achizitorul dvs. poate solicita elemente de date EMV suplimentare atunci când invalidează o tranzacție EMV. De exemplu, poate fi necesară eticheta EMV DF01 (Rezultate script emitent). Pentru detalii privind cerințele, contactați achizitorul.
Procesați o tranzacție pe bază de bandă magnetică
Dacă datele pistei cardului au fost citite de pe banda magnetică a cardului,
- Furnizați datele pistei 1 în
sourceOfFunds.provided.card.track1
sau datele pistei 2 în câmpulsourceOfFunds.provided.card.track2
. Dacă la terminal sunt disponibile atât pista 1, cât și pista 2, atunci furnizați-le pe ambele în solicitarea de tranzacție. - Completați câmpurile obligatorii.
- Completați câmpurile opționale, dacă este necesar.
sourceOfFunds.provided.card.track1 [REST][NVP]
sourceOfFunds.provided.card.track2 [REST][NVP]
Iată un exemplu de tranzacție de autorizare online pe baza datelor benzii magnetice.
URL | https://egenius.unicredit.ro/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
Metoda HTTP | PUT |
{ "apiOperation": "AUTHORIZE", "order": { "amount": 80, "currency": "AUD" }, "transaction": { "source": "CARD_PRESENT", "frequency": "SINGLE" }, "sourceOfFunds": { "type": "CARD", "provided": { "card": { "number": "5457210089020012", "sequenceNumber": "015", "expiry": { "year": "39", "month": "01" }, "track2": ";5123456789012346=17051019681143384001?", "track1": "%B5123456789012346^MR JOHN R SMITH ^17051019681143300001 840 ?;" } } }, "posTerminal": { "lane": "AdamLane", "panEntryMode": "SWIPE", "pinEntryCapability": "PIN_NOT_SUPPORTED", "attended": "UNATTENDED", "cardholderActivated": "SELF_SERVICE_TERMINAL", "inputCapability": "MAGNETIC_STRIPE", "location": "MERCHANT_TERMINAL_OFF_PREMISES" } }
{ "authorizationResponse": { "posData": "1605S0100130", "transactionIdentifier": "AmexTidTest" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTSMOKE-RETAIL", "order": { "amount": 80, "creationTime": "2017-05-31T07:49:46.351Z", "currency": "AUD", "id": "sa-e229682a-2163-47cf-b080-fb60dd148192", "status": "AUTHORIZED", "totalAuthorizedAmount": 80, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "posTerminal": { "attended": "UNATTENDED", "cardholderActivated": "SELF_SERVICE_TERMINAL", "inputCapability": "MAGNETIC_STRIPE", "lane": "AdamLane", "location": "MERCHANT_TERMINAL_OFF_PREMISES", "panEntryMode": "SWIPE", "pinEntryCapability": "PIN_NOT_SUPPORTED" }, "response": { "acquirerCode": "00", "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "CAPITAL ONE BANK (CANADA BRANCH)", "number": "545721xxxxxx0012", "scheme": "MASTERCARD", "sequenceNumber": "015", "trackDataProvided": true } }, "type": "CARD" }, "timeOfRecord": "2017-05-31T07:49:46.351Z", "transaction": { "acquirer": { "batch": 1, "id": "SYSTEST_ACQ1", "merchantId": "12345678" }, "amount": 80, "authorizationCode": "000001", "currency": "AUD", "frequency": "SINGLE", "id": "1", "receipt": "1705313", "source": "CARD_PRESENT", "terminal": "0006", "type": "AUTHORIZATION" }, "version": "43" }
Procesarea unei tranzacții introduse
Dacă numărul cardului a fost introdus manual pe tastatura terminalului,
- Furnizați numărul introdus al cardului în câmpul
sourceOfFunds.provided.card.number
din solicitare. - Completați câmpurile obligatorii.
- Completați câmpurile opționale, dacă este necesar.
sourceOfFunds.provided.card.number
[REST][NVP]
Iată un exemplu de tranzacție de autorizare online pe baza unui număr de card introdus manual.
URL | https://egenius.unicredit.ro/api/rest/version/72/merchant/{merchantId}/order/{orderid}/transaction/{transactionid} |
Metoda HTTP | PUT |
{ "posTerminal": { "serialNumber": "13130PP800781435", "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED", "lane": "S2_Lane", "panEntryMode": "KEYED", "pinEntryCapability": "UNKNOWN", "attended": "ATTENDED", "inputCapability": "KEY_ENTRY", "location": "MERCHANT_TERMINAL_ON_PREMISES" }, "apiOperation": "AUTHORIZE", "sourceOfFunds": { "type": "CARD", "provided": { "card": { "number": "5457210089020012", "sequenceNumber": "000", "expiry": { "year": "39", "month": "01" } } } }, "order": { "amount": "100.00", "currency": "EUR" }, "transaction": { "source": "CARD_PRESENT", "frequency": "SINGLE" } }
{ "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTSMOKE-RETAIL", "order": { "amount": 100, "creationTime": "2017-05-31T08:59:47.194Z", "currency": "EUR", "id": "sa-529e784a-e11d-474d-8012-c0790531bb0f", "status": "AUTHORIZED", "totalAuthorizedAmount": 100, "totalCapturedAmount": 0, "totalRefundedAmount": 0 }, "posTerminal": { "attended": "ATTENDED", "cardholderActivated": "NOT_CARDHOLDER_ACTIVATED", "inputCapability": "KEY_ENTRY", "lane": "S2_Lane", "location": "MERCHANT_TERMINAL_ON_PREMISES", "panEntryMode": "KEYED", "pinEntryCapability": "UNKNOWN", "serialNumber": "13130PP800781435" }, "response": { "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "expiry": { "month": "1", "year": "39" }, "fundingMethod": "DEBIT", "issuer": "CAPITAL ONE BANK (CANADA BRANCH)", "number": "545721xxxxxx0012", "scheme": "MASTERCARD", "sequenceNumber": "000" } }, "type": "CARD" }, "timeOfRecord": "2017-05-31T08:59:47.194Z", "transaction": { "acquirer": { "batch": 1, "id": "FOOBANK", "merchantId": "11223344" }, "amount": 100, "authorizationCode": "471223", "currency": "EUR", "frequency": "SINGLE", "id": "1", "receipt": "170531475", "source": "CARD_PRESENT", "terminal": "0001", "type": "AUTHORIZATION" }, "version": "43" }
Procesarea unei tranzacții Point-to-Point Encryption (P2PE)
P2PE este un standard stabilit de PCI Security Standards Council. În cazul P2PE, datele sensibile ale cardului sunt criptate pe terminal imediat ce sunt citite datele de pe card. Acest lucru asigură un nivel maxim de securitate pentru tranzacțiile cu posesorul cardului prezent și vă reduce obligațiile de conformitate cu PCI, deoarece nu este necesar să procesați date sensibile.
Pentru a procesa o tranzacție P2PE:
- Furnizați datele DUKPT P2PE de la terminal în următoarele câmpuri:
sourceOfFunds.provided.card.p2pe.keySerialNumber
: Trebuie să introduceți numărul de serie al cheii DUKPT, furnizat de terminal.sourceOfFunds.provided.card.p2pe.payload
: Dacă acest câmp este completat,sourceOfFunds.provided.card.number
nu este obligatoriu. Gateway-ul va extrage toate detaliile relevante ale cardului din datele utile furnizate.posTerminal.serialNumber
:sourceOfFunds.provided.card.p2pe.cardBin
sourceOfFunds.provided.card.p2pe.encryptionState
: Dacă nu completați acest câmp, gateway-ul va utilizaVALID
ca valoare implicităsourceOfFunds.provided.card.p2pe.initializationVector
: Acest câmp poate fi omis dacă terminalul nu utilizează un vector de inițializare pentru a iniția criptarea.
- Completați câmpurile obligatorii.
- Completați câmpurile opționale, dacă este necesar.
Referință API P2PE [REST][NVP]
Tabelul de mai jos rezumă limitările câmpurilor pentru grupul de parametri sourceOfFunds.provided.card.p2pe
.
Dacă câmpul | atunci gateway-ul... | ||
---|---|---|---|
sourceOfFunds.provided.card.p2pe. initializationVector |
sourceOfFunds.provided.card.p2pe. keySerialNumber |
sourceOfFunds.provided.card.p2pe. payload | |
este completat | este completat | nu este completat | respinge solicitarea de tranzacție. |
este completat | este completat în clar, înainte sau după decriptare | este completat | returnează o eroare și generează un element în jurnalul de securitate. |
Răspuns de tranzacție
Câmpul sourceOfFunds.provided.card.encryption
returnează DUKPT
(începând cu API versiunea 43) în răspunsul de tranzacție pentru a indica criptarea datelor de pe card. Câmpurile din grupul de parametri sourceOfFunds.provided.card.p2pe
nu sunt returnate în răspuns.
Integrare pentru utilizare PIN online
PIN-ul online introdus de posesorul cardului este criptat la sursă, pe dispozitivul de introducere a PIN-ului. eGenius Platform acceptă datele PIN online criptate prin DUKPT (Derived Unique Key Per Transaction – cheie unică derivată per tranzacție) începând cu API versiunea 45.
- Furnizați datele PIN criptate prin DUKPT de la terminal în următoarele câmpuri:
sourceOfFunds.provided.card.pin.payload
sourceOfFunds.provided.card.pin.keySerialNumber
posTerminal.pinLengthCapability
sourceOfFunds.provided.card.pin.encryptionState
- Completați câmpurile obligatorii.
- Completați câmpurile opționale, dacă este necesar.
Integrarea pentru utilizarea mPOS
Gateway-ul acceptă plățile pe dispozitive POS mobile (mPOS) începând cu API v56. Pentru a activa funcționalitatea, furnizați următoarele elemente în tranzacția Verify, Authorize, Capture, Pay sau Refund:
posTerminal.cardholderActivated
=MPOS_ACCEPTANCE_DEVICE
- Furnizați o valoare a cititorului de carduri în
posTerminal.mobile.cardInputDevice
BUILT_IN
: Telefon mobil sau tabletă cu un singur cititor contactless încorporat. În acest caz, posTerminal.pinEntryCapability trebuie setată la SOFTWARE_ONLINE_PIN_ONLY, altfel gateway-ul respinge tranzacția.INTEGRATED_DONGLE
: Terminal mobil dedicat cu un cititor de carduri integrat. În acest caz, posTerminal.pinEntryCapability trebuie setată la PIN_SUPPORTED sau OFFLINE_PIN_ONLY, altfel gateway-ul respinge tranzacția.SEPARATE_DONGLE
: Dispozitiv nou sau terminal mobil dedicat cu un cititor de carduri separat. În acest caz, posTerminal.pinEntryCapability trebuie setată la PIN_SUPPORTED sau OFFLINE_PIN_ONLY, altfel gateway-ul respinge tranzacția.
- Completați câmpurile obligatorii.
- Completați câmpurile opționale, dacă este necesar.
Răspuns de tranzacție
Autentificarea cu PIN poate eșua dacă plătitorul introduce un PIN nevalid, depășește numărul permis de încercări de introducere a PIN-ului sau omite introducerea PIN-ului atunci când PIN-ul este necesar pentru finalizarea tranzacției.
În aceste scenarii, în care autorizarea eșuează din cauza unei erori de autentificare cu PIN, gateway-ul va returna anumite coduri de răspuns pentru autentificare. Puteți reutiliza același ID de comandă la tranzacția următoare.
Testare integrare prezență posesor de card
Vă puteți testa integrarea folosind cardurile de testare specifice achizitorului dvs.