Garanti Virtual POS is a secure payment solution created to receive credit card payments for online sales.
Merchants can open an online branch in their stores and turn it into a sales platform that never closes with Garanti Virtual POS. This contributes to increasing both the number of customers and turnover.
The following transactions are generally performed under Garanti Virtual POS:
In this document, the steps required for member merchants to be able to provide non 3Ds Sales transactions under Garanti Virtual POS, the operations to be performed within each step, and the structures of the transaction requests sent and response messages received are explained.
The sub transaction types under Virtual POS Sales transactions are generally as follows:
3D Secure is a version of the application on VirtualPoS where cardholders are verified with a password on PoS. The cardholder is directed to the verification screens of the card bank to use a password in the transaction. The cardholder enters the information requested by his/her bank on these screens and shows that the card actually used is his/her own card.
After verification, the verification status is returned to the merchant bank (merchant). Then, depending on the status of the 3D information, the authorization process is carried out or the transaction is terminated.
3D Secure is supported by Master, Visa and American Express (Amex) cards. Merchants using 3D model (information about merchant models is given below) are required to come directly to provisioning without performing 3D verification for cards other than Mastercard, Visa and Amex. Since 3D secure is not supported, the responsibility for Fraud in such transactions belongs to the merchant. The merchant must take measures to protect itself.
This is when the transaction is concluded without touching any 3D secure stage during the authorization flow. In this type of transaction, the customer's "I didn't do it" objections turn into a chargeback request. The chargeback process is evaluated by requesting evidence from the merchant that the transaction was made by the customer. In 3D transactions with successful verification, "I did not do it" claims are terminated by the bank.
For Virtual POS Sales transactions, it is possible to proceed with 2 different methods by the merchant. If the merchant wishes, they can make all the improvements in the test environment. Alternatively, necessary improvements can be made for these transactions directly in the broadcast environment.
According to the method to be selected by the merchant, before starting Virtual POS sales transactions, the first transactions must be made according to the appropriate one of the following headings:
If the work to be done is carried out in a test environment, the following predefined values can be used as they are:
Parameter | Value |
---|---|
MerchantID | 7000679 |
ProvUserID | PROVAUT / PROVRFN / PROVOOS |
ProvisionPassword | 123qweASD/ |
TerminalID | 30691297 |
StoreKey | 12345678 |
In the studies to be carried out in the test environment "https://sanalposprovtest.garantibbva.com.tr/VPServlet" url will be used.
A panel where the operations performed in the test environment can be monitored and displayed at this address you can access.
Variable | Value |
---|---|
Kullanıcı Adı | 99999999999 |
Passcode | Destek.1 |
Password | 147852 |
Not: In the event of an error in the password process, please try a second time before making a second attempt. Send Us a Question Please provide information with the form.
List of all test cards that can be used in the test environment from this page you can reach.
When proceeding with this method, the passwords to be used by the merchant in the setup as the first step are (“PROVAUT”,“PROVOOS”, “PROVRFN” ve “3D” (storekey) passwords) Virtual POS First Steps virtual POS management panel as specified in the document.
Passwords and accounts created in this way will be used in the next steps.
In the studies to be carried out in PROD environment "https://sanalposprov.garanti.com.tr/VPServlet" url will be used.
This document explains step by step how to create the data required for the <HashData> tag in the request message, which is used under many transaction types.
The <HashData> tag in the request messages is the field that allows the password verification of the user. Hash creation details are explained separately below.
In the new VirtualPoS application, the HASH structure is used to prevent the password of the terminal from circulating openly.
Hash account:
1. SHA1 in the calculation of hashedpassword information
2. SHA512 algorithm is used to calculate the hashvalue.
In the hash calculation, a two-part HASH structure is used. In the first stage, the hashedpassword value will be obtained using the SHA1 algorithm by juxtaposing the provisioning password with the terminal number.
The operations required to generate hash are presented below for different programming languages:
The request structure required for Virtual POS non 3Ds Advance Sales transactions is specified in the table below. The information and explanations required for each tag under the main tag in the first column in the table should be examined and the request message should be provided according to the rules specified in this table:
Within this structure, many tags contain sub-tags within themselves. Under the relevant heading where each tag is described, the usage rules of tags without subtags and the details of tags with subtags are presented in a separate heading.
Bottom Label | Max Size | Data Writing Format | Description and notes |
---|---|---|---|
<Mode> | PROD | This is the field where the process mode is written | |
<Version> | 16 byte | No format requirement | This is the field where the Api version used is written. Within the scope of hash calculation as Sha512, 512 value must be sent in this field. |
<ChannelCode> | 1 byte | Alphanumeric | Channel information will be sent. It must be empty. |
<Terminal> | This tag contains sub tags. The tags it contains and their rules are given in the following headings. | ||
<Customer> | This tag contains sub tags. The tags it contains and their rules are given in the following headings. | ||
<Card> | This tag contains sub tags. The tags it contains and their rules are given in the following headings. | ||
<Order> | This tag contains sub tags. The tags it contains and their rules are given in the following headings. | ||
<Transaction> | This tag contains sub tags. The tags it contains and their rules are given in the following headings. |
Virtual such as virtual pos number user information to ensure pos verification parameters are sent.
The sub-tags within this tag and their details are given below:
Bottom Label | Max Size | Data Writing Format | Description and notes |
---|---|---|---|
<ProvUserID> | 32 byte | No format requirement | This is the field where the provision user code of the terminal is sent. Prov user, Cancel refund user or OOS user can be found here |
<HashData> | 32 byte | Hash algorithm SHA512 format. After hash conversion, lower case letters must be converted to upper case. Details are given below. | This is the field where the user's password verification is performed. Hash creation details are explained separately in this document. |
<UserID> | No format requirement | This is the field where the user who made the transaction (Agent - Sales Representative) is sent. | |
<ID> | 9 byte | Nümerik | The field where the terminal number is sent |
<MerchatID> | 9 byte | Nümerik | This is the field where the workplace number is sent. |
This is the field where Customer Information is sent. It is mandatory to send the information in the tag.
Bottom Label | Max Size | Data Writing Format | Description and notes |
---|---|---|---|
<IPAdress> | 20 byte | No format requirement | This is the field where the IP address of the customer who made the transaction is sent. It must be sent compulsorily in order to ensure fraud controls. |
<EmailAddress> | 64 byte | This is the field where the E-Mail address of the customer who made the transaction is sent. |
<Card> Label and Rules for the <Card> Label and the Label to be placed under it
This is the field where card information is sent. Credit card information is a mandatory field except for some transaction types.
Note: Unlike other credit cards, American Express cards consist of 15 digit numbers instead of 16, so your card information entry screens must be arranged to accept 15 digits. Unlike other credit cards, the CVV, i.e. security codes of American Express cards have 4 digits instead of 3 and are located on the front of the card. Your security code entry screens must be configured to accept 4-digit codes.
Bottom Label | Max Size | Data Writing Format | Data Writing Format Description and notes |
---|---|---|---|
<Number> | Min: 15 - Max : 19 | Nümeric | This is the field where the card number is sent. |
<ExpireDate> | 4 byte | MMYY (Last 2 digits of Month and Year) | This is the field where the expiration date of the card is sent. |
<CVV2> | Min : 3 Max : 4 (Amex) | Nümeric | This is the field where CVV information of the card is sent. |
This is the field where the information and details of the order are sent.
Bottom Label | Max Size | Data Writing Format | Description and notes |
---|---|---|---|
<OrderID> | 36 byte | No format requirement | This is the field where the Order Number is sent. Order based must be unique. It must be generated by companies |
<GroupID> | 36 byte | No format requirement | It is the field used to categorize (group) orders. For example: Orders sent with campaigns can be separated with an information written in GroupID. |
This is the field where transaction information and financial information are sent.
Bottom Label | Max Size | Data Writing Format | Description and notes |
---|---|---|---|
<Type> | 32 byte | Alphanumeric | This is the field where the Transaction Type is sent. Details about transaction types will be given separately in the document. Attention should be paid to the use of other fields according to the transaction type. |
<Amount> | 17,2 number | Nümerik LLLLKK şeklinde yollanır. Son 2 hane kuruşu ifade eder. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 şeklinde | This is the field where the amount information is entered. |
<CurrencyCode> | 3 byte | Numeric | This is the field where exchange rate information is sent. 949 -> TL will be informed for other exchange rates according to your authorization. |
<CardholderPresentCode> | 2 byte | Numeric | Enter 0 for normal transactions and 13 for 3D transactions. |
<MotoInd> | 1 byte | Alphanumeric | It takes Y and N values. N is sent for Ecommerce transactions. Y is sent for transactions with Moto transaction status. |
The response structure returned from the service after the request sent in the previous headings for Virtual POS Advance Sales transactions Non 3ds is specified in the table below. The information and explanations required for each tag under the main tag in the first column in the table should be examined and the request message should be provided according to the rules specified in this table:
In the Virtual POS cash sales transaction, the response structure is generally as follows:
The tags in the answer structure given above and the sub tags under these tags are given in the heading below:
Bottom Label | Data Writing Format | Description and notes |
---|---|---|
<Mode> | PROD - TEST | This is the field where the process mode is written |
<Customer> | This is the field where the customer information sent in the request structure is sent back for verification purposes. | |
<Order> | This tag contains sub tags within itself. The sub tags it contains are given in the headings below. | |
<Transaction> | This tag contains sub tags within itself. The sub tags it contains are given in the headings below. |
This is the field where the order information sent in the request is returned in the same way in the response.
Bottom Label | Data Writing Format | Description and notes |
---|---|---|
<OrderID> | Alfanümerik | This is the field where the order number is returned. |
<GroupID> | Alfanümerik | The field where the GroupID number is returned. This tag contains sub tags. Details about the sub tags are given in the headings below. |
Bottom Tags | Data Writing Format | Description and notes |
---|---|---|
<Response> | This tag contains sub tags. Details about the sub-tags are given in the headings below. | |
<RetrefNum> | Numeric | The transaction number generated by Virtualpos is returned |
<AuthCode> | Numeric | This is the field where the confirmation code is returned. |
<BatchNum> | This is the field that returns which batche the transactions will enter. | |
<SequenceNum> | Transaction sequence number | |
<ProvDate> | YYYYMMDD | This is the field where the provision date is returned. |
<CardNumberMasked> | This is the field where the first 6 and last 4 digits of the card number and the fields in between are returned with *. | |
<CardHolderName> | This is the field where the name of the cardholder is sent. | |
<CardType> | This is the field where the type of card processed is returned. | |
<HashData> | This is the field where the HashData information of the transaction is returned. | |
<HostMsgList> | This tag contains sub tags. Details about the sub-tags are given in the headings below. | |
<RewardInqResult> | This tag contains sub tags. Details about the sub-tags are given in the headings below. | |
<CampaignChooseLink> | This is the field where the connection information of the screen containing the campaigns that the customer can benefit from after the transaction is sent. | |
<GarantiCardInd> |
Alt Tags | Description and notes |
---|---|
<Source> | This is the field where the source information is returned. |
<Code> | This is the field where Approved - declined information is returned. |
<ReasonCode> | This is the field where the answer code is returned. |
<Message> | This is the field where the message information is returned. |
<ErrorMsg> | This is the field where the error message is returned. |
<SysErrMsg> | This is the field where the system error message is returned. |
The <PaymentList> tag contains the <Payment> tag.
The details of the <Payment> tag are given in the table below:
Bottom Label | Data Writing Format | Description and notes |
---|---|---|
<InstallmentNumber> | Numeric | Field where the installment number is returned. |
<DueDate> | YYYYMMDD | Field where the installment date is returned |
<Amount> | The numeric is sent as LLLLLLKK. The last 2 digits represent cents. 1,00 TL -> 100 11,22 TL->1122 0,01TL -> 1 | This is the field where the installment amount is returned. |
Bottom Label | Data Writing Format | Description and notes |
---|---|---|
<HostMsg> | This is the field where campaign messages are returned. |
Bottom Tags | Data Writing Format | Description and notes |
---|---|---|
<RewardList> | This tag contains sub tags. Details about the sub-tags are given in the headings below. | |
<ChequeList> | This tag contains sub tags. Details about the sub-tags are given in the headings below. |
Bottom Tags | Data Writing Format | Description and notes |
---|---|---|
<Reward> | This tag contains sub tags. Details about the sub-tags are given in the headings below. |
Bottom Tags | Data Writing Format | Description and notes |
---|---|---|
<Cheque> | This tag contains sub tags. Details about the sub-tags are given in the headings below. |
Below are github repo links to virtual POS Advance Sales transaction examples written in different software languages. You can review the codes written with predefined values via the link of your preferred programming language.
Below are the github repo links for custom code examples written in different programming languages, including this transaction type. You can examine the codes written with predefined values through the link of your preferred programming language.
Error codes from this page you can reach.
List of test cards from this page you can reach.
<Response>
<Source>GVPS</Source>
<Code>92</Code>
<ReasonCode>0651</ReasonCode>
<Message>Declined</Message>
<ErrorMsg>Kullanıcı şifresi hatalı</ErrorMsg>
<SysErrMsg>ErrorId: 0651</SysErrMsg>
</Response>
Alınan hata kodlamanızda gönderilen hash datayı değerini oluşturan alanların sistemde tanımlı olan yada kodlama post edilen değerlerle uyuşmadığını durumlarda alınmaktadır. Bu alanları kontrol ederek yeniden işlem denemenizi ve hatanın devamı halinde hash değerini oluşturan alanları ve oluşturduğunuz hash değerini tarafımıza göndermenizi rica ederiz.
Ayrıca kodlamada kullanılan PROVAUT ve 3D şifrenizi resetlemenizi ve kodlamada güncellemenizi rica ederiz.
<Response>
<Source>GVPS</Source>
<Code>92</Code>
<ReasonCode>0752</ReasonCode>
<Message>Declined</Message>
<ErrorMsg>Terminal kaydı yok</ErrorMsg>
<SysErrMsg>ErrorId: 0752</SysErrMsg>
</Response>
“ErrorId: 0752” İşlemde kullandığınız Terminal numarasını ve post adresinizi kontrol etmelisiniz.
PROD Provizyon post adresi 3D'siz için tıklayınız.
We would love to hear from you. Do you have problems/questions about services ? Send us detailed email about it ?
Send Us a Question Send Us a Question