คู่มือเกตเวย์ชำระเงิน
การเชื่อมต่อ Razorpay APIสำหรับเว็บไซต์จองท่องเที่ยว
Razorpay คือเกตเวย์ชำระเงินสำหรับอินเดียที่รับบัตร UPI อินเทอร์เน็ตแบงก์กิ้ง และวอลเล็ตเป็นเงินรูปี คู่มือนี้อธิบายว่าการชำระเงินผ่าน Razorpay ทำงานอย่างไรกับการจองเที่ยวบิน โรงแรม หรือทัวร์ และสถานะที่แท้จริงใน PHPTRAVELS: ปัจจุบัน Razorpay ยังไม่ใช่คอนเนกเตอร์สำเร็จรูป แต่เพิ่มเป็นการเชื่อมต่อแบบกำหนดเองบนซอร์สโค้ดที่คุณเป็นเจ้าของได้
- บัตร UPI อินเทอร์เน็ตแบงก์กิ้ง วอลเล็ต
- ออเดอร์ Checkout การเรียกเก็บเงิน
- ตรวจลายเซ็นและเว็บฮุก
- คืนเงินเต็มจำนวนและบางส่วน
Razorpay โดยสรุป
Razorpay คืออะไร และอยู่ตรงไหนใน PHPTRAVELS
Razorpay เป็นเกตเวย์ชำระเงินของอินเดีย ธุรกิจท่องเที่ยวที่ขายให้ลูกค้าชาวอินเดียใช้รับวิธีชำระเงินที่ลูกค้าคาดหวังตอนเช็กเอาต์ ได้แก่ บัตรเดบิตและบัตรเครดิต UPI อินเทอร์เน็ตแบงก์กิ้ง และวอลเล็ตยอดนิยม โดยเรียกเก็บและรับชำระเป็นเงินรูปีอินเดียเข้าบัญชี Razorpay ของผู้ค้าเอง
PHPTRAVELS เป็นแพลตฟอร์มจองท่องเที่ยวแบบโฮสต์เองที่ให้ซอร์สโค้ดครบชุด เกตเวย์ชำระเงินสำเร็จรูปมาจากรายการสดที่คุณเปิดใช้ด้วยข้อมูลผู้ค้าของคุณเอง ปัจจุบัน Razorpay ยังไม่อยู่ในรายการนั้น จึงยังไม่มีสวิตช์เปิดใช้ในหน้าผู้ดูแล
แต่นั่นไม่ได้แปลว่าใช้ไม่ได้ เพราะโค้ดเป็นของคุณ จึงเพิ่ม Razorpay เป็นการเชื่อมต่อ API แบบกำหนดเองได้ และสำหรับอินเดียมีเกตเวย์สำเร็จรูปให้ใช้แล้วคือ Cashfree ดูเกตเวย์ทั้งหมดที่เปิดใช้ได้ตอนนี้ที่หน้าเชื่อมต่อเพย์เมนต์เกตเวย์

