• Banjarbaru, Kalimantan Selatan
PhUP3yOujz96Uw6z3NPCtJDnbsC8vYXURTWJlZVD.png
1 year ago

Cara Gampang Integrasi Payment Gateway Ipaymu pada PHP

Halo semuanya, udah lama saya ga posting hehe karena ada kesibukan jadi ga sempat. Oke, sebelumnya apakah kalian tahu apa itu payment gateway, sederhananya payment gateway itu adalah  itu system transaksi online yang mengotorisasi proses pembayaran antara penjual dan pembeli, dimana pembeli melakukan transfer sejumlah uang ke payment gateway kemudian payment gateway memberi tahu secara otomatis kepada penjual bahwa pembeli sudah melakukan pelunasan. Jadi pada posting ini saya akan memberikan tutorial bagaimana integrasi payment gateway Ipaymu pada Bahasa PHP, tanpa Panjang lebar simak berikut ini tutorialnya.

Daftar Akun Ipaymu

Pertama kalian daftar dulu akun Ipaymu, disini kita daftar mode sandbox aja. Mode ini sebagai mode testing untuk developer, daftar akunnya dapat dilakukan disini https://sandbox.ipaymu.com/members/register

Ngoding

Yuk saatnya kita ngoding, berikut full source code integrasi Ipaymu, nanti dibawah akan saya jelaskan satu persatu detail codingnya ya.

<?php

// SAMPLE HIT API iPaymu v2 PHP //
$va           = 'yout_va'; // nomer virtual account akun
$secret       = 'yout_api_key'; // api key account iPaymu

$url          = 'https://sandbox.ipaymu.com/api/v2/payment'; // url mode sandbox
$method       = 'POST'; // method POST

//Request Body//
$body['product']    = array('fee', 'headset', 'softcase'); // nama produk yang dibeli
$body['qty']        = array('1', '1', '3'); // jumlah produk yang dibeli
$body['price']      = array('5000', '100000', '20000'); // harga produk yang dibeli
$body['returnUrl']  = 'https://kodee.my.id/thankyou'; // return url setelah pembayaran berhasil
$body['cancelUrl']  = 'https://kodee.my.id/cancel'; // return url setelah pembayaran dibatalkan
$body['notifyUrl']  = 'https://kodee.my.id/notify';  // url untuk notifikasi pembayaran
$body['buyerName']  = 'Muhammad Padhilah'; // nama pembeli
$body['buyerEmail'] = 'padhilahm@gmail.com'; // email pembeli
$body['buyerPhone'] = '081234567890'; // nomor telepon pembeli
$body['referenceId'] = rand(); // kode unik untuk transaksi
$body['expired']    = 2; // durasi pembayaran dalam satuan jam
//End Request Body//

//Generate Signature
// *Don't change this
$jsonBody     = json_encode($body, JSON_UNESCAPED_SLASHES);
$requestBody  = strtolower(hash('sha256', $jsonBody));
$stringToSign = strtoupper($method) . ':' . $va . ':' . $requestBody . ':' . $secret;
$signature    = hash_hmac('sha256', $stringToSign, $secret);
$timestamp    = Date('YmdHis');
//End Generate Signature

// melakukan request ke server iPaymu
$ch = curl_init($url);

// set header request
// *Don't change this
$headers = array(
    'Accept: application/json',
    'Content-Type: application/json',
    'va: ' . $va,
    'signature: ' . $signature,
    'timestamp: ' . $timestamp
);

// set option curl
// *Don't change this
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_POST, count($body));
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$err = curl_error($ch);
$ret = curl_exec($ch);
curl_close($ch);
// end request

if ($err) {
    // jika terjadi kesalahan
    echo "<pre>";
    print_r($err);
    echo "</pre>";
} else {
    // jika berhasil
    // Response
    $ret = json_decode($ret);
    if ($ret->Status == 200) {
        // jika status OK
        // ambil url pembayaran
        $url        =  $ret->Data->Url;
        // redirect ke url pembayaran
        header('Location:' . $url);
    } else {
        // jika status tidak OK
        echo "<pre>";
        print_r($ret);
        echo "</pre>";
    }
    //End Response
}

 

Sebelumnya kalian masuk dulu ke akun kalian, ke menu Integrasi https://sandbox.ipaymu.com/integration

Disitu terdapat nomer virtual account dan Api Key, kedua kode unik ini akan kita gunakan nanti dalam integrasinya.

 

$va           = 'yout_va'; // nomer virtual account akun
$secret       = 'yout_api_key'; // api key account iPaymu

$url          = 'https://sandbox.ipaymu.com/api/v2/payment'; // url mode sandbox
$method       = 'POST'; // method POST

Pada variabel $va masukkan nomer virtual akun kalian dan $secret masukkan Api key akun kalian. Pada $url karena disini kita menggunakan mode sandbox maka pakai url https://sandbox.ipaymu.com/api/v2/payment . Untuk $method menggunakan POST

 

