@crediblemark/buayar 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -484,7 +484,7 @@ function printScaffoldSummary(result) {
484
484
  }
485
485
 
486
486
  // src/cli/index.ts
487
- var VERSION = "0.8.4";
487
+ var VERSION = "0.8.5";
488
488
  function parseArgs(argv) {
489
489
  const flags = [];
490
490
  const rest = [];
package/dist/index.d.mts CHANGED
@@ -216,6 +216,39 @@ interface GetPaymentMethodsResult {
216
216
  error?: string;
217
217
  rawResponse: any;
218
218
  }
219
+ /**
220
+ * Deskriptor saluran pembayaran kanonikal siap-render untuk UI.
221
+ * Dibangun dari {@link PaymentMethod} via `buildPaymentMethodDescriptors()` di
222
+ * `core/descriptor.ts` sehingga konsumen (frontend, snapshot, CLI) selalu
223
+ * mendapat bentuk seragam tanpa perlu mapping ulang per provider.
224
+ */
225
+ interface PaymentMethodDescriptor {
226
+ /** Identifier uppercase yang dipakai sistem internal (mis. 'BCA_VA', 'QRIS', 'GOPAY') */
227
+ id: string;
228
+ /** Nama ramah pengguna */
229
+ name: string;
230
+ /** Tipe singkat untuk icon/badge rendering */
231
+ type: "qris" | "va" | "ewallet" | "retail" | "card" | "paylater" | "other";
232
+ /** Ikon emoji */
233
+ icon: string;
234
+ /** Badge teks (mis. "Instan Bebas Biaya") */
235
+ badge: string;
236
+ /** URL logo (opsional) */
237
+ image?: string;
238
+ /** Kategori resmi Buayar (Virtual Account, QRIS, E-Wallet, dll) */
239
+ category?: string;
240
+ /** Apakah channel tersedia (true) atau coming-soon (false) */
241
+ coming_soon?: boolean;
242
+ /** Fee admin (string deskriptif, mis. "0.7%" atau "IDR 4,000") */
243
+ totalFee?: string;
244
+ }
245
+ interface GetPaymentMethodDescriptorsResult {
246
+ success: boolean;
247
+ provider?: string;
248
+ descriptors: PaymentMethodDescriptor[];
249
+ error?: string;
250
+ generatedAt: string;
251
+ }
219
252
  interface CheckTransactionParams {
220
253
  /** Merchant order ID saat pembuatan transaksi */
221
254
  merchantOrderId: string;
@@ -1309,6 +1342,13 @@ declare class Buayar {
1309
1342
  * Ambil daftar channel pembayaran aktif (Accordion-Ready)
1310
1343
  */
1311
1344
  getPaymentMethods(params?: GetPaymentMethodsParams, configOverride?: Partial<ProviderConfig>): Promise<GetPaymentMethodsResult>;
1345
+ /**
1346
+ * Ambil daftar channel pembayaran aktif dalam bentuk deskriptor kanonikal
1347
+ * siap-render (id, name, type, icon, badge, image, category, totalFee).
1348
+ * Wrapper di atas {@link Buayar.getPaymentMethods} + `buildPaymentMethodDescriptors`,
1349
+ * sehingga konsumen UI/snapshot tidak perlu melakukan mapping ulang per provider.
1350
+ */
1351
+ getPaymentMethodDescriptors(params?: GetPaymentMethodsParams, configOverride?: Partial<ProviderConfig>): Promise<GetPaymentMethodDescriptorsResult>;
1312
1352
  /**
1313
1353
  * Cek status transaksi pembayaran berdasarkan Order ID
1314
1354
  */
@@ -1489,6 +1529,26 @@ declare function toStripePaymentMethod(code?: string): string | undefined;
1489
1529
  */
1490
1530
  declare function toCanonicalPaymentMethod(provider: string, code?: string): string;
1491
1531
 
1532
+ type PaymentMethodDescriptorType = PaymentMethodDescriptor["type"];
1533
+ /**
1534
+ * Sandingkan kategori resmi Buayar menjadi tipe singkat UI.
1535
+ * Kategori bisa berbeda antar provider, oleh karena itu mapping dilakukan
1536
+ * di sini (sentral) agar konsumen tidak perlu tahu detail kategori per PG.
1537
+ */
1538
+ declare function mapCategoryToDescriptorType(category: string, paymentMethod?: string): PaymentMethodDescriptorType;
1539
+ /**
1540
+ * Bangun satu deskriptor kanonikal siap-render dari objek PaymentMethod.
1541
+ *
1542
+ * @param pm Hasil mentah provider (lihat `PaymentMethod`).
1543
+ * @param _providerName Nama provider aktif (disimpan untuk keperluan lattice
1544
+ * masa depan; saat ini mapping kategori sudah generik).
1545
+ */
1546
+ declare function buildPaymentMethodDescriptor(pm: PaymentMethod, _providerName?: string): PaymentMethodDescriptor;
1547
+ /**
1548
+ * Bangun daftar deskriptor kanonikal dari hasil `getPaymentMethods()`.
1549
+ */
1550
+ declare function buildPaymentMethodDescriptors(methods: PaymentMethod[], providerName?: string): PaymentMethodDescriptor[];
1551
+
1492
1552
  declare function getDuitkuInquirySignatures(merchantCode: string, orderId: string, amount: number, apiKey: string): {
1493
1553
  payloadSignature: string;
1494
1554
  timestamp: string;
@@ -1893,4 +1953,4 @@ declare function safeCompare(a: string, b: string): boolean;
1893
1953
  */
1894
1954
  declare function getPaymentMethodCategory(code: string, name?: string): "Virtual Account" | "QRIS" | "E-Wallet" | "Retail / Gerai" | "Kartu Kredit" | "Paylater / Cicilan" | "Lainnya";
1895
1955
 
1896
- export { AdyenClient, AdyenProvider, BasePaymentProvider, BraintreeClient, BraintreeProvider, Buayar, type BuayarConfig, CANONICAL_TO_DOKU, CANONICAL_TO_DUITKU, CANONICAL_TO_FASPAY, CANONICAL_TO_FINPAY, CANONICAL_TO_IPAYMU, CANONICAL_TO_MIDTRANS, CANONICAL_TO_NICEPAY, CANONICAL_TO_OY, CANONICAL_TO_PRISMALINK, CANONICAL_TO_STRIPE, CANONICAL_TO_XENDIT, CORE_API_METHODS, type CanonicalPaymentMethod, type CheckBalanceResult, type CheckTransactionParams, type CheckTransactionResult, CheckoutComClient, CheckoutComProvider, type CreateInvoiceParams, type CustomerDetails, DUITKU_TO_CANONICAL, type DisburseParams, type DisburseResult, DokuClient, DokuProvider, DuitkuClient, type DuitkuDisbursementParams, DuitkuProvider, type EWalletResponse, FaspayClient, FaspayProvider, FinpayClient, FinpayProvider, type GetPaymentMethodsParams, type GetPaymentMethodsResult, type InvoiceResponse, IpaymuClient, IpaymuProvider, MIDTRANS_PROBE_PAYLOADS, MIDTRANS_STATIC_METHODS, type MandiriBillInfo, MidtransClient, MidtransProvider, NicepayClient, NicepayProvider, OyClient, OyProvider, PaymentManager, type PaymentMethod, type PaymentMethodItem, type PaymentMode, PaypalClient, PaypalProvider, PayuClient, PayuProvider, PrismalinkClient, PrismalinkProvider, type ProviderCapability, type ProviderConfig, type ProviderDescriptor, ProviderRegistry, type QrisResponse, RazorpayClient, RazorpayProvider, type RefundParams, type RefundResult, SnapApiError, SnapClient, type SnapClientOptions, SquareClient, SquareProvider, StripeClient, StripeProvider, TwoCheckoutClient, TwoCheckoutProvider, type VerifyCallbackResult, type VirtualAccountResponse, XenditClient, type XenditDisbursementParams, XenditProvider, buayar, buildBraintreeBasicAuth, buildCoreChargePayload, buildDefaultDescriptors, buildIpaymuCallbackString, buildPaypalBasicAuth, buildPayuBasicAuth, buildRazorpayBasicAuth, buildTwoCheckoutAuth, formatNicepayTimestamp, generateDokuHeaders, generateFaspaySignature, generateFinpaySignature, generateIpaymuSignature, generateNicepayToken, generateOyHeaders, generatePrismalinkSignature, generateSnapAsymmetricSignature, generateSnapSymmetricSignature, getDuitkuInquirySignatures, getDuitkuPaymentMethodsSignature, getDuitkuStatusSignatures, getPaymentMethodCategory, getXenditAuthHeader, hmacSha256, md5, minifyJson, normalizeIpaymuCallback, parseCoreChargeResponse, paymentManager, providerRegistry, resolveConfigFromEnv, safeCompare, serializePaypalParams, serializeStripeParams, sha256, sha256Hex, sha512, snapErrorHint, snapExternalId, snapTimestamp, snapUtcTimestamp, toCanonicalPaymentMethod, toDokuPaymentMethod, toDuitkuPaymentMethod, toFaspayPaymentMethod, toFinpayPaymentMethod, toIpaymuPaymentMethod, toNicepayPaymentMethod, toOyPaymentMethod, toPrismalinkPaymentMethod, toStripePaymentMethod, toXenditPaymentMethod, verifyAdyenWebhook, verifyBraintreeWebhook, verifyCheckoutComWebhook, verifyDokuWebhookSignature, verifyDuitkuCallbackSignature, verifyFaspaySignature, verifyFinpaySignature, verifyIpaymuCallback, verifyIpaymuCallbackSignature, verifyNicepayWebhook, verifyOyWebhook, verifyPaypalWebhookSimple, verifyPayuWebhook, verifyPrismalinkSignature, verifyRazorpayWebhook, verifySnapWebhookSignature, verifySquareWebhook, verifyStripeWebhook, verifyTwoCheckoutWebhook, verifyXenditWebhookToken };
1956
+ export { AdyenClient, AdyenProvider, BasePaymentProvider, BraintreeClient, BraintreeProvider, Buayar, type BuayarConfig, CANONICAL_TO_DOKU, CANONICAL_TO_DUITKU, CANONICAL_TO_FASPAY, CANONICAL_TO_FINPAY, CANONICAL_TO_IPAYMU, CANONICAL_TO_MIDTRANS, CANONICAL_TO_NICEPAY, CANONICAL_TO_OY, CANONICAL_TO_PRISMALINK, CANONICAL_TO_STRIPE, CANONICAL_TO_XENDIT, CORE_API_METHODS, type CanonicalPaymentMethod, type CheckBalanceResult, type CheckTransactionParams, type CheckTransactionResult, CheckoutComClient, CheckoutComProvider, type CreateInvoiceParams, type CustomerDetails, DUITKU_TO_CANONICAL, type DisburseParams, type DisburseResult, DokuClient, DokuProvider, DuitkuClient, type DuitkuDisbursementParams, DuitkuProvider, type EWalletResponse, FaspayClient, FaspayProvider, FinpayClient, FinpayProvider, type GetPaymentMethodDescriptorsResult, type GetPaymentMethodsParams, type GetPaymentMethodsResult, type InvoiceResponse, IpaymuClient, IpaymuProvider, MIDTRANS_PROBE_PAYLOADS, MIDTRANS_STATIC_METHODS, type MandiriBillInfo, MidtransClient, MidtransProvider, NicepayClient, NicepayProvider, OyClient, OyProvider, PaymentManager, type PaymentMethod, type PaymentMethodDescriptor, type PaymentMethodDescriptorType, type PaymentMethodItem, type PaymentMode, PaypalClient, PaypalProvider, PayuClient, PayuProvider, PrismalinkClient, PrismalinkProvider, type ProviderCapability, type ProviderConfig, type ProviderDescriptor, ProviderRegistry, type QrisResponse, RazorpayClient, RazorpayProvider, type RefundParams, type RefundResult, SnapApiError, SnapClient, type SnapClientOptions, SquareClient, SquareProvider, StripeClient, StripeProvider, TwoCheckoutClient, TwoCheckoutProvider, type VerifyCallbackResult, type VirtualAccountResponse, XenditClient, type XenditDisbursementParams, XenditProvider, buayar, buildBraintreeBasicAuth, buildCoreChargePayload, buildDefaultDescriptors, buildIpaymuCallbackString, buildPaymentMethodDescriptor, buildPaymentMethodDescriptors, buildPaypalBasicAuth, buildPayuBasicAuth, buildRazorpayBasicAuth, buildTwoCheckoutAuth, formatNicepayTimestamp, generateDokuHeaders, generateFaspaySignature, generateFinpaySignature, generateIpaymuSignature, generateNicepayToken, generateOyHeaders, generatePrismalinkSignature, generateSnapAsymmetricSignature, generateSnapSymmetricSignature, getDuitkuInquirySignatures, getDuitkuPaymentMethodsSignature, getDuitkuStatusSignatures, getPaymentMethodCategory, getXenditAuthHeader, hmacSha256, mapCategoryToDescriptorType, md5, minifyJson, normalizeIpaymuCallback, parseCoreChargeResponse, paymentManager, providerRegistry, resolveConfigFromEnv, safeCompare, serializePaypalParams, serializeStripeParams, sha256, sha256Hex, sha512, snapErrorHint, snapExternalId, snapTimestamp, snapUtcTimestamp, toCanonicalPaymentMethod, toDokuPaymentMethod, toDuitkuPaymentMethod, toFaspayPaymentMethod, toFinpayPaymentMethod, toIpaymuPaymentMethod, toNicepayPaymentMethod, toOyPaymentMethod, toPrismalinkPaymentMethod, toStripePaymentMethod, toXenditPaymentMethod, verifyAdyenWebhook, verifyBraintreeWebhook, verifyCheckoutComWebhook, verifyDokuWebhookSignature, verifyDuitkuCallbackSignature, verifyFaspaySignature, verifyFinpaySignature, verifyIpaymuCallback, verifyIpaymuCallbackSignature, verifyNicepayWebhook, verifyOyWebhook, verifyPaypalWebhookSimple, verifyPayuWebhook, verifyPrismalinkSignature, verifyRazorpayWebhook, verifySnapWebhookSignature, verifySquareWebhook, verifyStripeWebhook, verifyTwoCheckoutWebhook, verifyXenditWebhookToken };
package/dist/index.d.ts CHANGED
@@ -216,6 +216,39 @@ interface GetPaymentMethodsResult {
216
216
  error?: string;
217
217
  rawResponse: any;
218
218
  }
219
+ /**
220
+ * Deskriptor saluran pembayaran kanonikal siap-render untuk UI.
221
+ * Dibangun dari {@link PaymentMethod} via `buildPaymentMethodDescriptors()` di
222
+ * `core/descriptor.ts` sehingga konsumen (frontend, snapshot, CLI) selalu
223
+ * mendapat bentuk seragam tanpa perlu mapping ulang per provider.
224
+ */
225
+ interface PaymentMethodDescriptor {
226
+ /** Identifier uppercase yang dipakai sistem internal (mis. 'BCA_VA', 'QRIS', 'GOPAY') */
227
+ id: string;
228
+ /** Nama ramah pengguna */
229
+ name: string;
230
+ /** Tipe singkat untuk icon/badge rendering */
231
+ type: "qris" | "va" | "ewallet" | "retail" | "card" | "paylater" | "other";
232
+ /** Ikon emoji */
233
+ icon: string;
234
+ /** Badge teks (mis. "Instan Bebas Biaya") */
235
+ badge: string;
236
+ /** URL logo (opsional) */
237
+ image?: string;
238
+ /** Kategori resmi Buayar (Virtual Account, QRIS, E-Wallet, dll) */
239
+ category?: string;
240
+ /** Apakah channel tersedia (true) atau coming-soon (false) */
241
+ coming_soon?: boolean;
242
+ /** Fee admin (string deskriptif, mis. "0.7%" atau "IDR 4,000") */
243
+ totalFee?: string;
244
+ }
245
+ interface GetPaymentMethodDescriptorsResult {
246
+ success: boolean;
247
+ provider?: string;
248
+ descriptors: PaymentMethodDescriptor[];
249
+ error?: string;
250
+ generatedAt: string;
251
+ }
219
252
  interface CheckTransactionParams {
220
253
  /** Merchant order ID saat pembuatan transaksi */
221
254
  merchantOrderId: string;
@@ -1309,6 +1342,13 @@ declare class Buayar {
1309
1342
  * Ambil daftar channel pembayaran aktif (Accordion-Ready)
1310
1343
  */
1311
1344
  getPaymentMethods(params?: GetPaymentMethodsParams, configOverride?: Partial<ProviderConfig>): Promise<GetPaymentMethodsResult>;
1345
+ /**
1346
+ * Ambil daftar channel pembayaran aktif dalam bentuk deskriptor kanonikal
1347
+ * siap-render (id, name, type, icon, badge, image, category, totalFee).
1348
+ * Wrapper di atas {@link Buayar.getPaymentMethods} + `buildPaymentMethodDescriptors`,
1349
+ * sehingga konsumen UI/snapshot tidak perlu melakukan mapping ulang per provider.
1350
+ */
1351
+ getPaymentMethodDescriptors(params?: GetPaymentMethodsParams, configOverride?: Partial<ProviderConfig>): Promise<GetPaymentMethodDescriptorsResult>;
1312
1352
  /**
1313
1353
  * Cek status transaksi pembayaran berdasarkan Order ID
1314
1354
  */
@@ -1489,6 +1529,26 @@ declare function toStripePaymentMethod(code?: string): string | undefined;
1489
1529
  */
1490
1530
  declare function toCanonicalPaymentMethod(provider: string, code?: string): string;
1491
1531
 
1532
+ type PaymentMethodDescriptorType = PaymentMethodDescriptor["type"];
1533
+ /**
1534
+ * Sandingkan kategori resmi Buayar menjadi tipe singkat UI.
1535
+ * Kategori bisa berbeda antar provider, oleh karena itu mapping dilakukan
1536
+ * di sini (sentral) agar konsumen tidak perlu tahu detail kategori per PG.
1537
+ */
1538
+ declare function mapCategoryToDescriptorType(category: string, paymentMethod?: string): PaymentMethodDescriptorType;
1539
+ /**
1540
+ * Bangun satu deskriptor kanonikal siap-render dari objek PaymentMethod.
1541
+ *
1542
+ * @param pm Hasil mentah provider (lihat `PaymentMethod`).
1543
+ * @param _providerName Nama provider aktif (disimpan untuk keperluan lattice
1544
+ * masa depan; saat ini mapping kategori sudah generik).
1545
+ */
1546
+ declare function buildPaymentMethodDescriptor(pm: PaymentMethod, _providerName?: string): PaymentMethodDescriptor;
1547
+ /**
1548
+ * Bangun daftar deskriptor kanonikal dari hasil `getPaymentMethods()`.
1549
+ */
1550
+ declare function buildPaymentMethodDescriptors(methods: PaymentMethod[], providerName?: string): PaymentMethodDescriptor[];
1551
+
1492
1552
  declare function getDuitkuInquirySignatures(merchantCode: string, orderId: string, amount: number, apiKey: string): {
1493
1553
  payloadSignature: string;
1494
1554
  timestamp: string;
@@ -1893,4 +1953,4 @@ declare function safeCompare(a: string, b: string): boolean;
1893
1953
  */
1894
1954
  declare function getPaymentMethodCategory(code: string, name?: string): "Virtual Account" | "QRIS" | "E-Wallet" | "Retail / Gerai" | "Kartu Kredit" | "Paylater / Cicilan" | "Lainnya";
1895
1955
 
1896
- export { AdyenClient, AdyenProvider, BasePaymentProvider, BraintreeClient, BraintreeProvider, Buayar, type BuayarConfig, CANONICAL_TO_DOKU, CANONICAL_TO_DUITKU, CANONICAL_TO_FASPAY, CANONICAL_TO_FINPAY, CANONICAL_TO_IPAYMU, CANONICAL_TO_MIDTRANS, CANONICAL_TO_NICEPAY, CANONICAL_TO_OY, CANONICAL_TO_PRISMALINK, CANONICAL_TO_STRIPE, CANONICAL_TO_XENDIT, CORE_API_METHODS, type CanonicalPaymentMethod, type CheckBalanceResult, type CheckTransactionParams, type CheckTransactionResult, CheckoutComClient, CheckoutComProvider, type CreateInvoiceParams, type CustomerDetails, DUITKU_TO_CANONICAL, type DisburseParams, type DisburseResult, DokuClient, DokuProvider, DuitkuClient, type DuitkuDisbursementParams, DuitkuProvider, type EWalletResponse, FaspayClient, FaspayProvider, FinpayClient, FinpayProvider, type GetPaymentMethodsParams, type GetPaymentMethodsResult, type InvoiceResponse, IpaymuClient, IpaymuProvider, MIDTRANS_PROBE_PAYLOADS, MIDTRANS_STATIC_METHODS, type MandiriBillInfo, MidtransClient, MidtransProvider, NicepayClient, NicepayProvider, OyClient, OyProvider, PaymentManager, type PaymentMethod, type PaymentMethodItem, type PaymentMode, PaypalClient, PaypalProvider, PayuClient, PayuProvider, PrismalinkClient, PrismalinkProvider, type ProviderCapability, type ProviderConfig, type ProviderDescriptor, ProviderRegistry, type QrisResponse, RazorpayClient, RazorpayProvider, type RefundParams, type RefundResult, SnapApiError, SnapClient, type SnapClientOptions, SquareClient, SquareProvider, StripeClient, StripeProvider, TwoCheckoutClient, TwoCheckoutProvider, type VerifyCallbackResult, type VirtualAccountResponse, XenditClient, type XenditDisbursementParams, XenditProvider, buayar, buildBraintreeBasicAuth, buildCoreChargePayload, buildDefaultDescriptors, buildIpaymuCallbackString, buildPaypalBasicAuth, buildPayuBasicAuth, buildRazorpayBasicAuth, buildTwoCheckoutAuth, formatNicepayTimestamp, generateDokuHeaders, generateFaspaySignature, generateFinpaySignature, generateIpaymuSignature, generateNicepayToken, generateOyHeaders, generatePrismalinkSignature, generateSnapAsymmetricSignature, generateSnapSymmetricSignature, getDuitkuInquirySignatures, getDuitkuPaymentMethodsSignature, getDuitkuStatusSignatures, getPaymentMethodCategory, getXenditAuthHeader, hmacSha256, md5, minifyJson, normalizeIpaymuCallback, parseCoreChargeResponse, paymentManager, providerRegistry, resolveConfigFromEnv, safeCompare, serializePaypalParams, serializeStripeParams, sha256, sha256Hex, sha512, snapErrorHint, snapExternalId, snapTimestamp, snapUtcTimestamp, toCanonicalPaymentMethod, toDokuPaymentMethod, toDuitkuPaymentMethod, toFaspayPaymentMethod, toFinpayPaymentMethod, toIpaymuPaymentMethod, toNicepayPaymentMethod, toOyPaymentMethod, toPrismalinkPaymentMethod, toStripePaymentMethod, toXenditPaymentMethod, verifyAdyenWebhook, verifyBraintreeWebhook, verifyCheckoutComWebhook, verifyDokuWebhookSignature, verifyDuitkuCallbackSignature, verifyFaspaySignature, verifyFinpaySignature, verifyIpaymuCallback, verifyIpaymuCallbackSignature, verifyNicepayWebhook, verifyOyWebhook, verifyPaypalWebhookSimple, verifyPayuWebhook, verifyPrismalinkSignature, verifyRazorpayWebhook, verifySnapWebhookSignature, verifySquareWebhook, verifyStripeWebhook, verifyTwoCheckoutWebhook, verifyXenditWebhookToken };
1956
+ export { AdyenClient, AdyenProvider, BasePaymentProvider, BraintreeClient, BraintreeProvider, Buayar, type BuayarConfig, CANONICAL_TO_DOKU, CANONICAL_TO_DUITKU, CANONICAL_TO_FASPAY, CANONICAL_TO_FINPAY, CANONICAL_TO_IPAYMU, CANONICAL_TO_MIDTRANS, CANONICAL_TO_NICEPAY, CANONICAL_TO_OY, CANONICAL_TO_PRISMALINK, CANONICAL_TO_STRIPE, CANONICAL_TO_XENDIT, CORE_API_METHODS, type CanonicalPaymentMethod, type CheckBalanceResult, type CheckTransactionParams, type CheckTransactionResult, CheckoutComClient, CheckoutComProvider, type CreateInvoiceParams, type CustomerDetails, DUITKU_TO_CANONICAL, type DisburseParams, type DisburseResult, DokuClient, DokuProvider, DuitkuClient, type DuitkuDisbursementParams, DuitkuProvider, type EWalletResponse, FaspayClient, FaspayProvider, FinpayClient, FinpayProvider, type GetPaymentMethodDescriptorsResult, type GetPaymentMethodsParams, type GetPaymentMethodsResult, type InvoiceResponse, IpaymuClient, IpaymuProvider, MIDTRANS_PROBE_PAYLOADS, MIDTRANS_STATIC_METHODS, type MandiriBillInfo, MidtransClient, MidtransProvider, NicepayClient, NicepayProvider, OyClient, OyProvider, PaymentManager, type PaymentMethod, type PaymentMethodDescriptor, type PaymentMethodDescriptorType, type PaymentMethodItem, type PaymentMode, PaypalClient, PaypalProvider, PayuClient, PayuProvider, PrismalinkClient, PrismalinkProvider, type ProviderCapability, type ProviderConfig, type ProviderDescriptor, ProviderRegistry, type QrisResponse, RazorpayClient, RazorpayProvider, type RefundParams, type RefundResult, SnapApiError, SnapClient, type SnapClientOptions, SquareClient, SquareProvider, StripeClient, StripeProvider, TwoCheckoutClient, TwoCheckoutProvider, type VerifyCallbackResult, type VirtualAccountResponse, XenditClient, type XenditDisbursementParams, XenditProvider, buayar, buildBraintreeBasicAuth, buildCoreChargePayload, buildDefaultDescriptors, buildIpaymuCallbackString, buildPaymentMethodDescriptor, buildPaymentMethodDescriptors, buildPaypalBasicAuth, buildPayuBasicAuth, buildRazorpayBasicAuth, buildTwoCheckoutAuth, formatNicepayTimestamp, generateDokuHeaders, generateFaspaySignature, generateFinpaySignature, generateIpaymuSignature, generateNicepayToken, generateOyHeaders, generatePrismalinkSignature, generateSnapAsymmetricSignature, generateSnapSymmetricSignature, getDuitkuInquirySignatures, getDuitkuPaymentMethodsSignature, getDuitkuStatusSignatures, getPaymentMethodCategory, getXenditAuthHeader, hmacSha256, mapCategoryToDescriptorType, md5, minifyJson, normalizeIpaymuCallback, parseCoreChargeResponse, paymentManager, providerRegistry, resolveConfigFromEnv, safeCompare, serializePaypalParams, serializeStripeParams, sha256, sha256Hex, sha512, snapErrorHint, snapExternalId, snapTimestamp, snapUtcTimestamp, toCanonicalPaymentMethod, toDokuPaymentMethod, toDuitkuPaymentMethod, toFaspayPaymentMethod, toFinpayPaymentMethod, toIpaymuPaymentMethod, toNicepayPaymentMethod, toOyPaymentMethod, toPrismalinkPaymentMethod, toStripePaymentMethod, toXenditPaymentMethod, verifyAdyenWebhook, verifyBraintreeWebhook, verifyCheckoutComWebhook, verifyDokuWebhookSignature, verifyDuitkuCallbackSignature, verifyFaspaySignature, verifyFinpaySignature, verifyIpaymuCallback, verifyIpaymuCallbackSignature, verifyNicepayWebhook, verifyOyWebhook, verifyPaypalWebhookSimple, verifyPayuWebhook, verifyPrismalinkSignature, verifyRazorpayWebhook, verifySnapWebhookSignature, verifySquareWebhook, verifyStripeWebhook, verifyTwoCheckoutWebhook, verifyXenditWebhookToken };
package/dist/index.js CHANGED
@@ -94,6 +94,8 @@ __export(index_exports, {
94
94
  buildCoreChargePayload: () => buildCoreChargePayload,
95
95
  buildDefaultDescriptors: () => buildDefaultDescriptors,
96
96
  buildIpaymuCallbackString: () => buildIpaymuCallbackString,
97
+ buildPaymentMethodDescriptor: () => buildPaymentMethodDescriptor,
98
+ buildPaymentMethodDescriptors: () => buildPaymentMethodDescriptors,
97
99
  buildPaypalBasicAuth: () => buildPaypalBasicAuth,
98
100
  buildPayuBasicAuth: () => buildPayuBasicAuth,
99
101
  buildRazorpayBasicAuth: () => buildRazorpayBasicAuth,
@@ -114,6 +116,7 @@ __export(index_exports, {
114
116
  getPaymentMethodCategory: () => getPaymentMethodCategory,
115
117
  getXenditAuthHeader: () => getXenditAuthHeader,
116
118
  hmacSha256: () => hmacSha256,
119
+ mapCategoryToDescriptorType: () => mapCategoryToDescriptorType,
117
120
  md5: () => md5,
118
121
  minifyJson: () => minifyJson,
119
122
  normalizeIpaymuCallback: () => normalizeIpaymuCallback,
@@ -9849,6 +9852,80 @@ var PaymentManager = class {
9849
9852
  };
9850
9853
  var paymentManager = new PaymentManager();
9851
9854
 
9855
+ // src/core/descriptor.ts
9856
+ function mapCategoryToDescriptorType(category, paymentMethod) {
9857
+ const cat = (category || "").toLowerCase();
9858
+ const method = (paymentMethod || "").toLowerCase();
9859
+ const isVa = cat === "virtual account" || method.includes("_va");
9860
+ const isQr = cat === "qris" || method === "qris";
9861
+ const isEwallet = cat === "e-wallet" || cat === "ewallet" || method === "ewallet";
9862
+ const isRetail = cat === "retail / gerai" || cat === "cstore" || method === "cstore";
9863
+ const isCard = cat === "kartu kredit" || cat === "cc";
9864
+ const isPaylater = cat === "paylater / cicilan" || cat === "paylater" || method === "paylater";
9865
+ if (isQr) return "qris";
9866
+ if (isVa) return "va";
9867
+ if (isEwallet) return "ewallet";
9868
+ if (isRetail) return "retail";
9869
+ if (isCard) return "card";
9870
+ if (isPaylater) return "paylater";
9871
+ return "other";
9872
+ }
9873
+ function iconForType(type) {
9874
+ switch (type) {
9875
+ case "qris":
9876
+ case "ewallet":
9877
+ return "\u{1F4F1}";
9878
+ case "va":
9879
+ return "\u{1F3E6}";
9880
+ case "retail":
9881
+ return "\u{1F3EA}";
9882
+ case "card":
9883
+ case "paylater":
9884
+ default:
9885
+ return "\u{1F4B3}";
9886
+ }
9887
+ }
9888
+ function badgeForType(type) {
9889
+ switch (type) {
9890
+ case "qris":
9891
+ return "Instan Bebas Biaya";
9892
+ case "va":
9893
+ return "Otomatis 24 Jam";
9894
+ case "ewallet":
9895
+ return "E-Wallet Instan";
9896
+ case "retail":
9897
+ return "Gerai Retail";
9898
+ case "card":
9899
+ return "Visa / Mastercard";
9900
+ case "paylater":
9901
+ return "Cicilan PayLater";
9902
+ default:
9903
+ return "Tersedia Otomatis";
9904
+ }
9905
+ }
9906
+ function buildPaymentMethodDescriptor(pm, _providerName) {
9907
+ const category = pm.category || "";
9908
+ const code = (pm.code || pm.paymentMethod || "").toUpperCase();
9909
+ const type = mapCategoryToDescriptorType(category, pm.paymentMethod);
9910
+ const icon = iconForType(type);
9911
+ let badge = badgeForType(type);
9912
+ const feeDisplay = pm.totalFee && pm.totalFee !== "-" ? pm.totalFee : "";
9913
+ return {
9914
+ id: code,
9915
+ name: pm.paymentName,
9916
+ type,
9917
+ icon,
9918
+ badge: feeDisplay ? `${badge} \u2022 Fee ${feeDisplay}` : badge,
9919
+ image: pm.paymentImage || void 0,
9920
+ category,
9921
+ coming_soon: false,
9922
+ totalFee: feeDisplay || void 0
9923
+ };
9924
+ }
9925
+ function buildPaymentMethodDescriptors(methods, providerName) {
9926
+ return methods.map((pm) => buildPaymentMethodDescriptor(pm, providerName));
9927
+ }
9928
+
9852
9929
  // src/core/providerRegistry.ts
9853
9930
  var ProviderRegistry = class {
9854
9931
  descriptors = /* @__PURE__ */ new Map();
@@ -10310,6 +10387,33 @@ var Buayar = class {
10310
10387
  const providerName = configOverride?.provider || this.provider;
10311
10388
  return this.manager.getPaymentMethods(providerName, params || { amount: 1e4 }, mergedConfig);
10312
10389
  }
10390
+ /**
10391
+ * Ambil daftar channel pembayaran aktif dalam bentuk deskriptor kanonikal
10392
+ * siap-render (id, name, type, icon, badge, image, category, totalFee).
10393
+ * Wrapper di atas {@link Buayar.getPaymentMethods} + `buildPaymentMethodDescriptors`,
10394
+ * sehingga konsumen UI/snapshot tidak perlu melakukan mapping ulang per provider.
10395
+ */
10396
+ async getPaymentMethodDescriptors(params, configOverride) {
10397
+ const mergedConfig = { ...this.config, ...configOverride };
10398
+ const providerName = configOverride?.provider || this.provider;
10399
+ const generatedAt = (/* @__PURE__ */ new Date()).toISOString();
10400
+ const res = await this.manager.getPaymentMethods(providerName, params || { amount: 1e4 }, mergedConfig);
10401
+ if (!res.success) {
10402
+ return {
10403
+ success: false,
10404
+ provider: providerName,
10405
+ descriptors: [],
10406
+ error: res.error || "Failed to fetch payment methods",
10407
+ generatedAt
10408
+ };
10409
+ }
10410
+ return {
10411
+ success: true,
10412
+ provider: providerName,
10413
+ descriptors: buildPaymentMethodDescriptors(res.methods, providerName),
10414
+ generatedAt
10415
+ };
10416
+ }
10313
10417
  /**
10314
10418
  * Cek status transaksi pembayaran berdasarkan Order ID
10315
10419
  */
@@ -10529,6 +10633,8 @@ var buayar = new Buayar();
10529
10633
  buildCoreChargePayload,
10530
10634
  buildDefaultDescriptors,
10531
10635
  buildIpaymuCallbackString,
10636
+ buildPaymentMethodDescriptor,
10637
+ buildPaymentMethodDescriptors,
10532
10638
  buildPaypalBasicAuth,
10533
10639
  buildPayuBasicAuth,
10534
10640
  buildRazorpayBasicAuth,
@@ -10549,6 +10655,7 @@ var buayar = new Buayar();
10549
10655
  getPaymentMethodCategory,
10550
10656
  getXenditAuthHeader,
10551
10657
  hmacSha256,
10658
+ mapCategoryToDescriptorType,
10552
10659
  md5,
10553
10660
  minifyJson,
10554
10661
  normalizeIpaymuCallback,
package/dist/index.mjs CHANGED
@@ -9682,6 +9682,80 @@ var PaymentManager = class {
9682
9682
  };
9683
9683
  var paymentManager = new PaymentManager();
9684
9684
 
9685
+ // src/core/descriptor.ts
9686
+ function mapCategoryToDescriptorType(category, paymentMethod) {
9687
+ const cat = (category || "").toLowerCase();
9688
+ const method = (paymentMethod || "").toLowerCase();
9689
+ const isVa = cat === "virtual account" || method.includes("_va");
9690
+ const isQr = cat === "qris" || method === "qris";
9691
+ const isEwallet = cat === "e-wallet" || cat === "ewallet" || method === "ewallet";
9692
+ const isRetail = cat === "retail / gerai" || cat === "cstore" || method === "cstore";
9693
+ const isCard = cat === "kartu kredit" || cat === "cc";
9694
+ const isPaylater = cat === "paylater / cicilan" || cat === "paylater" || method === "paylater";
9695
+ if (isQr) return "qris";
9696
+ if (isVa) return "va";
9697
+ if (isEwallet) return "ewallet";
9698
+ if (isRetail) return "retail";
9699
+ if (isCard) return "card";
9700
+ if (isPaylater) return "paylater";
9701
+ return "other";
9702
+ }
9703
+ function iconForType(type) {
9704
+ switch (type) {
9705
+ case "qris":
9706
+ case "ewallet":
9707
+ return "\u{1F4F1}";
9708
+ case "va":
9709
+ return "\u{1F3E6}";
9710
+ case "retail":
9711
+ return "\u{1F3EA}";
9712
+ case "card":
9713
+ case "paylater":
9714
+ default:
9715
+ return "\u{1F4B3}";
9716
+ }
9717
+ }
9718
+ function badgeForType(type) {
9719
+ switch (type) {
9720
+ case "qris":
9721
+ return "Instan Bebas Biaya";
9722
+ case "va":
9723
+ return "Otomatis 24 Jam";
9724
+ case "ewallet":
9725
+ return "E-Wallet Instan";
9726
+ case "retail":
9727
+ return "Gerai Retail";
9728
+ case "card":
9729
+ return "Visa / Mastercard";
9730
+ case "paylater":
9731
+ return "Cicilan PayLater";
9732
+ default:
9733
+ return "Tersedia Otomatis";
9734
+ }
9735
+ }
9736
+ function buildPaymentMethodDescriptor(pm, _providerName) {
9737
+ const category = pm.category || "";
9738
+ const code = (pm.code || pm.paymentMethod || "").toUpperCase();
9739
+ const type = mapCategoryToDescriptorType(category, pm.paymentMethod);
9740
+ const icon = iconForType(type);
9741
+ let badge = badgeForType(type);
9742
+ const feeDisplay = pm.totalFee && pm.totalFee !== "-" ? pm.totalFee : "";
9743
+ return {
9744
+ id: code,
9745
+ name: pm.paymentName,
9746
+ type,
9747
+ icon,
9748
+ badge: feeDisplay ? `${badge} \u2022 Fee ${feeDisplay}` : badge,
9749
+ image: pm.paymentImage || void 0,
9750
+ category,
9751
+ coming_soon: false,
9752
+ totalFee: feeDisplay || void 0
9753
+ };
9754
+ }
9755
+ function buildPaymentMethodDescriptors(methods, providerName) {
9756
+ return methods.map((pm) => buildPaymentMethodDescriptor(pm, providerName));
9757
+ }
9758
+
9685
9759
  // src/core/providerRegistry.ts
9686
9760
  var ProviderRegistry = class {
9687
9761
  descriptors = /* @__PURE__ */ new Map();
@@ -10143,6 +10217,33 @@ var Buayar = class {
10143
10217
  const providerName = configOverride?.provider || this.provider;
10144
10218
  return this.manager.getPaymentMethods(providerName, params || { amount: 1e4 }, mergedConfig);
10145
10219
  }
10220
+ /**
10221
+ * Ambil daftar channel pembayaran aktif dalam bentuk deskriptor kanonikal
10222
+ * siap-render (id, name, type, icon, badge, image, category, totalFee).
10223
+ * Wrapper di atas {@link Buayar.getPaymentMethods} + `buildPaymentMethodDescriptors`,
10224
+ * sehingga konsumen UI/snapshot tidak perlu melakukan mapping ulang per provider.
10225
+ */
10226
+ async getPaymentMethodDescriptors(params, configOverride) {
10227
+ const mergedConfig = { ...this.config, ...configOverride };
10228
+ const providerName = configOverride?.provider || this.provider;
10229
+ const generatedAt = (/* @__PURE__ */ new Date()).toISOString();
10230
+ const res = await this.manager.getPaymentMethods(providerName, params || { amount: 1e4 }, mergedConfig);
10231
+ if (!res.success) {
10232
+ return {
10233
+ success: false,
10234
+ provider: providerName,
10235
+ descriptors: [],
10236
+ error: res.error || "Failed to fetch payment methods",
10237
+ generatedAt
10238
+ };
10239
+ }
10240
+ return {
10241
+ success: true,
10242
+ provider: providerName,
10243
+ descriptors: buildPaymentMethodDescriptors(res.methods, providerName),
10244
+ generatedAt
10245
+ };
10246
+ }
10146
10247
  /**
10147
10248
  * Cek status transaksi pembayaran berdasarkan Order ID
10148
10249
  */
@@ -10361,6 +10462,8 @@ export {
10361
10462
  buildCoreChargePayload,
10362
10463
  buildDefaultDescriptors,
10363
10464
  buildIpaymuCallbackString,
10465
+ buildPaymentMethodDescriptor,
10466
+ buildPaymentMethodDescriptors,
10364
10467
  buildPaypalBasicAuth,
10365
10468
  buildPayuBasicAuth,
10366
10469
  buildRazorpayBasicAuth,
@@ -10381,6 +10484,7 @@ export {
10381
10484
  getPaymentMethodCategory,
10382
10485
  getXenditAuthHeader,
10383
10486
  hmacSha256,
10487
+ mapCategoryToDescriptorType,
10384
10488
  md5,
10385
10489
  minifyJson,
10386
10490
  normalizeIpaymuCallback,
package/docs/ipaymu.md CHANGED
@@ -85,6 +85,38 @@ if (result.success) {
85
85
  > atau `HealthStatus` selain `"online"` (mis. `offline`, `maintenance`) **otomatis dibuang** dari daftar.
86
86
  > Jadi metode yang muncul selalu berasal dari data real-time iPaymu, bukan asumsi.
87
87
 
88
+ ### 3a. Deskriptor Kanonikal Siap-Render (`getPaymentMethodDescriptors`)
89
+
90
+ Untuk konsumen UI/snapshot yang butuh bentuk seragam tanpa mapping manual per provider, gunakan `getPaymentMethodDescriptors()`:
91
+
92
+ ```typescript
93
+ const snap = await buayar.getPaymentMethodDescriptors({ amount: 100000 });
94
+
95
+ if (snap.success) {
96
+ console.log("Provider:", snap.provider);
97
+ console.log("Dibuat pada:", snap.generatedAt);
98
+ console.log("Total:", snap.descriptors.length);
99
+
100
+ // Contoh: siap disimpan sebagai JSON flipbook oleh frontend
101
+ console.log(snap.descriptors[0]);
102
+ /*
103
+ {
104
+ id: "BCA_VA",
105
+ name: "Virtual Account BCA",
106
+ type: "va",
107
+ icon: "🏦",
108
+ badge: "Otomatis 24 Jam • Fee 0.7%",
109
+ image: "https://my.ipaymu.com/images/banks/bca.png",
110
+ category: "Virtual Account",
111
+ coming_soon: false,
112
+ totalFee: "0.7%"
113
+ }
114
+ */
115
+ }
116
+ ```
117
+
118
+ `type` adalah salah satu dari `qris | va | ewallet | retail | card | paylater | other`, siap dipakai untuk ikon/badge. Mapping kategori → tipe dilakukan sentral di `buildPaymentMethodDescriptors()` (ekspor dari `core/descriptor`), jadi semua konsumen mendapat hasil identik.
119
+
88
120
  ---
89
121
 
90
122
  ## 4. Pembuatan Tagihan (Invoice)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crediblemark/buayar",
3
- "version": "0.8.4",
3
+ "version": "0.8.5",
4
4
  "description": "Unified Payment Gateway SDK for Node.js & TypeScript — 19 providers (Midtrans, Xendit, Duitku, Stripe, PayPal, Adyen, Razorpay, Square, Checkout.com, PayU, Braintree, 2Checkout, DOKU, iPaymu, PrismaLink, Faspay, Finpay, Nicepay, OY!) with zero-code switching via .env",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",