Quick Start
Make your first payment in under 5 minutes.
1. Initialize Payfyio
import { Payfyio, ProviderType } from 'payfyio';
const payment = new Payfyio({
defaultProvider: ProviderType.IYZICO,
providers: {
iyzico: {
enabled: true,
config: {
apiKey: process.env.IYZICO_API_KEY!,
secretKey: process.env.IYZICO_SECRET_KEY!,
baseUrl: process.env.IYZICO_BASE_URL ?? 'https://sandbox-api.iyzipay.com',
},
},
},
});2. Build a Payment Request
import { Currency, BasketItemType } from 'payfyio';
const request = {
price: '100.00',
paidPrice: '100.00',
currency: Currency.TRY,
installment: 1,
paymentCard: {
cardHolderName: 'John Doe',
cardNumber: '5528790000000008',
expireMonth: '12',
expireYear: '2030',
cvc: '123',
},
buyer: {
id: 'BY789',
name: 'John',
surname: 'Doe',
email: 'johndoe@example.com',
identityNumber: '74300864791',
registrationAddress: 'Nidakule Göztepe, Merdivenköy Mah.',
city: 'Istanbul',
country: 'Turkey',
ip: '85.34.78.112',
},
shippingAddress: {
contactName: 'Jane Doe',
city: 'Istanbul',
country: 'Turkey',
address: 'Nidakule Göztepe, Merdivenköy Mah.',
},
billingAddress: {
contactName: 'Jane Doe',
city: 'Istanbul',
country: 'Turkey',
address: 'Nidakule Göztepe, Merdivenköy Mah.',
},
basketItems: [
{
id: 'BI101',
name: 'Binocular',
category1: 'Collectibles',
itemType: BasketItemType.PHYSICAL,
price: '100.00',
},
],
};3. Create a Payment
const result = await payment.createPayment(request);
if (result.status === 'success') {
console.log('Payment ID:', result.paymentId);
} else {
console.error('Error:', result.errorMessage);
}4. Initialize 3D Secure
const threeDSResult = await payment.initThreeDSPayment({
...request,
callbackUrl: 'https://yoursite.com/payment/callback',
});
// Redirect user to threeDSResult.htmlContent or threeDSResult.redirectUrl5. Complete 3D Secure
// In your callback endpoint:
const completeResult = await payment.completeThreeDSPayment({
paymentId: body.paymentId, // from provider callback
conversationId: body.conversationId,
});Using Multiple Providers
const payment = new Payfyio({
defaultProvider: ProviderType.IYZICO,
providers: {
iyzico: { enabled: true, config: { /* ... */ } },
paytr: { enabled: true, config: { /* ... */ } },
},
});
// Use default provider (iyzico)
await payment.createPayment(request);
// Use specific provider
await payment.iyzico.createPayment(request);
await payment.paytr.initThreeDSPayment(paytrRequest);
// Use .use() for dynamic routing
await payment.use(ProviderType.PAYTR).initThreeDSPayment(paytrRequest);