You are on page 1of 10

ye iyeri, almakta olduu banka ile arasnda olan mtabakat gerei, 3D ya da

3D_PAY modelini kullanabilir.

1- 3D MODEL

Entegrasyon aadaki admlar takip edilerek yaplabilir:

1. Client Merchant BackEnd'ten token talebinde bulunur.


2. Merchant BackEnd, Client'a istemi olduunu token bilgisini dner.
3. lgili token deeri Mobil uygulamadaki MasterPass SDK'ya veya Web ktphanesine iletilir.
4. SDK zerinden Masterpass sunucularna Initiate Purchase istei gnderilir.
5. Token dorulamas tamamlandktan sonra, deme isteinde "payment_type" alan 3D olarak
gnderilmi ise 3D ak balatlr.
6. Bankadan 3D cevab olarak URL elde edilir.
7. Kullancnn belirtmi olduu kart bilgilerine ait bankadaki kaytl telefon numarasna SMS
gnderilir.
8. Purchase isteinin cevab olarak 3D dorulamas uygulanacann bilgisi SDK'ya iletilir(response
code "5010"). ACS form SDK tarafndan alr ve kullanc 3D deerini girer.
9. ACS Form alr.
10. 3D deeri Bankaya iletilir.
11. Banka 3D dorulamasn gerekletirir ve sonucunu MasterPass'a iletir.
12. 3D dorulama sonucu, Token deeri ile birlikte Merchant BackEnd'e iletilir. Post data ierisindeki
amount deerinin, Clienttan gnderilen amount deeri ile ayn olup olmadnn ye iyeri
tarafndan kontrol edilmesi gerekiyor.
13. Merchant BackEnd zerinden MasterPass sunucularna deme ileminin onaylanmas iin
Commit Purchase istei gnderilir(step 12 deki Token deeri ile birlikte).
14. MasterPass, deme ilemini ilgili bankaya iletir.
15. Banka ilem sonucunu MasterPass'e iletir.
16. deme iisteine bankadan dnen cevap Merchant BackEnd'e iletilir.
17. Merchant BackEnd, deme ileminin cevabn uygulamaya iletir.

1.1 3D BACKEND ADIMLARI

- ye iyeri bankIca parametresine bakarak ilemin hangi banka zerinden yapldn ve


hash kontrol yaplmas gerekip gerekmediini kontrol eder.
- lemin bankas(bankIca) hash kontrol gerektiren bankalar arasnda yer alyorsa hash
kontroln yapar.
- Bankadan gelen hash ile ye iyerinin hesaplad hash uyumaz ise ilem sonlandrlr.
- Uyuuyorsa ye iyeri mdStatus deerine bakarak deme tamamlayp
tamamlamayacana karar verir.
1.2 rnek Commit Purchase stei:

<CommitPurchaseRequest>
<transaction_header>
<client_id>123456</client_id>
<request_datetime>2016-05-25T16:05:44.0170147+03:00</request_datetime>
<request_reference_no>16093144</request_reference_no>
<send_sms>Y</send_sms>
<send_sms_language>tur</send_sms_language>
<ip_address>212.12.123.12</ip_address>
<client_type xsi:nil="true" />
</transaction_header>
<transaction_body>
<amount>123</amount>
<macro_merchant_id>123456789</macro_merchant_id>
<order_no>16093144</order_no>
<payment_type>SECURE_3D</payment_type>
<bank_ica />

<token>2649EE3741034B5AF342D8DFF43CA32C301CAF400BA43292299F5D78A3B91A720C
E0148F060513A13170645FC15BA5DEBB01E08148FEA00695A6343ABC80816982395EC83E
CCEEC25E73EFEB5915F7B122D35404DCF4D87575E435BCFF10CA4C</token>
<msisdn />
<custom_fields>
<custom_field_4 name="ECI" value="02" />
<custom_field_5 name="XID" value="51cFcR1NLEH7PS7fKP3+9+kX1fw=" />
<custom_field_6 name="CAVV" value="jFAFeDYoaJ0PCBEAKUI0CDEAAAA=" />
<custom_field_7 name="MD"
value="540667:5744B45D1522B753E1DD01F38EE2B81DBF3192254DBE5A29E4A27D755487
4B9B:3922:##400000100" />
<custom_field_11 name="MRCPACKET" value="" />
<custom_field_12 name="BANKPACKET" value="" />
<custom_field_13 name="SIGN" value="" />
</custom_fields>
</transaction_body>
</CommitPurchaseRequest>
1.3 rnek Post Data:

