Pengenalan
Selamat datang di dokumentasi API Muta Payment Gateway. API ini dirancang dengan gaya RESTful yang memudahkan aplikasi Anda (Toko Online, ERP, Sistem Kasir) untuk menerima pembayaran menggunakan transfer bank dan QRIS secara otomatis.
Base URL Production: https://api.muta.my.id/api/v1
Autentikasi
Setiap request ke API Muta harus menggunakan autentikasi berupa API Key. Anda dapat membuat API Key melalui dashboard Muta di menu Developer / API Settings.
Kirimkan API Key pada header HTTP Authorization dengan skema Bearer.
Authorization: Bearer m_live_xxxxxxxxxxxxxxxxxxxxxx
Buat Transaksi (Payment Link)
Endpoint ini digunakan untuk membuat tagihan baru. Muta akan mengembalikan URL halaman checkout yang dapat Anda tampilkan ke pelanggan untuk melakukan pembayaran.
Endpoint URL
POST /transactions
Request Parameters (JSON)
-
order_id Required
String (Max: 50). ID pesanan unik dari sistem Anda.
-
amount Required
Integer. Jumlah nominal tagihan (tanpa desimal).
-
customer_name Required
String. Nama lengkap pelanggan.
-
return_url Optional
String. URL untuk mengarahkan pelanggan kembali setelah pembayaran selesai.
Contoh Request
{
"order_id": "INV-20231001-001",
"amount": 150000,
"customer_name": "Budi Santoso",
"customer_email": "budi@example.com",
"return_url": "https://toko-anda.com/order/success"
}
Contoh Response (200 OK)
{
"success": true,
"message": "Transaction created successfully",
"data": {
"transaction_id": "MUTA-TRX-827364823",
"order_id": "INV-20231001-001",
"amount": 150000,
"checkout_url": "https://api.muta.my.id/payment/MUTA-TRX-827364823"
}
}
Cek Status Transaksi
Meskipun kami mengirimkan Webhook, Anda dapat menggunakan endpoint ini untuk mengecek status transaksi secara manual menggunakan `order_id` Anda.
Endpoint URL
GET /transactions/{order_id}
Path Variables
-
order_id
ID pesanan yang Anda kirimkan saat membuat transaksi.
Contoh Response
{
"success": true,
"data": {
"transaction_id": "MUTA-TRX-827364823",
"order_id": "INV-20231001-001",
"amount": 150000,
"status": "PAID",
"paid_at": "2023-10-01T14:30:00Z",
"payment_channel": "BCA_VIRTUAL_ACCOUNT"
}
}
Notifikasi Webhook (Callback)
Agar sistem Anda terupdate otomatis secara real-time (tanpa harus memanggil API terus menerus), Muta akan mengirimkan HTTP POST request ke URL Webhook Anda ketika ada perubahan status pembayaran (contoh: Pelanggan telah membayar tagihan).
Anda dapat mengatur URL Webhook ini di halaman Dashboard Muta pada menu API & Webhook. Muta mengekspektasikan response dengan HTTP Status 200 OK dari server Anda.
Contoh Payload dari Muta ke Server Anda:
{
"event": "payment.success",
"transaction_id": "MUTA-TRX-827364823",
"order_id": "INV-20231001-001",
"amount": 150000,
"status": "PAID",
"paid_at": "2023-10-01T14:30:00Z"
}
Validasi Keamanan Webhook (Signature)
Untuk memastikan bahwa webhook benar-benar dikirimkan oleh Muta (bukan dari pihak yang tidak bertanggung jawab), Anda diwajibkan memvalidasi signature.
Muta mengirimkan header X-Muta-Signature pada setiap permintaan Webhook. Signature ini dihasilkan menggunakan algoritma HMAC-SHA256.
Formula Signature
signature = HMAC_SHA256( payload_body_raw, Webhook_Secret_Key )
Contoh Validasi (PHP)
<?php
$secretKey = 'your_webhook_secret_key'; // Dari Dashboard Muta
$payload = file_get_contents('php://input');
$signatureHeader = $_SERVER['HTTP_X_MUTA_SIGNATURE'] ?? '';
// Generate hash
$calculatedSignature = hash_hmac('sha256', $payload, $secretKey);
if (hash_equals($calculatedSignature, $signatureHeader)) {
// Valid! Lakukan update status order di database Anda
$data = json_decode($payload, true);
if ($data['status'] === 'PAID') {
// Proses pesanan
}
http_response_code(200);
echo json_encode(['status' => 'OK']);
} else {
// Invalid Signature
http_response_code(403);
echo json_encode(['status' => 'Forbidden']);
}
?>