NAV Navbar
json php

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
email 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