@crediblemark/buayar 0.6.2 → 0.7.0
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/README.md +35 -11
- package/dist/cli/index.js +21 -11
- package/dist/index.d.mts +127 -7
- package/dist/index.d.ts +127 -7
- package/dist/index.js +450 -213
- package/dist/index.mjs +445 -213
- package/docs/guide.md +92 -9
- package/package.json +1 -1
package/docs/guide.md
CHANGED
|
@@ -16,8 +16,10 @@ Panduan ini adalah **satu-satunya** panduan yang Anda butuhkan untuk mengintegra
|
|
|
16
16
|
6. [Webhook Universal](#-webhook-universal)
|
|
17
17
|
7. [Refund / Saldo / Payout Unified](#-refund--saldo--payout-unified)
|
|
18
18
|
8. [Zero-Code PG Switch](#-zero-code-pg-switch)
|
|
19
|
-
9. [
|
|
20
|
-
10. [
|
|
19
|
+
9. [Provider Dinamis & Autodetect](#-provider-dinamis--autodetect)
|
|
20
|
+
10. [Cek Capability Provider (Portabilitas)](#-cek-capability-provider-portabilitas)
|
|
21
|
+
11. [Fitur Khusus Provider (`<X>Client`)](#-fitur-khusus-provider-xclient)
|
|
22
|
+
12. [Kamus Variabel `.env` per Provider](#-kamus-variabel-env-per-provider)
|
|
21
23
|
|
|
22
24
|
---
|
|
23
25
|
|
|
@@ -44,15 +46,20 @@ Semua metode pembayaran memakai **kode canonical universal** (`bca_va`, `qris`,
|
|
|
44
46
|
|
|
45
47
|
### 1. Zero-Config (baca dari `.env`) — **Direkomendasikan**
|
|
46
48
|
|
|
49
|
+
Cukup isi **variabel universal** yang sama untuk semua provider. SDK otomatis memetakannya ke kredensial yang dibutuhkan provider aktif.
|
|
50
|
+
|
|
47
51
|
```env
|
|
48
|
-
#
|
|
52
|
+
# (opsional) Provider aktif: midtrans, duitku, ipaymu, xendit, doku, prismalink,
|
|
49
53
|
# faspay, finpay, nicepay, oy, stripe, paypal, adyen, checkoutcom,
|
|
50
54
|
# razorpay, square, payu, braintree, twocheckout
|
|
51
|
-
|
|
55
|
+
# Bila dikosongkan, provider AUTO-DIDETEKSI dari kredensial yang terisi.
|
|
56
|
+
BUAYAR_PROVIDER=midtrans
|
|
52
57
|
|
|
53
58
|
# Kredensial Universal (dipetakan otomatis per provider)
|
|
54
59
|
BUAYAR_API_KEY=your-server-key-atau-secret
|
|
55
60
|
BUAYAR_MERCHANT_CODE=merchant-id-atau-username
|
|
61
|
+
BUAYAR_CLIENT_KEY=client-atau-public-key # bila provider butuh
|
|
62
|
+
BUAYAR_MERCHANT_ID=merchant-id # bila berbeda dari code
|
|
56
63
|
BUAYAR_SANDBOX=true
|
|
57
64
|
|
|
58
65
|
# Callback & Return URL
|
|
@@ -65,6 +72,8 @@ import { buayar } from "@crediblemark/buayar";
|
|
|
65
72
|
// Konfigurasi ter-baca otomatis dari process.env. Selesai.
|
|
66
73
|
```
|
|
67
74
|
|
|
75
|
+
> **🪄 Autodetect:** Jika `BUAYAR_PROVIDER` dikosongkan, Buayar menebak provider aktif dari kredensial yang terisi di `.env` (mis. `STRIPE_SECRET_KEY` → Stripe, `DUITKU_API_KEY` → Duitku). Anda bahkan bisa **tidak menyebut nama provider sama sekali**.
|
|
76
|
+
|
|
68
77
|
### 2. Inisialisasi Manual (programatik)
|
|
69
78
|
|
|
70
79
|
```typescript
|
|
@@ -81,6 +90,23 @@ const buayar = new Buayar({
|
|
|
81
90
|
|
|
82
91
|
> 💡 Banyak `get<X>Client()` juga bisa dipakai dengan meneruskan `provider` di `configOverride` agar menargetkan provider tertentu dari satu instance `buayar`.
|
|
83
92
|
|
|
93
|
+
### Variable Environment: Universal vs Spesifik
|
|
94
|
+
|
|
95
|
+
Setiap provider punya kredensial yang **berbeda-beda** (`MIDTRANS_SERVER_KEY` vs `DUITKU_API_KEY` vs `FASPAY_PASSWORD`, dst.). Itu sebabnya Buayar menyediakan **variabel universal** yang sama untuk semua provider, jadi Anda tidak perlu menghafal perbedaan tiap PG:
|
|
96
|
+
|
|
97
|
+
| Variabel Universal | Dipakai sebagai |
|
|
98
|
+
| :--- | :--- |
|
|
99
|
+
| `BUAYAR_PROVIDER` | nama provider aktif (opsional → autodetect) |
|
|
100
|
+
| `BUAYAR_API_KEY` | secret / server key / password provider |
|
|
101
|
+
| `BUAYAR_MERCHANT_CODE` | merchant id / va / username / imid / client id |
|
|
102
|
+
| `BUAYAR_CLIENT_KEY` | client / public / publishable key |
|
|
103
|
+
| `BUAYAR_MERCHANT_ID` | merchant id (bila beda dari code) |
|
|
104
|
+
| `BUAYAR_SANDBOX` | mode sandbox (`true`/`false`) |
|
|
105
|
+
| `BUAYAR_CALLBACK_URL` / `BUAYAR_RETURN_URL` | URL webhook & redirect |
|
|
106
|
+
| `BUAYAR_WEBHOOK_SECRET` / `BUAYAR_WEBHOOK_TOKEN` | secret webhook |
|
|
107
|
+
|
|
108
|
+
> 🔧 Variabel spesifik per provider (`MIDTRANS_SERVER_KEY`, `DUITKU_API_KEY`, dll.) **tetap didukung** sebagai fallback. Prioritas konfigurasi: `config` eksplisit → `BUAYAR_*` → variabel spesifik → default.
|
|
109
|
+
|
|
84
110
|
---
|
|
85
111
|
|
|
86
112
|
## 🛠️ Membuat Transaksi
|
|
@@ -265,15 +291,72 @@ Beralih provider **tanpa mengubah satu baris pun** di controller/service Anda
|
|
|
265
291
|
|
|
266
292
|
```env
|
|
267
293
|
# Sebelum: Midtrans
|
|
268
|
-
|
|
269
|
-
|
|
294
|
+
BUAYAR_PROVIDER=midtrans
|
|
295
|
+
BUAYAR_API_KEY=SB-Mid-server-xxxx
|
|
270
296
|
|
|
271
297
|
# Sesudah: Stripe — kode aplikasi TIDAK berubah
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
298
|
+
BUAYAR_PROVIDER=stripe
|
|
299
|
+
BUAYAR_API_KEY=sk_test_51...
|
|
300
|
+
BUAYAR_WEBHOOK_SECRET=whsec_...
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Bahkan bisa **tanpa `BUAYAR_PROVIDER`** — cukup ganti kredensial, dan provider terdeteksi otomatis:
|
|
304
|
+
|
|
305
|
+
```env
|
|
306
|
+
# Auto: cukup isi key-nya, provider tertelan
|
|
307
|
+
BUAYAR_API_KEY=sk_test_51... # berubah ke Stripe
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 🌐 Provider Dinamis & Autodetect
|
|
313
|
+
|
|
314
|
+
Registry provider **dinamis**: Anda bisa menambah/mendaftarkan provider kustom tanpa mengedit core SDK, sekaligus memanfaatkan autodetect.
|
|
315
|
+
|
|
316
|
+
### 1. Autodetect dari `.env`
|
|
317
|
+
Tanpa menyebut `BUAYAR_PROVIDER`, SDK menebak provider dari kredensial yang terisi:
|
|
318
|
+
```typescript
|
|
319
|
+
const b = new Buayar();
|
|
320
|
+
b.detectProviderFromEnv(process.env); // "stripe" | "duitku" | ... | undefined
|
|
275
321
|
```
|
|
276
322
|
|
|
323
|
+
### 2. Autodetect dari payload webhook
|
|
324
|
+
```typescript
|
|
325
|
+
b.detectProviderFromPayload({
|
|
326
|
+
signature_key: "x", transaction_status: "settlement",
|
|
327
|
+
}); // "midtrans"
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### 3. Daftar provider terdaftar & registrasi kustom
|
|
331
|
+
```typescript
|
|
332
|
+
b.listProviders(); // ["midtrans","duitku",...]
|
|
333
|
+
b.registerProvider(new MyCustomProvider()); // untuk eksekusi
|
|
334
|
+
b.registerProviderDescriptor({
|
|
335
|
+
name: "mypg",
|
|
336
|
+
envKeys: ["MYPG_SECRET"], // untuk autodetect
|
|
337
|
+
methods: ["qris", "bca_va"], // untuk capability
|
|
338
|
+
operations: { refund: true, checkBalance: true, disburse: true },
|
|
339
|
+
});
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## 🔎 Cek Capability Provider (Portabilitas)
|
|
345
|
+
|
|
346
|
+
Jawab pertanyaan "provider ini dukung fitur & metode apa?" secara **runtime** — berguna untuk memutuskan migrasi atau menampilkan channel yang valid.
|
|
347
|
+
|
|
348
|
+
```typescript
|
|
349
|
+
b.getCapabilities("duitku");
|
|
350
|
+
// { methods: ["bca_va","qris",...], operations: { refund: false, checkBalance: true, disburse: true } }
|
|
351
|
+
|
|
352
|
+
b.supports("xendit", "checkBalance"); // true
|
|
353
|
+
b.supports("doku", "refund"); // false
|
|
354
|
+
b.supportsMethod("qris", "stripe"); // true
|
|
355
|
+
b.getSupportedMethods("midtrans"); // ["bca_va","bni_va",...]
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
> 💡 Ini berguna untuk skenario **migrasi anti-lock-in**: cek dulu apakah provider target punya metode/op yang Anda butuhkan sebelum pindah. Provider yang tidak mendukung suatu operasi tetap mengembalikan `{ supported: false }` (bukan error), bukan crash.
|
|
359
|
+
|
|
277
360
|
---
|
|
278
361
|
|
|
279
362
|
## 🏦 Fitur Khusus Provider (`<X>Client`)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crediblemark/buayar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
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",
|