//Request Body//
$body['product']    = array('fee', 'headset', 'softcase'); // nama produk yang dibeli
$body['qty']        = array('1', '1', '3'); // jumlah produk yang dibeli
$body['price']      = array('5000', '100000', '20000'); // harga produk yang dibeli
$body['returnUrl']  = 'https://kodee.my.id/thankyou'; // return url setelah pembayaran berhasil
$body['cancelUrl']  = 'https://kodee.my.id/cancel'; // return url setelah pembayaran dibatalkan
$body['notifyUrl']  = 'https://kodee.my.id/notify';  // url untuk notifikasi pembayaran
$body['buyerName']  = 'Muhammad Padhilah'; // nama pembeli
$body['buyerEmail'] = 'padhilahm@gmail.com'; // email pembeli
$body['buyerPhone'] = '081234567890'; // nomor telepon pembeli
$body['referenceId'] = rand(); // kode unik untuk transaksi
$body['expired']    = 2; // durasi pembayaran dalam satuan jam
//End Request Body//

Untuk request body, disini saya mengirim 11 variabel pada url sandbox.

$body['product'] : berfungsi untuk nama produk yang dibeli, isinya dalam bentuk array

$body['qty'] : berfungsi untuk jumlah produk yang dibeli, isinya dalam bentuk array. qty disini harus sama persis jumlah arraynya dengan product. Sebagai contoh pada product softcase untuk jumlah yang dibeli sama dengan 3

$body['price'] : berfungsi untuk harga produck yang dibeli, isinya dalam bentuk array. sama dengan qty, price juga harus sama jumlah arraynya dengan product. Contohnya pada softcase memiliki harga 20000

$body['returnUrl'] : berfungsi untuk return url setelah pembayaran berhasil

$body['cancelUrl'] : berfungsi untuk return url setelah pembayaran dibatalkan

$body['notifyUrl'] : berfungsi untuk return url untuk notifikasi pembayaran

$body['buyerName'] : berfungsi untuk mengirim data nama pembeli

$body['buyerEmail'] : berfungsi untuk mengirim data email pembeli

$body['buyerPhone'] : berfungsi untuk mengirim data no telpon pemebeli

$body['referenceId'] : berfungsi  sebagai kode unik untuk transaksi

$body['expired'] : berfungsi sebagai durasi pembayaran dalam satuan jam

 

//Generate Signature
// *Don't change this
$jsonBody     = json_encode($body, JSON_UNESCAPED_SLASHES);
$requestBody  = strtolower(hash('sha256', $jsonBody));
$stringToSign = strtoupper($method) . ':' . $va . ':' . $requestBody . ':' . $secret;
$signature    = hash_hmac('sha256', $stringToSign, $secret);
$timestamp    = Date('YmdHis');
//End Generate Signature

Untuk kode ini jangan ada diubah ya.. fungsinya untuk membuat signature ke ipaymu

 

// melakukan request ke server iPaymu
$ch = curl_init($url);

// set header request
// *Don't change this
$headers = array(
    'Accept: application/json',
    'Content-Type: application/json',
    'va: ' . $va,
    'signature: ' . $signature,
    'timestamp: ' . $timestamp
);

$ch fungsinya untuk melakukan request ke server ipaymu

$header adalah header yang akan dikirim ke ipaymu dan jangan ada diubah juga ya..

 

// set option curl
// *Don't change this
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_POST, count($body));
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonBody);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$err = curl_error($ch);
$ret = curl_exec($ch);
curl_close($ch);
// end request

Sama seperti code sebelumnya, code ini jangan diubah juga. Fungsi untuk set option dari curl pada server ipaymu

 

if ($err) {
    // jika terjadi kesalahan
    echo "<pre>";
    print_r($ret);
    echo "</pre>";
} else {
    // jika berhasil
    // Response
    $ret = json_decode($ret);
    if ($ret->Status == 200) {
        // jika status OK
        // ambil data dari response
        $sessionId  = $ret->Data->SessionID;
        // ambil url pembayaran
        $url        =  $ret->Data->Url;
        // redirect ke url pembayaran
        header('Location:' . $url);
    } else {
        // jika status tidak OK
        echo "<pre>";
        print_r($ret);
        echo "</pre>";
    }
    //End Response
}

$err adalah variable penampung apabila terjadi error dan $ret adalah variable penampung data berhasil di return

json_decode($ret) berfungsi mengubah data objek json menjadi data objek PHP

$ret->Status adalah status dari resposen yang diberikan server ipaymu

$ret->Data->Url adalah url pembayaran yang akan kita rederict.

 

Sekarang coba kalian jalankan, kalau berhasil maka akan tampil form pembayaran seperti gambar dibawah

 

 

Ok, baik mungkin sekian dulu ya.. toturial cara gampang integrasi pg ipaymu pada php

Sampai jumpa lagi pada postingan selanjutnya ya...  😀

Comments (4)

client

Bincar

1 year ago

Gimna cara bikin setelah melakukan pembayaran di databasenya otomatis berubah

Reply
client

Teknik Komputer

1 year ago

Apa saja langkah-langkah yang perlu diikuti untuk mengintegrasikan iPaymu Payment Gateway pada website PHP? <a href="https://journals.telkomuniversity.ac.id/">Tel U</a>

Reply
client

Admin

Penulis 1 year ago

Silahkan ikuti langkah-langkah posting saya Semoga membantu 🙏

client

Sepatu Nike

5 months ago

klo integrasi ke jagel gmn mas?

Reply

Leave a Reply