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 (5)
Bincar
2 years agoGimna cara bikin setelah melakukan pembayaran di databasenya otomatis berubah
Reply CancelTeknik Komputer
1 year agoApa 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 CancelAdmin
Penulis 1 year agoSilahkan ikuti langkah-langkah posting saya Semoga membantu 🙏
Sepatu Nike
1 year agoklo integrasi ke jagel gmn mas?
Reply Cancelfestus
3 months agoApakah setelah saya regristrasi nanti , dikasih link ke website saya, sehingga pembeli nanti bisa transaksi online? mohon pencerahahnnya secara teksnis. btw ada biaya kah?
Reply Cancel