better-payment
Providers

Parampos

Parampos (Param / TurkPOS) integration reference.

Parampos uses Param's TurkPOS SOAP service.

Configuration

parampos: {
  enabled: true,
  config: {
    clientCode: process.env.PARAMPOS_CLIENT_CODE!,
    clientUsername: process.env.PARAMPOS_CLIENT_USERNAME!,
    clientPassword: process.env.PARAMPOS_CLIENT_PASSWORD!,
    guid: process.env.PARAMPOS_GUID!, // keep secret: callbacks are verified with it
    // baseUrl: defaults from mode (test-dmz.param.com.tr / posws.param.com.tr)
  },
}

Amounts and installments

  • price → Islem_Tutar, paidPrice → Toplam_Tutar (the amount charged, including installment commission). Amounts are sent with a decimal comma.
  • For installments, compute paidPrice from the rates defined on your Param account. The library never adds commission itself.
  • Only TRY is supported (TP_WMD_UCD). Other currencies return failure.

paymentId is your order id (Siparis_ID): the conversationId you pass, or a generated alphanumeric id.

Direct Payment (non-3D)

const result = await payment.parampos.createPayment({ ...paymentRequest, conversationId: 'ORDER123' });

3D Secure

const init = await payment.parampos.initThreeDSPayment({
  ...paymentRequest,
  conversationId: 'ORDER123',
  installment: 1,
  callbackUrl: 'https://yoursite.com/api/pay/parampos/payment/complete-3ds',
});
// Render init.threeDSHtmlContent (UCD_HTML)

Param POSTs md, mdStatus, orderId, islemGUID, islemHash, … to callbackUrl:

const result = await payment.parampos.completeThreeDSPayment(callbackBody);
  1. islemHash is verified with the GUID from your configuration. A GUID inside the callback is ignored.
  2. mdStatus must be 1.
  3. The payment is finalized with TP_WMD_Pay. It counts as success only when Param returns a Dekont_ID.

Refund, Cancel & Status

await payment.parampos.refund({ paymentId: 'ORDER123', price: '50.00', currency: 'TRY', ip: '1.2.3.4' });

// Same-day void. Param needs the full amount; without price it is looked up.
await payment.parampos.cancel({ paymentId: 'ORDER123', ip: '1.2.3.4' });

const status = await payment.parampos.getPayment('ORDER123'); // TP_Islem_Sorgulama4

BIN

const bin = await payment.parampos.binCheck('444676'); // BIN_SanalPos

Installment queries are not implemented for Parampos yet.

On this page