PHP cek pembayaran Otomatis menggunakan Tripay (Toko Online)
RYANID.MY.ID - Selamat datang teman-teman, untuk mengisi kembali blog ini agar lebih unik dengan informasi yang lebih bermanfaat, saya akan membuat sebuah kategori baru yang di sebut ngobar. Ngobar kali ini akan membahas seputar layanan tripay, jadi saya akan berikan label khusus untuk artikel yang membahas seputar tripayment.
Hal ini saya lakukan karena algoritma rekomendasi sifatnya unik, saya tertarik ingin membuat algoritma ini secara manual dalam blog saya. Kembali ke topik, tripay adalah layanan payment gateway yang bisa menjembatani proses pembayaran otomatis pada website kamu.
Dengan Tripay layanan yang membutuhkan konfirmasi pembayaran bisa di lakukan otomatis, dan tentunya akan meningkatkan jumlah transaksi kamu. Kamu tidak perlu lagi menyewa jasa akuntansi untuk melakukan proses verifikasi pembayaran pada bisnis kamu.
Kalau kamu menggunakan wordpress tripay sudah bisa di integrasikan hanya dengan menginstall sebuah plugin pada blog wordpress, tidak perlu menggunakan koding. Tapi kali ini saya akan mengajarkan bagaimana meng-integrasikan layanan tripayment tanpa menggunakan plugin worpress ataupun library apapun.
Dengan begitu kamu bisa mengembangkan website dengan sempurna, tidak perlu memenuhi requirements yang terkadang di wajibkan oleh sebuah library PHP. Untuk bahasa koding program yang akan saya gunakan kali ini adalah bahasa PHP, jika kamu menggunakan bahasa python, rubby, c++, silakan di sesuaikan saja.
Ada dua jenis metode payment yang bisa kamu gunakan di tripay, open payment dan closed payment. Open payment adalah metode pembayaran terbuka, user bisa menentukan seberapa banyak uang yang akan di bayarkan. Metode ini fee nya di kenakan ke merchant (bisnis anda). Kedua closed payment, untuk metode closed payment harga tidak bisa di edit oleh user kita yang menentukan, untuk fee bisa dibebankan ke user bisa juga di bebankan ke merchant ( kamu).
Selain itu ada juga Direct payment dan Redirect payment, Direcr payment semua di lakukan di web kamu, sedangkan redirect user akan di arahkan ke halaman tripay untuk membayar tagihan. Setelah pembayaran terverifikasi user akan di redirect kembali ke web kamu. Metode aman nya menggunakan direct payment.
Alasanya saya pernah mengalami masalah dengan metode redirect, dimana ketika user mentranfer uang dia akan menutup browser dan berpindah ke aplikais pembayaran. Biasanya android kalau udah banyak app yang di buka satu aplikasi akan terhenti, jika yang terhenti adalah browser user harus meload halaman awal ketika kembali ke browser. Jadinya proses bayar terganggu.
Di bawah ini saya akan menggunakan Closed payment dengan transaksi dilakukan secara langsung dari web kita (Direct Payment).
Persiapan sebelum praktek
Tripay adalah layanan bisnis, maka dari itu pastikan kamu punya niat yang serius ingin membangun bisnis. Ada beberapa persyaratan yang harus kamu capai agar bisa menggunakan layanan Tripayment. Kalau belum siap, sebaiknya bookmark saja halaman saya, lanjutkan penyiapan persyaratan yang di butuhkan. Berikut ini ada beberapa syarat yang harus kamu persiapkan.
- Warga negara indonesia dengan identitas lengkap
- Punya website bisnis sebagai merchant.
- Sudah mendaftar akun Tripay.co.id dan memverifikasi akun dengan identitas KTP, Foto selfie, dan NPWP.
- Sudah membuat merchant di akun tripayment dengan nama bisnis kamu.
- Memahami bahasa pemrograman PHP, HTML, CSS, Dan JavaScript.
Perhatikan, saat membuat merchant kamu akan diminta memasukan URL website bisnis dan juga URL callback. URL bisnis adalah halaman web landing page atau blog tempat kamu menjual produk, sedangkan URL callback adalah alamat url pada website kamu yang berisi sebuah program untuk memproses/melakukan konfirmasi saat pembayaran berhasil di verifikasi.
Tripay akan mengirim data melalui protokol HTTP dengan Rest api berupa URL callback kamu, jenis data yang di kirim berupa JSON. URL callback bebas, sesuka hati kamu yang penating url tersebut mengarah ke program yang bisa memproses data lanjutan setelah pembayaran terkonfirmasi. Baik gagal, refund, sukses, atau pending.
Sistem alur kerja menggunakan Tripayment
Alur kerjanya berbasis invoice / tagihan, website kamu menyimpan data pembeli berupa Nama pembeli, Nomor HP, Nama Produk, Jumlah, dan Harga produk. Data ini nanti akan di kirim ke tripay untuk membuat permintaan pembayaran, nah hasilnya kamu akan mendapatkan sebuah tagihan lengkap dengan kode Rekening pembayaran serta panduan menyelesaikan pembayaran. Data ini bisa kamu tampilkan ke pada user.
Bagaimana proses verifikasi pembayaran di lakukan? Ketika user sudah melakukan pembayaran server tripay akan mengirimkan status pembayaran ke website kamu melalui URL callback yang sudah kita berikan. Server web kamu menerima data tersebut dan menyimpanya ke dalam dalam database, pastikan web kamu juga mencatat data tagihan yang di buat oleh user.
Untuk membuat cek pembayaran yang interaktif kamu bisa menggunakan metode auto reload halaman tagihan, atau mode ajax request setiap beberapa menit sekali untuk memeriksa apakah info pembayaran sudah kamu dapatkan dari tripay. Bila sudah selesai website kamu bisa mengarahkan visitor ke halaman produk, atau memproses orderan untuk selanjutnya (penyerahan produk).
Setelah membaca alur sistem kerja di atas pastinya kamu sudah paham bagaimana sistem kerja aplikasi yang akan kita buat. Mohon baca kembali jika kamu belum paham, selanjutnya saya akan membuat halaman:
- Halaman Input data yang kita gunakan untuk memasukan data pembeli kita beri nama order.php
- Halaman callback, di gunakan untuk menerima data dari server tripay, kita beri nama callback.php
- Halaman tagihan / Invoice untuk menampilkan tagihan ke pada user kita beri nama tagihan.php
- Halaman Ambil produk, di gunakan untuk sebagai halaman pemberian produk setelah proses transaksi berhasil, kita beri nama sukses.php
Karena berhubungan dengan data, kita membutuhkan database MYSQL. Kamu bisa menggunakan data berikut ini adalah susunan tabel MYSQL yang akan kita gunakan, tabel ini digunakan untuk menyimpan invoice / tagihan.
CREATE TABLE `invoice` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`nama` varchar(255) NOT NULL,
`hp` varchar(13) NOT NULL,
`kode` text NOT NULL,
`nama_produk` text NOT NULL,
`harga` int(11) NOT NULL,
`jumlah` int(11) NOT NULL,
`metode` text NOT NULL,
`status` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
Membuat halaman order.php halaman input data
Halaman input data ini nantinya akan melakukan dua proses, proses pertama membuat transaksi ke API tripay.co.id, dan apabila transaksi berhasil di buat kita simpan data hasil response ke database. Terus server kita akan menampilkan halaman tagihan beserta cara membayar tagihan tersebut.
Dalam kerjanya kita akan membutuhkan satu api Tripayment untuk menampilkan semua channel pembayaran, channel pembayaran adalah data metode pembayaran beserta kode VA nya nanti metode ini akan kita masukan ke dalam formulir yang bisa di pilih oleh user. Agar kamu bisa memahami bagaimana sistem kerja nya silakan simak dan cermati beberapa baris kode di bawah ini:
<?php
error_reporting(0);
// Masukan Konfigurasi Tripay anda
$api_key = "KODE_API_KEY_TRIPAY";
$private_key = "KODE_SECRET_KEY_TRIPAY";
$merchant_code = "KODE_MERCHANT";
$url_callback = "https://domain-kamu/callback.php";
$aksi = $_GET['tindakan'];
switch($aksi){
case "kalkulator_bayar":
header("content-type:text/json");
$payload = [ 'code' => $_GET['type'], 'amount' => $_GET['harga'] ];
$payload = http_build_query($payload);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_FRESH_CONNECT => true,
CURLOPT_URL => "https://tripay.co.id/api/merchant/fee-calculator?".$payload,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer ".$api_key
),
CURLOPT_FAILONERROR => false
));
$response = json_decode(curl_exec($curl),true);
$err = curl_error($curl);
curl_close($curl);
$fee = $response["data"][0]["total_fee"]["customer"];
$total = "Rp ". ($fee + $_GET['harga']);
$response = array("fee" => "Rp ". $fee, "amount" => $total, "harga" => $_GET['harga']);
echo json_encode($response);
break;
case "periksa";
$referensi = $_GET["cek"];
$data = $koneksi->query("SELECT * FROM `invoice` WHERE `kode`='". $referensi ."'");
if ($data->num_rows > 0){
$data = $data->fetch_assoc();
$getR = $data['status'];
// PAID, UNPAID, REFUND, FAILED
if ($getR == "UNPAID"){
echo '<span style="color:red">Belum ada dana masuk, pembayaran di cek otomatis instan. Pesanan anda berstatus belum dibayar (UNPAID).</span>';
}
if ($getR == "REFUND"){
echo '<span style="color:red">Terjadi masalah saat transaksi uang anda sudah di kembalikan ke rekening. Pembayaran anda dikembalikan silakan ulangi
(REFUND).</span>';
}
if ($getR == "FAILED"){
echo '<span style="color:red">Pembayaran anda gagal dilakukan, silakan buat invoice ulang. Gagal terjadi mungkin karena sudah lewat batas waktu
pembayaran (FAILED).</span>';
}
if ($getR == "EXPIRED"){
echo '<span style="color:red">Invoice Sudah basi, silakan di order kembali kakak.</span>';
}
if ($getR == "PAID"){
echo '<b>Pembayaran anda terverifikasi</b><br/>
Silakan arahkan visitor ke halaman produk/kirim produk';
}
break;
default :
// Ambil channel pembayaran di web Tripay dengan cURL
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_FRESH_CONNECT => true,
CURLOPT_URL => "https://tripay.co.id/api/merchant/payment-channel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer ".$api_key),
CURLOPT_FAILONERROR => false
));
$response = json_decode(curl_exec($curl),true);
$error = curl_error($curl);
curl_close($curl);
$pay .= '<option>Metode pembayaran via apa?</option>';
foreach($response["data"] as $transfer){
$pay .= '<option value="'.$transfer["code"].'"> '.$transfer["name"].'</option>'; }
echo '<!DOCTYPE html>
<html lang="id"><head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Halaman Tagihan RyanID</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
</head>
<center><h1 style="color:green">Silakan Masukan data</h2></center>
<form action="tagihan.php" method="post">
<p><b>Masukan Nama Pembeli</b><br/>
<input type="text" name="nama_pembeli" id="nama_pembeli"></p>
<p><b>Masukan No HP</b><br/>
<input type="number" name="nomor_hp" id="nomor_hp"></p>
<p><b>Masukan Alamat Email</b><br/>
<input type="email" name="email_pembeli" id="email_pembeli"></p>
<p><b>Masukan Nama Produk</b><br/>
<input type="text" name="nama_produk" id="nama_produk" value="Mie Ayam"></p>
<p><b>Masukan jumlah Produk</b><br/>
<input type="number" name="jumlah_produk" value="1"></p>
<p><b>Masukan Harga Produk</b><br/>
<input type="number" name="harga_produk" id="harga_produk" value="15000"></p>
<p><b>Metode Pembayaran</b><br/>
<select name="metode">'.$pay.'</select></p>
<table border="1" width="90%">
<tr><th>Produk</th> <td><span id="nama_produks">Kosong</span></td></tr>
<tr><th>Harga</th> <td><span id="harga_produk2"></span></td></tr>
<tr><th>Fee Bank</th> <td><span id="fee">Rp 0</span></td></tr>
<tr><th>Harus Dibayar</th> <td><span id="amount">Rp 0</span></td></tr>
</table>
<p><input type="submit" name="submit" value="Bayar Sekarang"/>
</form>
<script>
// Menghitung Fee atau nominal bayar
$(document).ready(function(){
$("select").on("change", function() {
$("#fee").html("Menghitung...");
var harga = $("#harga_produk").val();
$("#amount").html("Menghitung...");
$.get("?type="+ this.value +"&harga=" + harga + "&tindakan=kalkulator_bayar", function(data, status){
$("#fee").html(data.fee);
$("#amount").html(data.amount);
$("#harga_produk2").html(data.harga);
});
});
$("#nama_produk").on("keyup", function () {
$("#nama_produks").html($("#nama_produk").val());
});
$("#nama_produks").html($("#nama_produk").val());
$("#harga_produk2").html($("#harga_produk").val());
});
</script>';
break;
}
?>
Saya juga menyematkan barisan kode untuk membantu melakukan kalkulasi fee, dan juga periksa status pembayaran. Fitur ini saya gabung dengan ajax send data, tujuanya biar nggak perlu selalu merefresh halaman. Lebih hemat ram pada browser dibang harus melakukan reload halaman.
Membuat halaman tagihan.php
Halaman ini akan langsung menerima masukan/input dari user setelah halaman order (chekout), ada dua tugas yang kita kerjakan disini. Pertama kita menghubungi tripay.co.id untuk membuat permintaan transaksi. Nanti anda akan mendapatkan data berupa kode VA tempat membayar, instruksi pembayaran, dan juga data-data lain.
Jika proses permintaan membuat tagihan ke tripay.co.id kita simpan data invoice ke dalam database, data ini di gunakan sebagai identifikasi apakah status sudah sukses (paid), gagal (failed), di kembalikan (refund), atau belum di bayar ( unpaid). Kamu bisa memperbaruhi data status lewat file callback.php
Berikut ini adalah bagian isi dari halaman tagihan, jika tidak paham jangan terlebih dahulu mengedit kode. Sebaiknya pahami agar bisa menemukan bagaimana sistem kerja dari payment gateway.
<?php
// Masukan Konfigurasi Tripay anda
$api_key = "KODE_API_KEY_TRIPAY";
$private_key = "KODE_SECRET_KEY_TRIPAY";
$merchant_code = "KODE_MERCHANT";
$url_callback = "https://domain-kamu/callback.php";
// Konfigurasi dan setelan database
$db_host = "localhost";
$db_user = "DB_USER";
$db_pass = "DB_PASS";
$db_name = "ryanidmy_blog";
$koneksi = mysqli_connect ($db_host, $db_user ,$db_pass, $db_name);
// Jika MySQL gagal koneksi stop proses dan tampilkan error
if (mysqli_connect_errno()){
die('Mysql Error : : '.mysqli_connect_error());
}
echo '<!DOCTYPE html>
<html lang="id"><head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Halaman Tagihan RyanID</title>
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
</head>
<body>
<center><h1 style="color:green">Transfer Uang</h2></center>';
if ($_POST['submit']){
$nama = $_POST['nama_pembeli'];
$phone = $_PPST['nomor_hp'];
$email = $_POST['email_pembeli'];
$produk = $_POST['nama_produk'];
$jumlah = $_POST['jumlah_produk'] ? : "1";
$harga = $_POST['harga_produk'];
$method = $_POST['metode'];
// Cek apakah field masih ada yang kosong?
if (empty($nama) || empty($phone) || empty($email) || empty($produk) || empty($jumlah) || empty($harga) || empty($metode) ){
die("Wajib melengkapi data");
}
$merchantRef = "RYANID-".time();
$data = [
'method' => $method,
'merchant_ref' => $merchantRef,
'amount' => $harga,
'customer_name' => $nama,
'customer_email' => $email,
'customer_phone' => $phone,
'order_items' => [
[
'sku' => 'BeliProduk1',
'name' => $produk,
'price' => $harga,
'quantity' => 1
]
],
'callback_url' => $url_callback,
'return_url' => $url_callback,
'expired_time' => (time()+(60*60*8)), // 8 hours
'signature' => hash_hmac('sha256', $merchant_code.$merchantRef.$harga, $api_key)
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_FRESH_CONNECT => true,
CURLOPT_URL => "https://tripay.co.id/api/transaction/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer ".$api_key
),
CURLOPT_FAILONERROR => false,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($data)
));
$invoice = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$getD = json_decode($invoice, true);
if ($getD["success"] == true){
// Simpan tagihan ke dalam database Guna melakuka pengecekan
$koneksi->query("INSERT INTO `invoice`(`email`, `nama`, `hp`, `kode`, `nama_produk`, `harga`, `jumlah`, `metode`, `status`) VALUES (
'".$email."',
'".$nama."',
'".$phone."',
'".$getD['data']['reference']."',
'".$nama_produk."',
'".$harga_produk."',
'".$jumlah."',
'".$metode."',
'UNPAID');");
echo '<p>Anda membeli produk <b>'.$getD["data"]["order_items"][0]["name"].'</b> dengan harga Rp '.number_format($getD["data"]["order_items"][0]
["price"]).', silakan selesaikan pembayaran tagihan anda dibawah ini.</p>
<p><table border="1" width="90%">
<tr><th>Metode Pembayaran</th> <td>'.$getD["data"]["payment_name"].'</td></tr>
<tr><th>Nama </th> <td>'.$getD["data"]["customer_name"].'</td></tr>
<tr><th>Email </th> <td>'.$getD["data"]["customer_email"].'</td></tr>
<tr><th>HP</th> <td>'.$getD["data"]["customer_phone"].'</td></tr>
<tr><th>Biaya Transfer</th> <td><!-- Rp '.number_format(($getD["data"]["order_items"][0]["price"])).' + fee--> Rp '.number_format($getD["data"]
["fee_customer"]).'</td></tr>
<tr><th>Kode Referensi</th> <td>'.$getD["data"]["reference"].'</td></tr>
<tr><th>Total Bayar</th> <td><mark>Rp '.number_format($getD["data"]["amount"]).'</mark></td></tr>
</table></p>';
// Menampilkan Rekening VA
if ($getD["data"]["payment_method"] == "ALFAMART" || $getD["data"]["payment_method"] == "ALFAMIDI"){
echo 'Silakan datang ke kasir '.$getD["data"]["payment_name"].' terdekat di tempat anda, sampaikan ke kasir anda ingin membayar <u>Plasamall</u> dan
berikan kode pembayaran dibawah ini:<br/>
KODE BAYAR : <b>'.$getD["data"]["pay_code"].'</b><br/>';
} else
if ($getD["data"]["pay_code"]){
echo 'Silakan transfer pembayaran dengan nominal yang sama seperti <mark>total bayar</mark> di atas. Salin kode Virtual Account<br/>
KODE VA : <b>'.$getD["data"]["pay_code"].'</b><br/>';
} else
if ($getD["data"]["qr_url"]){
echo 'Scan Kode QRIS Berikut dengan aplikasi apa saja yang mendukung pembayaran Via QRIS. OVO, DANA, GOPAY, NETZME, BCA, JAGO dan lain-lain.<br/>
<img src="'.$getD["data"]["qr_url"].'" width="400px"/><br/><br/>';
}
// Menampilkan waktu jatuh tempo tagihan
echo '<i style="color:red">Silakan bayar sebelum '.date("D d M Y, H:i:s", $getD["data"]["expired_time"]).'</i></p>
<center>
<form action="" method="POST" id="RyanForms">
<input type="submit" value="Cek Status Pembayaran" class="contact-form-button" id="tombol"></form><hr/>
<span id="msgsuccess"></span>
</center>
<script type="text/javascript">
var getData = function() {
$.ajax({
url: "order.php?tindakan=periksa&cek='.$getD["data"]["reference"].'",
success: function(data) {
$("#msgsuccess").html(data);
}
});
};
$(function () {
$("#RyanForms").on("submit", function (e) {
$("#tombol").val("Memproses...");
e.preventDefault();
$.ajax({
type: "post",
url: "order.php?tindakan=periksa&cek='.$getD["data"]["reference"].'",
data: $("#RyanForms").serialize(),
success: function (data) {
$("#tombol").val("Cek Status Pembayaran");
$("#msgsuccess").html(data);
}
});
});
});
// perbaruhi status setiap 3 detik
setInterval(getData, 3000);
</script>
<br/>';
// Menampilkan Metode atau instruksi pembayaran
foreach($get["data"]["instructions"] as $tips){
echo '<h3>'.$tips["title"].'</h3>
<ul>';
foreach($tips["steps"] as $cara){
echo '<li>'.$cara.'</li>';
}
echo '</ul>';
}
}
}
echo '</body></html>';
?>
Membuat file callback.php
File callback ini akan berisi program yang dimana akan mengelolah data ketika server tripay mengirimkan notifikasi terkait status pembayaran, kamu wajib mencatatnya ke dalam database. Kenapa? Karena servert tripay hanya akan mengirimkan data sekali, tidak dua atau tiga kali. Hal terpenting di sini adalah proses memverifikasi signature, proses ini penting untuk memastikan apakah dokumen asli atau tidak.
Biasanya data yang dikirimkan oleh server bisa saja di edit, di ubah, atau di modifikasi oleh pihak ketiga lewat jaringan perantara anda. Nggak perlu ambil jauh-jauh, contohnya banyak website tanpa ssl di susupi iklan provider sekarang. Oleh karena itu keamanan merupakan bagian terpenting, apalagi terkait dengan transaksi keuangan.
Secara umum file callback tidak bisa di akses oleh web browser, file ini di buat khusus. Kamu bisa membuat fungsi khusus agar file ini menolak akses yang dikirimkan oleh browser. Silakan pahami bagaimana cara kerja skrip di bawah ini.
<?php
header("Content-Type:text/json");
// Masukan Konfigurasi Tripay anda
$api_key = "KODE_API_KEY_TRIPAY";
$private_key = "KODE_SECRET_KEY_TRIPAY";
$merchant_code = "KODE_MERCHANT";
$url_callback = "https://domain-kamu/callback.php";
// Konfigurasi dan setelan database
$db_host = "localhost";
$db_user = "DB_USER";
$db_pass = "DB_PASS";
$db_name = "ryanidmy_blog";
$koneksi = mysqli_connect ($db_host, $db_user ,$db_pass, $db_name);
// Jika MySQL gagal koneksi stop proses dan tampilkan error
if (mysqli_connect_errno()){
die('Mysql Error : : '.mysqli_connect_error());
}
// Mendapatkan data HTTP_INPUT yang dikirim oleh Tripay
$status = file_get_contents("php://input");
$signature = hash_hmac('sha256', $status, $private_key);
// Proses verifikasi signature dengan enkripsi, ini penting untuk
// ambil callback signature
$callbackSignature = isset($_SERVER['HTTP_X_CALLBACK_SIGNATURE']) ? $_SERVER['HTTP_X_CALLBACK_SIGNATURE'] : '';
// validasi signature
if( $callbackSignature !== $signature ) {
$err = json_encode(
array("status" => "gagal",
"alasan" => "Validasi signature gagal, halaman ini hanya boleh di akses dengan menyertakan JSON data "), JSON_PRETTY_PRINT);
print $err;
exit(); // signature tidak valid, hentikan proses
}
$data = json_decode($status, true);
$event = $_SERVER['HTTP_X_CALLBACK_EVENT'];
// Hanya ambil bagian proses pembayaran tidak yang lain
if ( $event == "payment_status" ){
// Ambil tagihan sebelumnya yang kita simpan
$data = $koneksi->query("SELECT * FROM `invoice` WHERE `kode`='". $data["reference"] ."'");
if ($data->num_rows > 0){
$d = $data->fetch_assoc();
// Update pembayaran dan berikan respone untuk Tripay
$koneksi->query( "UPDATE `invoice` SET `status`='". $payment_status ."' WHERE `id`='".$d['id']."'");
$hasil = array("status" => $data["status"], "type" => "WebsiteOrder", "success" => true);
echo json_encode($hasil);
exit;
}
}
?>
Oke sampai disini kita sudah berhasil membuat sebuah aplikasi sederhana dengan layanan payment gateway dari tripay.co.id. Ini adalah kode yang di buat dari nol, penggunaan yang baik buat menghemat waktu adalah dengan menggunakan library yang sudah ada. Bagi pengguna wordpress tinggal install plugin Tripay.
Saya sudah mengintegrasikan layanan RYANID dengan tripayment, awal memang sulit tapi setelah anda memahami bagaimana sistem kerja nya. Akan terasa lebih mudah mengembangkan program untuk menintegrasikan tripay dengan website kamu.