Langkah Awal
Selamat datang di laman dokumentasi Duitku OVO Payment API. Integrasikan API ini digunakan untuk membuat pembayaran menggunakan OVO dari halaman merchant tanpa redirect ke Duitku Payment Page.
Proses ini akan mengirimkan notifikasi push payment kepada pelanggan yang telah melakukan registrasi pada applikasi OVO. Jika data yang dikirimkan sesuai maka pelanggan dapat menyetujui pembayaran langsung pada applikasi OVO mereka.
Create Transaction
Langkah pertama pada proses ini diawali dengan melakukan Create Transaksi ke sistem Duitku. Anda dapat membuat transaksi dengan mengirimkan request menggunakan API ini.
Request HTTP Transaksi
Method : HTTP POST
Type : application/json
Development : https://sandbox.duitku.com/webapi/api/merchant/ovo/createtransaction
Production : https://passport.duitku.com/webapi/api/merchant/ovo/createtransaction
Parameters Request Create Transaction
<?php
$merchantCode = 'DXXXXX'; // dari duitku
$apiKey = 'XXXXXXXXXX7968XXXXXXXXXFB05332AF'; // dari duitku
$paymentAmount = 40000;
$merchantOrderId = time() . ''; // dari merchant duitku unik
$productDetails = 'Tes pembayaran OVO H2H';
$additionalParam = ''; // opsional
$merchantUserInfo = ''; // opsional
$email = '[email protected]'; // email pelanggan anda
$phoneNumber = '08123456789'; // nomor telepon pelanggan anda
$signature = md5($merchantCode . $merchantOrderId . $paymentAmount . $apiKey);
$item1 = array(
'name' => 'Test Item 1',
'price' => 20000,
'quantity' => 1);
$item2 = array(
'name' => 'Test Item 2',
'price' => 20000,
'quantity' => 2);
$itemDetails = array(
$item1, $item2
);
$params = array(
'merchantCode' => $merchantCode,
'paymentAmount' => $paymentAmount,
'merchantOrderId' => $merchantOrderId,
'productDetails' => $productDetails,
'additionalParam' => $additionalParam,
'merchantUserInfo' => $merchantUserInfo,
'email' => $email,
'phoneNumber' => $phoneNumber,
'itemDetails' => $itemDetails,
'signature' => $signature
);
$params_string = json_encode($params);
//echo $params_string;
$url = 'https://sandbox.duitku.com/webapi/api/merchant/ovo/createtransaction'; // Sandbox
// $url = 'https://passport.duitku.com/webapi/api/merchant/ovo/createtransaction'; // Production
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $params_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($params_string))
);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
//execute post
$request = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 200)
{
$result = json_decode($request, true);
echo "merchantCode :". $result['merchantCode'] . "<br />";
echo "amount :". $result['amount'] . "<br />";
echo "merchantOrderId:". $result['merchantOrderId'] . "<br />";
echo "productDetail :". $result['productDetail'] . "<br />";
echo "additionalParam:". $result['additionalParam'] . "<br />";
echo "paymentCode :". $result['paymentCode'] . "<br />";
echo "resultCode :". $result['resultCode'] . "<br />";
echo "reference :". $result['reference'] . "<br />";
echo "signature :". $result['signature'] . "<br />";
}
else
{
$request = json_decode($request);
$error_message = "Server Error " . $httpCode ." ". $request->Message;
echo $error_message;
}
?>
{
"merchantCode":"DXXXXX",
"paymentAmount":40000,
"merchantOrderId":"1579838431",
"productDetails":"Tes pembayaran OVO H2H",
"additionalParam":"",
"merchantUserInfo":"",
"email":"[email protected]",
"itemDetails":[
{
"name":"Test Item 1",
"price":10000,
"quantity":1
},
{
"name":"Test Item 2",
"price":30000,
"quantity":3
}
],
"phoneNumber":"08123456789",
"signature":"506XXXf1XXXdfb4aXXX1ffXXX9b8d1e6"
}
Parameter | Tipe | Wajib | Deskripsi | Contoh |
---|---|---|---|---|
merchantCode | string(50) | ✓ |
Kode merchant, didapatkan dari laman Merchant Duitku. | DXXXX |
paymentAmount | integer | ✓ |
Jumlah nominal transaksi tanpa desimal kode dan desimal digit. | 40000 |
merchantOrderId | string(50) | ✓ |
Nomor transaksi dari merchant. | 1579838431 |
productDetails | string(255) | ✓ |
Keterangan produk/jasa yang diperjual belikan. | Tes pembayaran OVO H2H |
string(255) | ✓ |
Alamat email pelanggan anda. | [email protected] | |
additionalParam | string(255) | ✗ |
Parameter tambahan (opsional). | |
merchantUserInfo | string(255) | ✗ |
Username atau email pelanggan di situs merchant (opsional). | [email protected] |
phoneNumber | string(50) | ✓ |
Nomor telepon pelanggan. | 08123456789 |
itemDetails | ItemDetail | ✗ |
Detail barang (opsional). | |
signature | string(255) | ✓ |
Kode identifikasi transaksi. Formula: MD5(merchantcode + merchantOrderId + paymentAmount + merchantKey). |
506XXXf1XXXdfb4aXXX1ffXXX9b8d1e6 |
Parameters Response Create Transaction
{
"merchantCode": "DXXXX",
"amount": 40000,
"merchantOrderId": "1579838431",
"productDetail": "Tes pembayaran OVO H2H",
"additionalParam": "",
"paymentCode":"OV",
"resultCode": "00",
"reference": "DXXXXCX80TXXX5Q70QCI",
"signature": "506XXXf1XXXdfb4aXXX1ffXXX9b8d1e6"
}
Parameter | Tipe | Deskripsi | Contoh |
---|---|---|---|
merchantCode | string | Kode merchant, didapatkan dari laman Merchant Duitku. | DXXXX |
amount | integer | Nominal pembayaran. | 40000 |
merchantOrderId | string | Nomor transaksi dari merchant. | 1579838431 |
productDetail | string | Keterangan detail produk. | Tes pembayaran OVO H2H |
additionalParam | string | Parameter tambahan. | |
paymentCode | string | Metode pembayaran. | OV |
resultCode | string | Hasil status transaksi dari duitku. | 00 - Success |
reference | string | Reference yaitu referensi transaksi dari Duitku. | DXXXXCX80TXXX5Q70QCI |
signature | string | Kode identifikasi transaksi. Formula: MD5(merchantcode + amount + merchantOrderId + merchantKey). |
506XXXf1XXXdfb4aXXX1ffXXX9b8d1e6 |
JSON Object
Daftar objek JSON yang dimiliki Duitku.
Item Details
"itemDetails": [{
"price": 40000,
"quantity": 2,
"name": "Item 1",
}]
Parameter | Tipe | Wajib | Deskripsi | Contoh |
---|---|---|---|---|
name | string(50) | ✓ |
Nama barang yang dibeli. | Item 1 |
quantity | integer | ✓ |
Jumlah barang dibeli. | 2 |
price | integer | ✓ |
Harga barang. Catatan: Jangan tambahkan desimal. | 40000 |
Status Code
Kode respons | Deskripsi |
---|---|
00 |
Disetujui/ Sukses. |
01 |
Gagal. |
08 |
Kode voucher telah digunakan. |
11 |
Tipe akun tidak valid. |
13 |
Nominal tidak valid. |
14 |
Nomor handphone / Id OVO tidak valid. |
16 |
Nomor kartu tidak valid. |
17 |
Transaksi tidak disetujui. |
18 |
Kode voucher tidak valid. |
26 |
Transaksi gagal (Gagal konfirmasi pembayaran ke aplikasi OVO). |
30 |
Kesalahan format (Spesifikasi ISO tidak valid). |
40 |
Transaksi gagal (kesalahan pada pihak ketiga, termasuk kesalahan dalam memotong atau pengisian saldo e-money). |
44 |
Kode refund tidak berlaku (melebihi batas waktu untuk refund). |
51 |
Saldo tidak mencukup. |
56 |
Kartu terblokir. |
57 |
Transaksi gagal (tidak memenuhi syarat untuk melakukan refund, saldo siloam = 0). |
58 |
Transaksi tidak diijinkan (tidak berlaku transaksi di merchant / terminal). |
61 |
Transaksi melebihi batas limit (di set oleh user). |
63 |
Pelanggaran keamanan. |
64 |
Akun terblokir. |
65 |
Transaksi gagal (Jumlah transaksi atau nominal transaksi melebihi batas). |
66 |
Kode tidak valid (kesalahan input kode penarikan). |
67 |
Dibawah limit transaksi (nominal transaksi kurang dari minimum nominal pembayaran). |
ER |
Kegagalan sistem di sistem OVO. |
EB |
Terminal terblokir (Merchant / Terminal tidak terdaftar). |
404 |
Tidak ditemukan (masa berlaku pembayaran habis / pelanggan menolak transaksi). |
Changelog
Version 1.0
Apr 2020
- Dokumentasi API dibuat