<form id="MPIform" action="http://127.0.0.1:59093/s3d/client/success?responseCode=0000"


method="POST">
<input type="hidden" name="oid" value="874535676454923">
<input type="hidden" name="clientId" value="100100000">
<input type="hidden" name="cavv" value="jKUQfB68bPMgCBEAKlG4BUUAAAA=">
<input type="hidden" name="eci" value="02">
<input type="hidden" name="xid" value="j8JOCvMlIUn39o9FmyjKqxDCZAo=">
<input type="hidden" name="md"
value="557113:F7591BD2914D49D862F464DB9BC325D1481C7AFAFE1FCB098E83A9717F95
217C:4298:##100100000">
<input type="hidden" name="rnd" value="c/cXDiVrRTVy/qZj4bNy">
<input type="hidden" name="hash" value="u8aeMhk/TQ8qCt0anGw45vo8Iss=">
<input type="hidden" name="hashParams" value="clientid:oid:mdStatus:cavv:eci:md:rnd:">
<input type="hidden" name="hashParamsVal"
value="1001000008745356764549231jKUQfB68bPMgCBEAKlG4BUUAAAA=02557113:F7591B
D2914D49D862F464DB9BC325D1481C7AFAFE1FCB098E83A9717F95217C:4298:##1001000
00c/cXDiVrRTVy/qZj4bNy">
<input type="hidden" name="merchantPacket" value="">
<input type="hidden" name="bankPacket" value="">
<input type="hidden" name="sign" value="">
<input type="hidden" name="mdStatus" value="1">
<input type="hidden" name="mdErrorMsg" value="Authenticated">
<input type="hidden" name="paresStatus" value="">
<input type="hidden" name="authCode" value="">
<input type="hidden" name="procReturnCode" value="">
<input type="hidden" name="response" value="">
<input type="hidden" name="bankIca" value="2110">
<input type="hidden" name="token"
value="E0C2668F4D2EDB64275BD9A8552C9BF9ABD1F26C6F709B1A325CE18364ABBDBB3
4A4DC20CFCDAD6934274DA4F47216F5D4EF6DA90FB5FA61388214D28964846BA438DE63
C37AB0DE7D66BD03352DD81A2A3C34A38B3ED82D3B70DEE40A51991F">
<input type="hidden" name="amount" value="123">
<input type="hidden" name="errorCode" value="">
<input type="hidden" name="errorMessage" value="">
<input type="hidden" name="publicKey" value="">
<input type="hidden" name="mode" value="">
<input type="hidden" name="transactionDate" value="">
<input type="hidden" name="paymentReceived" value="0">
</form>
2. 3D_PAY MODEL

Entegrasyon aadaki admlar takip edilerek yaplabilir:

1- Client Merchant BackEnd'ten token talebinde bulunur.


2- Merchant BackEnd, Client'a istemi olduunu token bilgisini dner.
3- lgili token deeri Mobil uygulamadaki MasterPass SDK'ya veya Web ktphanesine iletilir.
4- SDK zerinden Masterpass sunucularna Initiate Purchase istei gnderilir.
5- Token dorulamas tamamlandktan sonra, deme isteinde "payment_type" alan 3D olarak
gnderilmi ise 3D ak balatlr.
6- Bankadan 3D cevab olarak URL elde edilir.
7- Kullancnn belirtmi olduu kart bilgilerine ait bankadaki kaytl telefon numarasna SMS
gnderilir.
8- Purchase isteinin cevab olarak 3D dorulamas uygulanacann bilgisi SDK'ya
iletilir(response code "5010"). ACS form SDK tarafndan alr ve kullanc 3D deerini girer.
9- ACS Form alr.
10- 3D deeri Bankaya iletilir.
11- Banka 3D dorulamasn gerekletirir ve sonucunu MasterPass'a iletir.
12- 3D dorulama sonucu, Token deeri ile birlikte Merchant BackEnd'e iletilir. Bu admda,
deme ileminin baarl tamamlanp tamamlanmad bilgisi de iletilir. Post data ierisindeki
amount deerinin, Clienttan gnderilen amount deeri ile ayn olup olmadnn ye iyeri
tarafndan kontrol edilmesi gerekiyor.

13- Merchant BackEnd zerinden MasterPass sunucularna deme ileminin onaylanmas iin
Commit Purchase istei gnderilir(step 12 deki Token deeri ile birlikte).

