payfyio
Banks

Garanti BBVA

Garanti BBVA Sanal POS (GVP) integration reference.

Garanti BBVA Sanal POS (GVP) uses XML over HTTPS with hash-based authentication. 3D Secure is delivered as an auto-submitting form to GVP's 3DEngine endpoint.

Getting your credentials

GVP credentials come from your Garanti BBVA member-merchant (üye işyeri) agreement — they are not self-service. Obtain them from the bank's VPOS/merchant team (or your integrator):

  • merchantId, terminalId — your merchant and terminal numbers
  • provisionUser, provisionPassword — the provisioning API user
  • storeKey — key used for the request hash
  • secure3DStoreKey (optional) — separate key for the 3-D Secure hash

Request a test set for integration and a separate production set for go-live.

Configuration

garanti: {
  enabled: true,
  config: {
    merchantId:        process.env.GARANTI_MERCHANT_ID!,
    terminalId:        process.env.GARANTI_TERMINAL_ID!,
    provisionUser:     process.env.GARANTI_PROVISION_USER!,
    provisionPassword: process.env.GARANTI_PROVISION_PASSWORD!,
    storeKey:          process.env.GARANTI_STORE_KEY!,
    secure3DStoreKey:  process.env.GARANTI_3D_STORE_KEY,
  },
}

baseUrl defaults to https://sanalposprovtest.garantibbva.com.tr in sandbox and https://sanalposprov.garantibbva.com.tr in production.

3D Secure

const init = await payment.garanti.initThreeDSPayment({
  price: '500.00',
  currency: 'TRY',
  callbackUrl: 'https://yoursite.com/garanti/callback',
  paymentCard: { cardHolderName, cardNumber, expireMonth, expireYear, cvc },
  buyer: { /* … */ },
  basketId: 'order-1',
  /* … */
});

// init.threeDSHtmlContent → render to auto-POST to GVP's 3DEngine.

const final = await payment.garanti.completeThreeDSPayment(req.body);
// final.status === 'success' when mdStatus ∈ {1,2,3,4}

Refund / Cancel / Get

await payment.garanti.refund({ paymentId, price: '500.00', currency: 'TRY', ip: '…' });
await payment.garanti.cancel({ paymentId, ip: '…' });
await payment.garanti.getPayment(paymentId);

Testing

Set mode: 'sandbox' and use the bank's test credentials; baseUrl switches to https://sanalposprovtest.garantibbva.com.tr automatically. Complete a 3D Secure flow with a test card from Garanti's integration guide and confirm completeThreeDSPayment returns success only after the response hash verifies.

On this page