Better Payment
Sağlayıcılar

Parampos

Parampos (Param / TurkPOS) entegrasyon referansı.

Parampos, Param'ın TurkPOS SOAP servisini kullanır.

Yapılandırma

import { betterPayment, parampos } from 'better-payment';

const payment = betterPayment({
  providers: {
    parampos: parampos({
      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)
    }),
  },
});

Tutarlar ve taksit

  • price → Islem_Tutar, paidPrice → Toplam_Tutar (taksit komisyonu dahil çekilen tutar). Tutarlar ondalık virgülle gönderilir.
  • Taksitli ödemede paidPrice, Param oranlarınızdaki komisyonu içermelidir. Bunu calculatePaidPrice() ile hesaplayın (aşağıda); kütüphane oranları asla tahmin etmez.
  • Yalnızca TRY desteklenir (TP_WMD_UCD). Diğer para birimleri failure döner.

paymentId sipariş numaranızdır (Siparis_ID): verdiğiniz conversationId ya da üretilen alfanümerik bir numara.

Doğrudan ödeme (3D'siz)

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, callbackUrl adresine md, mdStatus, orderId, islemGUID, islemHash, … alanlarını POST eder:

const result = await payment.parampos.completeThreeDSPayment(callbackBody);
  1. islemHash, yapılandırmanızdaki GUID ile doğrulanır. Callback'in içindeki bir GUID yok sayılır.
  2. mdStatus 1 olmalıdır.
  3. Ödeme TP_WMD_Pay ile tamamlanır. Yalnızca Param bir Dekont_ID döndürdüğünde success sayılır.

İade, iptal ve durum sorgusu

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

Taksit

installmentInfo(), BIN_SanalPos (kartın hangi kart programına ait olduğu) ile TP_Ozel_Oran_SK_Liste'yi (müşteriye yansıyan oranlarınız) birleştirir ve kullanılabilir taksit sayılarını Param'ın toplam tutarlarıyla döner:

const info = await payment.parampos.installmentInfo({ binNumber: '435508', price: '100.00' });
// installmentPrices: [
//   { installmentNumber: 1, totalPrice: 101.75, installmentPrice: 101.75, commissionRate: 1.75 },
//   { installmentNumber: 3, totalPrice: 104.10, installmentPrice: 34.70, commissionRate: 4.1 },
//   ...
// ]

Taksitle çekim yapmak için paidPrice'ı (Toplam_Tutar) aynı şekilde hesaplayın:

const paidPrice = await payment.parampos.calculatePaidPrice({
  binNumber: '435508',
  price: '250.00',
  installment: 3,
}); // '260.25'

await payment.parampos.initThreeDSPayment({ ...order, price: '250.00', paidPrice, installment: 3 });
  • Toplam: Toplam_Tutar = price + price × oran / 100, kuruşa yukarı yuvarlanır (yarım ve üstü).
  • Oranı negatif olan taksit sayıları (Param'da "kullanılamaz") listelenmez; calculatePaidPrice() bunlar için ValidationError fırlatır.
  • BIN_SanalPos DKK = 1 döndürdüğünde "Diğer Banka Kartları" oranları uygulanır.
  • getInstallmentRates(), tüm kart programlarının ham oran tablosunu döner.

Bu sayfada