Koleksi Open API

URL Utama: https://staging-api.xepeng.com staging

Koleksi ini memperlihatkan endpoint Xepeng Open API untuk mengelola pesanan (orders) dan tautan pembayaran (payment links). Gunakan pengalih lingkungan di sidebar untuk beralih antara Staging dan Production.

Otentikasi

Semua endpoint dilindungi dan mengharapkan salah satu mekanisme otentikasi berikut:

Token Bearer menggunakan kunci API atau token akses:

Header yang Diperlukan

X-Signature HMAC-SHA256(client_secret, METHOD + PATH + TIMESTAMP + BODY)
X-Client-ID client_id from dashboard
X-Timestamp DateNow()

Tetapkan nilai-nilai ini di:

  • Variabel lingkungan Staging, atau
  • Postman Vault Anda untuk rahasia sensitif.

Memulai

1. Impor dan buka koleksi

  • Buka Ruang Kerja Tim (Team Workspace).
  • Cari koleksi bernama "OPEN API".
  • Buka koleksi untuk melihat folder:
    • Order
    • Payment Link

2. Pilih lingkungan Staging

  • Di pojok kanan atas Postman, buka dropdown lingkungan.
  • Pilih lingkungan bernama "Staging".
  • Pastikan variabel berikut ada di lingkungan Staging:
    • xepengUrl – base URL for the Xepeng API (e.g. https://staging-api.xepeng.com)
    • client_id – your client identifier
    • client_secret – your client secret
    • (optional) api_key – if you use Bearer token authentication

3. Konfigurasi rahasia (Vault vs Environment)

Untuk produksi atau kredensial nyata:

  • Lebih disarankan menggunakan Postman Vault untuk menyimpan client_id, client_secret, dan api_key.
  • Referensikan di lingkungan sebagai variabel.

Untuk pengujian lokal cepat di Staging:

  • Anda dapat mengatur client_id, client_secret, dan api_key langsung di lingkungan Staging.

4. Menjalankan koleksi

Anda dapat:

  • Menjalankan permintaan individu dari folder Order atau Payment Link.
  • Menggunakan Collection Runner atau Monitor untuk menjalankan beberapa permintaan.

Siklus Transaksi

Berikut adalah gambaran umum proses integrasi untuk menerbitkan tautan transaksi langsung dari sistem Anda hingga pengguna diarahkan ke halaman pembayaran:

Transaction Lifecycle Flow

1. Create Order (Buat Order)

Langkah awal dimulai dengan menginisiasi order baru melalui endpoint API. Pada tahap ini, sistem akan mencatat rincian item belanjaan dan memberikan status awal berupa 'pending'.

2. Activate Order (Aktivasi Order)

Sebelum tautan pembayaran dapat diterbitkan, Anda perlu memperbarui status order tersebut menjadi 'active'. Langkah konfirmasi ini memastikan tidak ada lagi perubahan pada item dan order siap untuk diproses ke tahap penagihan.

3. Generate Payment Link (Buat Link Pembayaran)

Setelah status order dipastikan aktif, sistem kami akan membuatkan tautan pembayaran (payment_url) unik yang mengikat langsung ke ID order tersebut. Anda juga bisa menentukan waktu kedaluwarsa tautan pada tahap ini.

4. Redirect to Payment Page (Pengalihan Halaman)

Terakhir, backend Anda cukup mengalihkan (redirect) browser pengguna menggunakan tautan pembayaran yang didapat dari langkah sebelumnya. Pengguna akan langsung masuk ke halaman secure checkout untuk menyelesaikan pembayaran.

SDK & Helper

Untuk mempermudah integrasi, kami menyediakan package resmi untuk Node.js dan PHP. Package ini sudah membungkus proses otentikasi dan pemanggilan ke semua endpoint yang tersedia sehingga Anda tinggal menggunakannya langsung di dalam aplikasi.

Node.js (NPM)

Library Node.js resmi untuk integrasi dengan Xepeng API.

npm install xepeng-oauth-js
View on NPM

PHP (Composer)

Library PHP resmi untuk integrasi dengan Xepeng API.

composer require xepeng/oauth-php
View on Packagist

Referensi Permintaan

Di bawah ini adalah deskripsi tingkat tinggi dari setiap permintaan. Setiap permintaan individu dalam koleksi juga berisi deskripsi rinci dan contoh payload.

Pesanan (Order)

POST https://staging-api.xepeng.com/openapi/orders

Buat

Buat pesanan baru dengan jumlah, mata uang, informasi pelanggan, dan metadata. Memerlukan otentikasi via Token Bearer atau kredensial klien.

PUT https://staging-api.xepeng.com/openapi/orders/:order_uid

Perbarui

Perbarui pesanan yang ada berdasarkan UID-nya (parameter jalur).

GET https://staging-api.xepeng.com/openapi/orders/:order_uid

Ambil berdasarkan UID

Ambil satu pesanan berdasarkan UID-nya.

GET https://staging-api.xepeng.com/openapi/orders

Ambil Daftar

Daftar pesanan dengan dukungan paginasi melalui parameter query page dan limit.

Tautan Pembayaran (Payment Link)

POST https://staging-api.xepeng.com/openapi/payment-links/generate

Buat Tautan

Buat tautan pembayaran baru untuk jumlah dan referensi pesanan tertentu.

GET https://staging-api.xepeng.com/openapi/payment-links

Ambil Daftar

Daftar tautan pembayaran dengan paginasi.

GET https://staging-api.xepeng.com/openapi/payment-links/:payment_link_uid

Get

Ambil satu tautan pembayaran berdasarkan UID-nya.

PUT https://staging-api.xepeng.com/openapi/payment-links/:payment_link_uid/inactivate

Nonaktifkan

Nonaktifkan tautan pembayaran yang ada sehingga tidak dapat digunakan lagi.

Contoh permintaan representatif

Contoh: Buat Pesanan

POST https://staging-api.xepeng.com/openapi/orders

cURL

curl --request POST "https://staging-api.xepeng.com/openapi/orders" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer {{api_key}}" \
  --data-raw '{
    "amount": 100000,
    "currency": "IDR",
    "description": "Order for product X",
    "customer": {
      "name": "John Doe",
      "email": "john.doe@example.com",
      "phone": "+6281234567890"
    },
    "metadata": {
      "order_ref": "ORDER-12345"
    }
  }'

JavaScript (fetch)

const url = `${displayBaseUrl}/openapi/orders`; // Substitute your actual base URL or use an environment variable in Postman
const payload = {
  amount: 100000,
  currency: "IDR",
  description: "Order for product X",
  customer: {
    name: "John Doe",
    email: "john.doe@example.com",
    phone: "+6281234567890"
  },
  metadata: {
    order_ref: "ORDER-12345"
  }
};
fetch(url, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Bearer ${process.env.XEPENG_API_KEY}` // or your stored secret
  },
  body: JSON.stringify(payload)
})
  .then(async (response) => {
    const data = await response.json();
    console.log("Status:", response.status);
    console.log("Response:", data);
  })
  .catch((error) => {
    console.error("Error calling Create Order API:", error);
  });

© 2026 Xepeng. Hak cipta dilindungi undang-undang. PT Kedaimu Lumbung Nusantara