2.1 3D BACKEND ADIMLARI

2.2 rnek Post Data:

<form id="MPIform" action="http://127.0.0.1:59093/s3d/client/success?responseCode=0000"


method="POST">
<input type="hidden" name="oid" value="874535676454921">
<input type="hidden" name="clientId" value="100200000">

<input type="hidden" name="cavv" value="AAABBRg0KQAAAAACdzQpAAAAAAA=">


<input type="hidden" name="eci" value="05">
<input type="hidden" name="xid" value="1O73gUhl3O5yEnzys3Ytt3pLLEw=">
<input type="hidden" name="md"
value="440293:5F619518BBB20460DA08BF127D7E97E4DE5DEDEB1F8C80730D836ED3096
EC793:4026:##100200000">
<input type="hidden" name="rnd" value="oW1dgwMYsd0K6FNRdiMW">
<input type="hidden" name="hash" value="cnCK9OHwr3Tpl2LCFGOZg4Opkj4=">
<input type="hidden" name="hashParams"
value="clientid:oid:AuthCode:ProcReturnCode:Response:mdStatus:cavv:eci:md:rnd:">
<input type="hidden" name="hashParamsVal"
value="10020000087453567645492112009500Approved1AAABBRg0KQAAAAACdzQpAAAAAA
A=05440293:5F619518BBB20460DA08BF127D7E97E4DE5DEDEB1F8C80730D836ED3096EC
793:4026:##100200000oW1dgwMYsd0K6FNRdiMW">
<input type="hidden" name="merchantPacket" value="">
<input type="hidden" name="bankPacket" value="">

<input type="hidden" name="sign" value="">


<input type="hidden" name="mdStatus" value="1">
<input type="hidden" name="mdErrorMsg" value="Authenticated">
<input type="hidden" name="paresStatus" value="">
<input type="hidden" name="authCode" value="">
<input type="hidden" name="procReturnCode" value="00">
<input type="hidden" name="response" value="">
<input type="hidden" name="bankIca" value="2110">

<input type="hidden" name="token"


value="CA480FE1A1B9C357C1E594BE6D5E95D476B2D03E7F1DF7A24AC1D01FFCA63C06C
9970D01D040BF814A43F918E9907617F7FC409C69BD245B5D80063986BEF34ED09717D7A2
56772C6CE1E401B0ED91A43B06E2F05D85BF37F497BF47141AF39F">
<input type="hidden" name="amount" value="123">
<input type="hidden" name="errorCode" value="00">
<input type="hidden" name="errorMessage" value="">
<input type="hidden" name="publicKey" value="">

<input type="hidden" name="mode" value="">


<input type="hidden" name="transactionDate" value="">
<input type="hidden" name="paymentReceived" value="1">
</form>
3 HASH KONTROL

Banka tarafndan gelen cevap mesajnda, cevap mesajnda gnderilen datalar ile bir hash deeri
oluturulup gnderilir.

ye iyerlerinin provizyon cevabnda gelen bilgileri ile ayn ekilde hash deerini hesaplayarak
banka tarafndan gelen Hash ile ayn olup olmadn kontrol etmelidir.

Ayn hash elde edilemiyorsa gelen mesaj zerinde oynama olduu ve bu mesajn banka
tarafndan gelmedii dnlmelidir.
Bu durumda sanalpos ekranlarndan ya da banka tarafndan verilen dorulama sorgular ile
ilemlerin sanalpos tarafndaki durumu kontrol edilmelidir.

Html data ierisinde yer alan;

rnd = Hash icinde kullanlacak random deger


<input type="hidden" name="rnd" value="nOtkwYMF8p5MmkQuoCW4">

hashdata = Kontrol edilmesi gereken hash deeri


<input type="hidden" name="hash" value="vJOAuI2IzUlWvctIM986X6js5Rg=">

hashparams = Hash icerisinde kullanlan parametre isimleri


<input type="hidden" name="hashparams"
value="clientid:oid:authcode:procreturncode:response:mdstatus:cavv:eci:md:rnd:">

hashparamsval = Hash icerisinde kullanlan parametrelerin deerleri


<input
type="hidden" name="hashparamsval" value="30691297201502241636031jCm0m+u/0h
UfAREHBAMBcfN+pSo=05FStmABzZE73wDA5btclgA5gsPVgQxNe9SfdLffPYugfioaFnQirShbH
04Ez4r0ul/BCjbe1O9og4Kl3n1OYaM//5bmsIeyHtSc+wQ57VTKK7Hjz0x1hEb+t1z5QFhThGrj
1/OeV3+q7/XVeNa3EXUw==nOtkwYMF8p5MmkQuoCW4">

