Demo langsung

Panduan payment gateway

Integrasi API Razorpay untuk situs pemesanan perjalanan

Razorpay adalah payment gateway di India yang menerima kartu, UPI, netbanking, dan dompet digital dalam rupee. Panduan ini menjelaskan cara kerja pembayaran Razorpay untuk pemesanan penerbangan, hotel, atau tur, serta status sebenarnya di PHPTRAVELS: Razorpay saat ini bukan konektor siap pakai, tetapi bisa ditambahkan sebagai integrasi kustom pada kode sumber yang Anda miliki.

  • Kartu, UPI, netbanking, dompet digital
  • Order, Checkout, capture
  • Pemeriksaan tanda tangan dan webhook
  • Refund penuh dan sebagian

Razorpay sekilas

Apa itu Razorpay dan posisinya di PHPTRAVELS

Razorpay adalah payment gateway India. Bisnis perjalanan yang menjual kepada pelanggan di India memakainya untuk menerima metode pembayaran yang diharapkan pelanggan saat checkout: kartu debit dan kredit, UPI, netbanking, dan dompet digital populer, semuanya ditagih dan diselesaikan dalam rupee ke akun Razorpay milik merchant sendiri.

PHPTRAVELS adalah platform pemesanan perjalanan yang di-host sendiri dengan kode sumber lengkap disertakan. Payment gateway siap pakainya berasal dari daftar langsung yang Anda aktifkan dengan kredensial merchant Anda sendiri. Razorpay tidak ada di daftar itu saat ini, jadi belum ada sakelar untuknya di admin.

Itu tidak berarti Anda tidak bisa memakainya. Karena kode ini milik Anda, Razorpay dapat ditambahkan sebagai Integrasi API kustom, dan untuk India sudah tersedia gateway siap pakai: Cashfree. Halaman Integrasi payment gateway mencantumkan semua gateway yang bisa Anda aktifkan sekarang.

Ilustrasi pembayaran perjalanan online: checkout pemesanan meneruskan pembayaran kartu ke payment gateway lalu kembali ke sistem pemesanan

Lembar fakta Razorpay

Apa itu
Payment gateway untuk bisnis di India
Metode pembayaran
Kartu, UPI, netbanking, dan dompet digital
Mata uang
Menagih dan menyelesaikan dalam INR; jumlah dikirim dalam paise
Kunci API
Key ID dan Key Secret, terpisah untuk mode uji dan mode live
Status di PHPTRAVELS
Bukan konektor siap pakai. Tersedia sebagai integrasi kustom pada kode sumber yang disertakan
Siap di India hari ini
Cashfree, diaktifkan di admin dengan akun Cashfree Anda sendiri
Panduan pengaturan Cashfree

Alur pembayaran

Satu pembayaran Razorpay untuk pemesanan perjalanan, langkah demi langkah

Integrasi Razorpay membagi tugas antara browser pelancong dan server Anda. Browser menampilkan Checkout; server membuat order, memeriksa hasilnya, dan memutuskan kapan pemesanan dikonfirmasi.

  1. 01

    Server Anda

    Membuat order

    Saat pelancong menekan Bayar, server Anda memanggil Orders API dengan jumlah dalam paise, mata uang, dan receipt yang diisi referensi pemesanan. Razorpay mengembalikan order_id.

  2. 02

    Browser

    Membuka Razorpay Checkout

    Halaman pemesanan membuka Checkout dengan Key ID Anda dan order_id tersebut, sehingga pelancong membayar persis sejumlah yang ditetapkan server Anda.

  3. 03

    Browser

    Pelancong membayar

    Pelancong memilih kartu, UPI, netbanking, atau dompet digital dan menyelesaikan langkah apa pun yang diminta banknya. Pembayaran kini diotorisasi.

  4. 04

    Browser

    Checkout mengembalikan tiga nilai

    Jika berhasil, Checkout mengembalikan razorpay_payment_id, razorpay_order_id, dan razorpay_signature, lalu halaman mengirimkannya ke server Anda.

  5. 05

    Server Anda

    Memverifikasi tanda tangan

    Server Anda menghitung ulang tanda tangan dari order_id dan payment_id dengan Key Secret. Hanya tanda tangan yang cocok yang dianggap pembayaran asli.

  6. 06

    Server Anda

    Melakukan capture pembayaran

    Dengan capture otomatis, Razorpay melakukan capture untuk Anda. Dengan capture manual, server Anda melakukan capture setelah maskapai, hotel, atau pemasok tur mengonfirmasi, sehingga tak ada yang ditagih untuk pemesanan yang gagal.

  7. 07

    Server Anda

    Mengonfirmasi pemesanan

    Pemesanan berubah menjadi lunas, tiket atau voucher diterbitkan, dan payment_id Razorpay disimpan pada referensi pemesanan.

  8. 08

    Server AndaServer ke server

    Menerima webhook

    Razorpay juga mengirim event seperti payment.captured ke URL webhook Anda. Ini menutup kasus pelancong yang menutup tab sebelum halaman sempat melapor.