ข้อมูลสรุป Razorpay
- คืออะไร
- เกตเวย์ชำระเงินสำหรับธุรกิจในอินเดีย
- วิธีชำระเงิน
- บัตร UPI อินเทอร์เน็ตแบงก์กิ้ง และวอลเล็ต
- สกุลเงิน
- เรียกเก็บและรับชำระเป็น INR ส่งจำนวนเงินเป็นหน่วย paise
- คีย์ API
- Key ID และ Key Secret แยกกันระหว่างโหมดทดสอบและโหมดใช้งานจริง
- สถานะใน PHPTRAVELS
- ไม่ใช่คอนเนกเตอร์สำเร็จรูป เพิ่มเป็นการเชื่อมต่อแบบกำหนดเองบนซอร์สโค้ดที่ให้มาได้
- พร้อมใช้ในอินเดียวันนี้
- Cashfree เปิดใช้ในหน้าผู้ดูแลด้วยบัญชี Cashfree ของคุณเอง
ขั้นตอนการชำระเงิน
การชำระเงินผ่าน Razorpay หนึ่งรายการสำหรับการจองท่องเที่ยว ทีละขั้น
การเชื่อมต่อ Razorpay แบ่งงานระหว่างเบราว์เซอร์ของนักเดินทางกับเซิร์ฟเวอร์ของคุณ เบราว์เซอร์แสดง Checkout ส่วนเซิร์ฟเวอร์สร้างออเดอร์ ตรวจผลลัพธ์ และตัดสินใจว่าจะยืนยันการจองเมื่อใด
- 01
เซิร์ฟเวอร์ของคุณ
สร้างออเดอร์
เมื่อนักเดินทางกดชำระเงิน เซิร์ฟเวอร์ของคุณเรียก Orders API พร้อมจำนวนเงินเป็น paise สกุลเงิน และ receipt ที่ตั้งเป็นหมายเลขการจอง จากนั้น Razorpay ส่ง order_id กลับมา
- 02
เบราว์เซอร์
เปิด Razorpay Checkout
หน้าจองเปิด Checkout ด้วย Key ID ของคุณและ order_id นั้น นักเดินทางจึงจ่ายตรงตามจำนวนที่เซิร์ฟเวอร์กำหนดไว้
- 03
เบราว์เซอร์
นักเดินทางชำระเงิน
นักเดินทางเลือกบัตร UPI อินเทอร์เน็ตแบงก์กิ้ง หรือวอลเล็ต แล้วทำขั้นตอนที่ธนาคารกำหนดให้เสร็จ ตอนนี้การชำระเงินได้รับอนุมัติแล้ว
- 04
เบราว์เซอร์
Checkout ส่งค่ากลับสามค่า
เมื่อสำเร็จ Checkout ส่ง razorpay_payment_id, razorpay_order_id และ razorpay_signature กลับมา แล้วหน้าเว็บส่งค่าเหล่านี้ไปยังเซิร์ฟเวอร์ของคุณ
- 05
เซิร์ฟเวอร์ของคุณ
ตรวจสอบลายเซ็น
เซิร์ฟเวอร์ของคุณคำนวณลายเซ็นใหม่จาก order_id และ payment_id ด้วย Key Secret เฉพาะลายเซ็นที่ตรงกันเท่านั้นที่ถือว่าเป็นการชำระเงินจริง
- 06
เซิร์ฟเวอร์ของคุณ
เรียกเก็บเงิน
ถ้าใช้การเรียกเก็บอัตโนมัติ Razorpay เรียกเก็บให้ ถ้าใช้การเรียกเก็บด้วยตนเอง เซิร์ฟเวอร์ของคุณเรียกเก็บหลังสายการบิน โรงแรม หรือซัพพลายเออร์ทัวร์ยืนยันแล้ว จึงไม่มีใครถูกเรียกเก็บเงินจากการจองที่ล้มเหลว
- 07
เซิร์ฟเวอร์ของคุณ
ยืนยันการจอง
การจองเปลี่ยนเป็นชำระแล้ว ออกตั๋วหรือวอเชอร์ และเก็บ payment_id ของ Razorpay ไว้กับหมายเลขการจอง
- 08
เซิร์ฟเวอร์ของคุณเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์
รับเว็บฮุก
Razorpay ยังส่งเหตุการณ์ เช่น payment.captured ไปยัง URL เว็บฮุกของคุณ ซึ่งครอบคลุมกรณีที่นักเดินทางปิดแท็บก่อนที่หน้าเว็บจะรายงานผลกลับ
ลายเซ็นและเว็บฮุก
สองการตรวจสอบที่ทำให้การเชื่อมต่อ Razorpay เชื่อถือได้
ทุกอย่างที่มาจากเบราว์เซอร์หรืออินเทอร์เน็ตอาจถูกปลอมได้ การเชื่อมต่อ Razorpay จะเชื่อถือการชำระเงินก็ต่อเมื่อตรวจลายเซ็นที่สร้างด้วยความลับที่ไม่เคยออกจากเซิร์ฟเวอร์ของคุณแล้วเท่านั้น
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}
โค้ดจำลองเพื่อแสดงตรรกะเท่านั้น ไม่ใช่ไฟล์ที่นำไปใช้ได้ทันที โปรดทำตามเอกสารและ SDK ของ Razorpay สำหรับการเรียกที่ถูกต้อง
ลายเซ็นการชำระเงิน
ค่า HMAC SHA256 ของ order_id ตามด้วยเครื่องหมายไปป์และ payment_id โดยใช้ Key Secret เป็นคีย์ ต้องเท่ากับ razorpay_signature ควรเปรียบเทียบด้วยฟังก์ชันที่ใช้เวลาคงที่
ลายเซ็นเว็บฮุก
เว็บฮุกทุกรายการมีส่วนหัว X-Razorpay-Signature ซึ่งเป็น HMAC SHA256 ของเนื้อหาคำขอดิบ โดยใช้ความลับเว็บฮุกที่คุณตั้งในแดชบอร์ด Razorpay เป็นคีย์
การส่งซ้ำ
เว็บฮุกอาจมาซ้ำหรือมาไม่เรียงลำดับได้ ให้บันทึกรหัสเหตุการณ์และรหัสการชำระเงิน แล้วข้ามเหตุการณ์ที่ใช้กับการจองไปแล้ว
ความลับอยู่ฝั่งเซิร์ฟเวอร์เท่านั้น
ส่งเฉพาะ Key ID ไปยังเบราว์เซอร์ Key Secret และความลับเว็บฮุกอยู่ในการตั้งค่าเซิร์ฟเวอร์ ไม่อยู่ในซอร์สของหน้าเว็บหรือแอปมือถือเด็ดขาด
การคืนเงินและการยกเลิก
การคืนเงินค่าเดินทางมักไม่ใช่ทั้งจำนวน
ค่าธรรมเนียมยกเลิก กฎการไม่มาตามนัด และแผนการเดินทางที่ยกเลิกเพียงบางส่วน ทำให้การคืนเงินค่าเดินทางมักเป็นบางส่วน Refunds API ของ Razorpay รองรับทั้งสองแบบ และการเชื่อมต่อจะกำหนดจำนวนเงินตามกฎการจองของคุณ
คืนเงินเต็มจำนวน
การยกเลิกฟรีจะคืนเงินที่เรียกเก็บทั้งหมดไปยังวิธีที่นักเดินทางใช้ชำระ
คืนเงินบางส่วน
หลังหักค่าธรรมเนียมยกเลิก เซิร์ฟเวอร์คืนเฉพาะส่วนที่เหลือ ส่งจำนวนเงินเป็น paise เหมือนออเดอร์เดิม
บางส่วนของแผนการเดินทาง
ยกเลิกโรงแรมหนึ่งคืนหรือผู้โดยสารหนึ่งคนแล้วคืนเงินเฉพาะส่วนนั้น และคืนเงินบางส่วนเพิ่มได้อีกจนถึงยอดรวมที่เรียกเก็บ
refund.processed
เว็บฮุกการคืนเงินแจ้งเซิร์ฟเวอร์เมื่อการคืนเงินเสร็จสิ้น เพื่อให้การจองและนักเดินทางเห็นสถานะที่ถูกต้อง
เก็บไว้กับการจอง
รหัสการคืนเงินแต่ละรายการถูกเก็บพร้อมหมายเลขการจองและ payment_id เดิมสำหรับทีมบัญชีของคุณ
ตัวอย่าง: ยกเลิกพร้อมค่าธรรมเนียม
- เรียกเก็บแล้ว
- ₹12,500.00 amount: 1250000
- ค่าธรรมเนียมยกเลิก
- ₹1,500.00 amount: 150000
- จำนวนเงินที่คืน
- ₹11,000.00 amount: 1100000
ตัวเลขตัวอย่างเท่านั้น Razorpay รับจำนวนเงินเป็นหน่วยเล็กที่สุดของสกุลเงิน ดังนั้น 100 paise เท่ากับหนึ่งรูปี
วิธีเชื่อมต่อ Razorpay
สามวิธีรับชำระเงิน ทั้งแบบใช้และไม่ใช้ Razorpay
เลือกเส้นทางที่เหมาะกับทีมและวันเปิดตัวของคุณ ทั้งสามวิธีเก็บเงินไว้ในบัญชีผู้ค้าของคุณเอง PHPTRAVELS ไม่เกี่ยวข้องกับการรับชำระเงินเลย
ตัวเลือกที่ 1
นักพัฒนาของคุณเพิ่มเอง
PHPTRAVELS มาพร้อมซอร์สโค้ดครบชุด นักพัฒนาของคุณจึงเพิ่ม Razorpay เป็นเกตเวย์ใหม่ข้างเกตเวย์เดิมได้ ครอบคลุมการสร้างออเดอร์ Checkout ในขั้นชำระเงิน การตรวจลายเซ็น การเรียกเก็บเงิน เว็บฮุก และการคืนเงิน
- พัฒนาและทดสอบด้วยคีย์โหมดทดสอบของ Razorpay
- ใช้หมายเลขการจองซ้ำเป็น receipt ของออเดอร์
- สลับไปใช้คีย์จริงเมื่อการจองทดสอบผ่าน
ตัวเลือกที่ 2
PHPTRAVELS สร้างให้
นักพัฒนาของเราสร้างคอนเนกเตอร์ Razorpay ให้คุณเป็นการเชื่อมต่อ API แบบกำหนดเองได้ คุณส่งความต้องการมา รับราคาและกรอบเวลาก่อนเริ่มงาน และได้รับซอร์สโค้ดที่ผ่านการทดสอบแล้วเมื่อเสร็จงาน
- เสนอราคาก่อนเริ่มงาน
- สร้างโดยทดสอบกับโหมดทดสอบของ Razorpay
- ส่งมอบเป็นซอร์สโค้ดที่คุณเป็นเจ้าของ
ตัวเลือกที่ 3
ใช้เกตเวย์สำเร็จรูปได้ทันที
ถ้าต้องเปิดให้บริการก่อน ให้เปิดใช้เกตเวย์ที่มีอยู่ในแพลตฟอร์มแล้ว สำหรับอินเดียคือ Cashfree เกตเวย์สำเร็จรูปในปัจจุบันมีดังนี้
- Cashfreeคู่มือตั้งค่า Cashfree
- Stripe
- PayPal
- xMoney
- Fawaterk
- Paystack
เกตเวย์สำเร็จรูป
เกตเวย์ชำระเงินที่เปิดใช้ได้วันนี้
รายการนี้ดึงสดจากไดเรกทอรีเกตเวย์ของ PHPTRAVELS แต่ละรายการเปิดใช้ในหน้าผู้ดูแลด้วยบัญชีและคีย์ของคุณเอง
Cashfree
Stripeคู่มือการเชื่อมต่อPayPalคู่มือการเชื่อมต่อ
xMoney
Fawaterk
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- การเชื่อมต่อทั้งหมด
อยากเข้าใจการเรียกเบื้องหลังของแต่ละเกตเวย์ อ่านคู่มือAPI เกตเวย์ชำระเงิน เปรียบเทียบคู่มือชำระเงินด้วย Stripeและการชำระเงิน PayPal หรือดูว่าเอเจนต์จ่ายเงินจากกระเป๋าเงินเอเจนต์ B2Bบนพอร์ทัล B2B อย่างไร
ไม่ใช่ในรูปแบบคอนเนกเตอร์สำเร็จรูป ปัจจุบัน Razorpay ไม่อยู่ในรายการเกตเวย์ของ PHPTRAVELS จึงเปิดใช้ในหน้าผู้ดูแลไม่ได้ แต่เพราะมีซอร์สโค้ดครบชุด จึงเพิ่มเป็นการเชื่อมต่อเกตเวย์ชำระเงินแบบกำหนดเองได้ ทั้งโดยนักพัฒนาของคุณหรือของเรา
Cashfree เป็นเกตเวย์สำเร็จรูปใน PHPTRAVELS และมีคู่มือตั้งค่าที่ docs.phptravels.com/payments/cashfree คุณเปิดใช้ในหน้าผู้ดูแลด้วยบัญชี Cashfree ของคุณเอง ส่วนเกตเวย์สำเร็จรูปอื่น เช่น Stripe และ PayPal แสดงอยู่ในหน้าเกตเวย์ชำระเงิน
Razorpay รับบัตร UPI อินเทอร์เน็ตแบงก์กิ้ง และวอลเล็ต สำหรับการชำระเงินเป็นเงินรูปีอินเดีย วิธีที่แสดงตอนเช็กเอาต์ขึ้นอยู่กับสิ่งที่เปิดใช้ในบัญชี Razorpay ของคุณเอง
Razorpay รับจำนวนเงินเป็นหน่วยเล็กที่สุดของสกุลเงิน ยอดรวมการจองเป็นรูปีจึงต้องคูณ 100 ก่อนสร้างออเดอร์ จำนวนเงินคืนก็ส่งในรูปแบบเดียวกัน
Checkout ส่งรหัสการชำระเงิน รหัสออเดอร์ และลายเซ็นกลับมา เซิร์ฟเวอร์ของคุณคำนวณ HMAC SHA256 ของรหัสออเดอร์และรหัสการชำระเงินด้วย Key Secret และยอมรับการชำระเงินเฉพาะเมื่อผลลัพธ์ตรงกับลายเซ็น
การเรียกเก็บอัตโนมัติง่ายกว่า ส่วนการเรียกเก็บด้วยตนเองให้คุณเรียกเก็บหลังสายการบิน โรงแรม หรือซัพพลายเออร์ทัวร์ยืนยันการจองเท่านั้น การจองที่ล้มเหลวจึงปล่อยทิ้งได้โดยไม่ต้องคืนเงิน การเลือกขึ้นอยู่กับสินค้าและซัพพลายเออร์ของคุณ
ได้ Refunds API ของ Razorpay รองรับการคืนเงินเต็มจำนวนและบางส่วน จึงหักค่าธรรมเนียมยกเลิกไว้แล้วคืนส่วนที่เหลือได้ เว็บฮุก refund.processed จะแจ้งเซิร์ฟเวอร์เมื่อการคืนเงินเสร็จสมบูรณ์
ต้องมี บัญชีผู้ค้า Key ID และ Key Secret รวมถึงการรับชำระเป็นของคุณ PHPTRAVELS ไม่เคยให้ข้อมูลรับรองของเกตเวย์และไม่เคยแตะเงินของคุณ พัฒนาด้วยคีย์โหมดทดสอบ แล้วสลับเป็นคีย์จริงเมื่อเปิดใช้งาน
ขึ้นอยู่กับขอบเขตที่ต้องการ เช่น Checkout การเรียกเก็บด้วยตนเอง การคืนเงิน และการชำระเงินของเอเจนต์ PHPTRAVELS เสนอราคางานกำหนดเองก่อนเริ่มงาน ตัวแพลตฟอร์มเป็นไลเซนส์จ่ายครั้งเดียว เริ่มต้นที่
สำรวจต่อ
เพิ่มเติมเกี่ยวกับแพลตฟอร์ม
- เชื่อมต่อเพย์เมนต์เกตเวย์ชำระเงิน, 3D Secure, คืนเงิน และ webhook
- API เกตเวย์ชำระเงินการชำระเงินด้วยบัตร 3-D Secure การเรียกเก็บเงิน และการคืนเงินทำงานผ่าน API อย่างไร
- การเชื่อมต่อ API แบบกำหนดเองเชื่อม API ซัพพลายเออร์หรือพาร์ทเนอร์ใดก็ได้กับ PHPTRAVELS
- ชำระเงินด้วย Stripeชำระด้วยบัตรและวอลเล็ต พร้อมคืนเงินและโอนเงิน
- การชำระเงิน PayPalชำระด้วย PayPal สำหรับเที่ยวบิน โรงแรม และทัวร์
- กระเป๋าเงินเอเจนต์ B2Bเงินฝากของเอเจนต์ วงเงินเครดิต และบัญชีแยกต่อเอเจนต์
