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. BunucalculatePaidPrice()ile hesaplayın (aşağıda); kütüphane oranları asla tahmin etmez. - Yalnızca TRY desteklenir (
TP_WMD_UCD). Diğer para birimlerifailuredö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);islemHash, yapılandırmanızdaki GUID ile doğrulanır. Callback'in içindeki bir GUID yok sayılır.mdStatus1olmalıdır.- Ödeme
TP_WMD_Payile tamamlanır. Yalnızca Param birDekont_IDdöndürdüğündesuccesssayı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_Sorgulama4BIN
const bin = await payment.parampos.binCheck('444676'); // BIN_SanalPosTaksit
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çinValidationErrorfırlatır. BIN_SanalPosDKK = 1döndürdüğünde "Diğer Banka Kartları" oranları uygulanır.getInstallmentRates(), tüm kart programlarının ham oran tablosunu döner.