Tanda tangan dan webhook

Dua pemeriksaan yang menjaga integrasi Razorpay tetap tepercaya

Apa pun yang datang dari browser atau internet bisa dipalsukan. Integrasi Razorpay hanya memercayai pembayaran setelah memeriksa tanda tangan yang dibuat dengan rahasia yang tidak pernah meninggalkan server Anda.

verify-razorpay.php · ilustrasi
 1// 1. After Checkout: verify the payment signature 2$orderId   = $booking["razorpay_order_id"];  // from your own record 3$paymentId = $_POST["razorpay_payment_id"]; 4$signature = $_POST["razorpay_signature"]; 5$expected  = hash_hmac("sha256", $orderId . "|" . $paymentId, $keySecret); 6if (!hash_equals($expected, $signature)) { rejectPayment(); } 7markPaid($booking["ref"], $paymentId); 8 9// 2. Webhook: verify X-Razorpay-Signature over the raw body10$body    = file_get_contents("php://input");11$header  = $_SERVER["HTTP_X_RAZORPAY_SIGNATURE"] ?? "";12$expect  = hash_hmac("sha256", $body, $webhookSecret);13if (!hash_equals($expect, $header)) { http_response_code(400); exit; }14$event = json_decode($body, true);15if (alreadyHandled($event)) exit;          // repeat delivery16switch ($event["event"]) {17  case "payment.captured": confirmBooking($event); break;18  case "refund.processed": markRefunded($event);   break;19}

Pseudo-code ilustrasi untuk menunjukkan logikanya, bukan berkas siap pakai. Ikuti dokumentasi dan SDK Razorpay untuk pemanggilan yang tepat.

  • Tanda tangan pembayaran

    HMAC SHA256 dari order_id, tanda garis tegak, dan payment_id, dengan Key Secret Anda sebagai kunci, harus sama dengan razorpay_signature. Bandingkan dengan fungsi waktu konstan.

  • Tanda tangan webhook

    Setiap webhook membawa header X-Razorpay-Signature: HMAC SHA256 dari isi mentah permintaan, dengan kunci berupa webhook secret yang Anda atur di dasbor Razorpay.

  • Pengiriman berulang

    Webhook bisa datang lebih dari sekali atau tidak berurutan. Catat ID event dan pembayaran, dan abaikan event yang sudah diterapkan pada pemesanan.

  • Rahasia tetap di sisi server

    Hanya Key ID yang dikirim ke browser. Key Secret dan webhook secret berada di konfigurasi server, tidak pernah di sumber halaman atau aplikasi seluler.

Refund dan pembatalan

Refund perjalanan jarang sebesar jumlah penuh

Biaya pembatalan, aturan no-show, dan itinerary yang dibatalkan sebagian membuat refund perjalanan sering bersifat parsial. Refunds API Razorpay menangani keduanya, dan integrasi menentukan jumlahnya dari aturan pemesanan Anda.

  • Refund penuh

    Pembatalan gratis mengembalikan seluruh jumlah yang di-capture ke metode yang dipakai pelancong untuk membayar.

  • Refund sebagian

    Setelah biaya pembatalan, server hanya me-refund sisanya. Jumlahnya dikirim dalam paise, seperti order awal.

  • Bagian dari itinerary

    Batalkan satu malam hotel atau satu penumpang dan refund bagian itu; refund sebagian berikutnya bisa menyusul hingga total yang di-capture.

  • refund.processed

    Webhook refund memberi tahu server Anda saat refund selesai, sehingga pemesanan dan pelancong melihat status yang benar.

  • Disimpan pada pemesanan

    Setiap ID refund disimpan bersama referensi pemesanan dan payment_id asli untuk tim akuntansi Anda.

  • Contoh: pembatalan dengan biaya

    Di-capture
    ₹12,500.00 amount: 1250000
    Biaya pembatalan
    ₹1,500.00 amount: 150000
    Jumlah refund
    ₹11,000.00 amount: 1100000

    Angka hanya contoh. Razorpay menerima jumlah dalam satuan mata uang terkecil, jadi 100 paise sama dengan satu rupee.

Cara menghubungkan Razorpay

Tiga cara menerima pembayaran dengan atau tanpa Razorpay

