AriesPay Developer REST API v1 & SDK

Dokumentasi Integrasi AriesPay

Panduan resmi integrasi pembayaran QRIS untuk merchant AriesPay. Dilengkapi spesifikasi endpoint, verifikasi webhook signature, dan Node.js SDK.

Base Endpoint API
https://ariespay.id/api/v1

Gunakan HTTPS untuk seluruh panggilan server-to-server.

Autentikasi Server

Header x-merchant-id & x-secret-key atau parameter signature MD5.

QRISResmi Bank Indonesia

Mendukung channel pembayaran QRIS Realtime Nasional (BCA, BRI, Mandiri, BNI, GoPay, OVO, DANA, ShopeePay).

1. AriesPay Node.js SDK

Pustaka klien resmi AriesPay untuk aplikasi backend berbasis server-side JavaScript / Node.js.

// 1. Inisialisasi AriesPay SDK
const AriesPay = require('@ariespay/sdk');
const client = new AriesPay('AP_MERCHANT_ID', 'sk_live_SECRET_KEY');

// 2. Buat Transaksi QRIS
async function main() {
  const invoice = await client.createOrder({
    reff_id: 'ORDER-' + Date.now(),
    amount: 50000,
    customer_name: 'Budi Santoso',
    customer_email: 'budi@example.com',
    kode_channel: 'QRIS'
  });

  console.log('ID Transaksi AriesPay:', invoice.data.trx_id);
  console.log('Raw String QRIS:', invoice.data.qr_string);
  console.log('URL Checkout:', invoice.data.pay_url);
}

main();

2. Daftar Endpoint REST API v1

POST/api/v1/order

Membuat tagihan transaksi pembayaran baru dengan kode QRIS instan.

Parameter Request (JSON Body):
ParameterTipeWajibKeterangan
merchant_idStringYaID Merchant AriesPay Anda (e.g. AP_M24001...)
reff_idStringYaNomor invoice atau ID order unik dari sistem Anda
amountIntegerYaNominal pembayaran dalam rupiah (minimal Rp 1.000)
kode_channelStringTidakDefault: 'QRIS'
signatureStringYa*md5(merchant_id:secret_key:reff_id) jika tanpa header secret
GET/api/v1/check-order

Memeriksa status pembayaran transaksi berdasarkan trx_id atau ref_id.

GET/api/v1/merchant/balance

Mengambil saldo tersedia, saldo tertahan, dan akumulasi penerimaan pembayaran.

POST/api/v1/tarik-saldo

Mengajukan penarikan dana (Payout) ke rekening bank terdaftar. Minimal Rp 25.000 dengan biaya transfer Rp 2.500 flat.

3. Notifikasi Webhook Callback

Saat pembayaran QRIS sukses, server AriesPay mengirimkan HTTP POST ke Webhook URL Anda. Server Anda wajib merespons dengan JSON: { "status": true }.

// Express.js Webhook Receiver Handler
const express = require('express');
const crypto = require('crypto');
const app = express();

app.use(express.json());

app.post('/webhook/ariespay', (req, res) => {
  const { status, reference, reff_id, signature, data } = req.body;
  const MY_MERCHANT_ID = 'AP_MERCHANT_ID';
  const MY_SECRET_KEY = 'sk_live_SECRET_KEY';

  // 1. Verifikasi Signature: md5(merchant_id:secret_key:reff_id)
  const expectedSig = crypto
    .createHash('md5')
    .update(MY_MERCHANT_ID + ':' + MY_SECRET_KEY + ':' + reff_id)
    .digest('hex');

  if (signature.toLowerCase() !== expectedSig.toLowerCase()) {
    console.error('Signature Webhook tidak valid!');
    return res.status(400).json({ status: false, message: 'Invalid Signature' });
  }

  // 2. Proses Pembayaran Sukses
  if (status === 'Success') {
    console.log('Order ' + reff_id + ' lunas! Nominal bersih: Rp ' + data.total_diterima);
    // TODO: Update status pesanan di database Anda menjadi Lunas / Paid
  }

  // 3. WAJIB Mengembalikan status true
  return res.status(200).json({ status: true });
});

app.listen(3000, () => console.log('Webhook server running on port 3000'));