storeKey = MPI store key

hashdata = HASH(hashparamsval + storeKey)

Hash algoritmas: Base64 encoded SHA1

Hash Kontrol Gerektiren Bankalar ve BankIca deerleri


- Garanti Bankas (2030)
- Akbank (2110)
- Bankas (3771)
- Finansbank (1684)
- TEB (9165)
- Halkbank (3039)
- Hsbc (7656)
3.1 HASH YAPISI

3D provizyon cevap mesajnda hashparams eklinde bir alan dnmektedir.

name="hashparams"
value="clientid:oid:authcode:procreturnCode:response:mdstatus:cavv:eci:md:rnd:"

rnek :
name="hashparamsval" value="505181deneme17i+dlp2LMu7VDj228wqUjDX9pqeZfedApYMvT
mGy4tqIFb06ncQ+11xnNgG1WyD1qshABarPK9Y5qRcw4SIzM6Vv6gy2bnyN+bxclbTnwuBKzdA
xJu7z2AmM26sclSMkz6p6jOsqUaao=BdN9cHrWec6gRADYswL/

Bu alanda provizyon cevabna ait bilgiler bulunur. yerlerinin provizyon cevabnda dnen
deerler ile hashparams deerini yukarda verilen sralamaya gre birletirerek yeniden
hesaplamaldrlar.

Hesaplamada kullanlacak tm deerler ilem cevabnda dnen deerlerdir. Firmaya cevap


dnme aamasnda 3rd party bir kii tarafndan bir ekilde cevap mesajna mdahelede
bulunulursa bu durumda banka tarafnda hesaplanan ve cevapta dnen hash ile firmann
hesaplad hash arasnda uyumazlk olacaktr. Bu durumda gelen ilemle ilgili olumsuz bir
durum olduu dnlerek firma tarafndan bu ilem baarl olarak dnlmemelidir.

Hashparamsval deeri mutlaka iyeri tarafndan dnen deerler ile tekrar oluturulmaldr.
Cevap mesajnda dnen deer kullanlmamaldr (3rd party tarafndan bu alannda deitirilecei
olasl bulunmaktadr.)

Hashparamsval hesaplandktan sonra aadaki hesaplama yntemi ile hash deeri


hesaplanmaldr. Hesaplanan hash deeri ilem sonucunda dnen hash deeri ile her zaman
ayn olmaldr. Deerler farkl ise bu ilem geersiz bir ilem olarak dnlmeli, iyeri sanalpos
zerinden ayrca ilemin kontroln yapmaldr.

* hash : Bu alan post edilen deerlerin gerekten bankann 3D sisteminden geldiini garanti eden
ve aadaki ekilde oluturulup mutlaka kontrol edilmesi gereken alandr.

hash algoritmas : Base64 [SHA-1[ hashparams da belirtilen alanlarn birletirilmi


hali + maaza storekey ]]

rnek : name="hash" value="k6U39nnXeY7mNMQdqpP/fSHWdp8="

* Maaza storekey : Sadece maazann bildii bir password deeridir. Gelen/giden datalar
iinde yer almaz.Sadece hesaplamalarda kullanlr.
3.2 3D SECURE DORULAMA CEVAPLARI

mdStatus parametresi 3D ileminin sonucuyla ilgili bilgileri iermektedir.


mdStatus kodlaryla ve aklamalar unlardr.

3.3 3D SECURE DEMENIN TAMAMLANMASI


Hash ve MdStatus kontrollerinden sonra deme ilemi CommitPurchase istei ile tamamlanr.
CommitPurchase isteinde gnderilmesi gereken token, eci, xid, md, cavv, merchantPacket,
bankPacket ve sign gibi bilgiler ye iyerinin backend urline post edilir.
Not: ye iyeri oid(sipari numaras) ile ilem takibini gerekletirebilir. Bu deer client tarafndan
balatlan deme ilemlerinde(InitiatePurchase, DirectPurchase vb.) gnderilen order_id
parametresiyle ayndr.
Not: clientId parametresi sanal posa ait terminal bilgisidir. Hash hesaplamada kullanlan storeKey
bu deere gre ye iyeri tarafndan belirlenebilir.
Not: 3D_PAY modeli iin, Commit purchase servisinin kullanlmas gerekmiyor.

You might also like