Pilih jalur yang sesuai dengan tim dan tanggal peluncuran Anda. Ketiganya menjaga dana tetap di akun merchant Anda sendiri; PHPTRAVELS tidak pernah ikut dalam penyelesaian dana.

  1. Opsi 1

    Developer Anda yang menambahkan

    PHPTRAVELS hadir dengan kode sumber lengkap, sehingga developer Anda sendiri bisa menambahkan Razorpay sebagai gateway baru di samping yang sudah ada: pembuatan order, Checkout di langkah pembayaran, pemeriksaan tanda tangan, capture, webhook, dan refund.

    • Bangun dan uji dengan kunci mode uji Razorpay
    • Pakai ulang referensi pemesanan sebagai receipt order
    • Beralih ke kunci live setelah pemesanan uji lolos
  2. Opsi 2

    PHPTRAVELS yang membangunnya

    Developer kami dapat membangun konektor Razorpay untuk Anda sebagai Integrasi API kustom. Anda mengirim kebutuhan, menerima biaya dan jadwal sebelum pekerjaan dimulai, dan mendapat kode sumber yang telah diuji di akhir.

    • Dikutip harganya sebelum pekerjaan dimulai
    • Dibangun pada mode uji Razorpay
    • Diserahkan sebagai kode sumber milik Anda
  3. Opsi 3

    Pakai gateway siap pakai sekarang

    Jika perlu meluncur lebih dulu, aktifkan gateway yang sudah ada di platform. Untuk India itu Cashfree. Gateway siap pakai saat ini meliputi:

Gateway siap pakai

Payment gateway yang bisa Anda aktifkan hari ini

Daftar ini datang langsung dari direktori gateway PHPTRAVELS. Masing-masing diaktifkan di admin dengan akun dan kunci Anda sendiri.

Ingin memahami pemanggilan di balik masing-masing? Baca panduan API Payment Gateway, bandingkan panduan Pembayaran Stripe dan Pembayaran PayPal, atau lihat bagaimana agen membayar dari Dompet agen B2B di portal B2B.

Pertanyaan tentang Razorpay

Razorpay dan PHPTRAVELS, terjawab

Hubungi sales

Tidak sebagai konektor siap pakai. Razorpay tidak ada di daftar gateway PHPTRAVELS saat ini, jadi Anda tidak bisa mengaktifkannya di admin. Karena kode sumber lengkap disertakan, Razorpay dapat ditambahkan sebagai integrasi payment gateway kustom, oleh developer Anda atau developer kami.

Cashfree adalah gateway siap pakai di PHPTRAVELS dan punya panduan pengaturan di docs.phptravels.com/payments/cashfree. Anda mengaktifkannya di admin dengan akun Cashfree Anda sendiri. Gateway siap pakai lain seperti Stripe dan PayPal tercantum di halaman payment gateway.

Razorpay menerima kartu, UPI, netbanking, dan dompet digital untuk pembayaran dalam rupee India. Metode yang muncul saat checkout bergantung pada apa yang diaktifkan di akun Razorpay Anda sendiri.

Razorpay menerima jumlah dalam satuan mata uang terkecil, jadi total pemesanan dalam rupee dikalikan 100 sebelum order dibuat. Jumlah refund dikirim dengan cara yang sama.

Checkout mengembalikan ID pembayaran, ID order, dan sebuah tanda tangan. Server Anda menghitung HMAC SHA256 dari ID order dan ID pembayaran dengan Key Secret Anda dan hanya menerima pembayaran jika hasilnya cocok dengan tanda tangan.

Capture otomatis lebih sederhana. Capture manual memungkinkan Anda melakukan capture hanya setelah maskapai, hotel, atau pemasok tur mengonfirmasi pemesanan, sehingga pemesanan yang gagal bisa dilepas, bukan di-refund. Pilihannya bergantung pada produk dan pemasok Anda.

Bisa. Refunds API Razorpay mendukung refund penuh dan sebagian, jadi biaya pembatalan bisa ditahan dan sisanya dikembalikan. Webhook refund.processed memberi tahu server Anda saat refund selesai.

Ya. Akun merchant, Key ID dan Key Secret-nya, serta penyelesaian dananya adalah milik Anda. PHPTRAVELS tidak pernah menyediakan kredensial gateway dan tidak pernah menangani dana Anda. Bangun dengan kunci mode uji dan beralih ke kunci live saat meluncur.

Tergantung lingkup yang dibutuhkan, seperti checkout, capture manual, refund, dan pembayaran agen. PHPTRAVELS memberi penawaran untuk pekerjaan kustom sebelum dimulai. Platformnya sendiri adalah lisensi sekali bayar mulai dari.