ทดลองใช้งานจริง

คู่มือเกตเวย์ชำระเงิน

การเชื่อมต่อ 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 ของคุณเอง
คู่มือตั้งค่า Cashfree

ขั้นตอนการชำระเงิน

การชำระเงินผ่าน Razorpay หนึ่งรายการสำหรับการจองท่องเที่ยว ทีละขั้น

การเชื่อมต่อ Razorpay แบ่งงานระหว่างเบราว์เซอร์ของนักเดินทางกับเซิร์ฟเวอร์ของคุณ เบราว์เซอร์แสดง Checkout ส่วนเซิร์ฟเวอร์สร้างออเดอร์ ตรวจผลลัพธ์ และตัดสินใจว่าจะยืนยันการจองเมื่อใด

  1. 01

    เซิร์ฟเวอร์ของคุณ

    สร้างออเดอร์

    เมื่อนักเดินทางกดชำระเงิน เซิร์ฟเวอร์ของคุณเรียก Orders API พร้อมจำนวนเงินเป็น paise สกุลเงิน และ receipt ที่ตั้งเป็นหมายเลขการจอง จากนั้น Razorpay ส่ง order_id กลับมา

  2. 02

    เบราว์เซอร์

    เปิด Razorpay Checkout

    หน้าจองเปิด Checkout ด้วย Key ID ของคุณและ order_id นั้น นักเดินทางจึงจ่ายตรงตามจำนวนที่เซิร์ฟเวอร์กำหนดไว้

  3. 03

    เบราว์เซอร์

    นักเดินทางชำระเงิน

    นักเดินทางเลือกบัตร UPI อินเทอร์เน็ตแบงก์กิ้ง หรือวอลเล็ต แล้วทำขั้นตอนที่ธนาคารกำหนดให้เสร็จ ตอนนี้การชำระเงินได้รับอนุมัติแล้ว

  4. 04

    เบราว์เซอร์

    Checkout ส่งค่ากลับสามค่า

    เมื่อสำเร็จ Checkout ส่ง razorpay_payment_id, razorpay_order_id และ razorpay_signature กลับมา แล้วหน้าเว็บส่งค่าเหล่านี้ไปยังเซิร์ฟเวอร์ของคุณ

  5. 05

    เซิร์ฟเวอร์ของคุณ

    ตรวจสอบลายเซ็น

    เซิร์ฟเวอร์ของคุณคำนวณลายเซ็นใหม่จาก order_id และ payment_id ด้วย Key Secret เฉพาะลายเซ็นที่ตรงกันเท่านั้นที่ถือว่าเป็นการชำระเงินจริง

  6. 06

    เซิร์ฟเวอร์ของคุณ

    เรียกเก็บเงิน

    ถ้าใช้การเรียกเก็บอัตโนมัติ Razorpay เรียกเก็บให้ ถ้าใช้การเรียกเก็บด้วยตนเอง เซิร์ฟเวอร์ของคุณเรียกเก็บหลังสายการบิน โรงแรม หรือซัพพลายเออร์ทัวร์ยืนยันแล้ว จึงไม่มีใครถูกเรียกเก็บเงินจากการจองที่ล้มเหลว

  7. 07

    เซิร์ฟเวอร์ของคุณ

    ยืนยันการจอง

    การจองเปลี่ยนเป็นชำระแล้ว ออกตั๋วหรือวอเชอร์ และเก็บ payment_id ของ Razorpay ไว้กับหมายเลขการจอง

  8. 08

    เซิร์ฟเวอร์ของคุณเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์

    รับเว็บฮุก

    Razorpay ยังส่งเหตุการณ์ เช่น payment.captured ไปยัง URL เว็บฮุกของคุณ ซึ่งครอบคลุมกรณีที่นักเดินทางปิดแท็บก่อนที่หน้าเว็บจะรายงานผลกลับ

ลายเซ็นและเว็บฮุก

สองการตรวจสอบที่ทำให้การเชื่อมต่อ Razorpay เชื่อถือได้

ทุกอย่างที่มาจากเบราว์เซอร์หรืออินเทอร์เน็ตอาจถูกปลอมได้ การเชื่อมต่อ Razorpay จะเชื่อถือการชำระเงินก็ต่อเมื่อตรวจลายเซ็นที่สร้างด้วยความลับที่ไม่เคยออกจากเซิร์ฟเวอร์ของคุณแล้วเท่านั้น

verify-razorpay.php · ตัวอย่าง
 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. ตัวเลือกที่ 1

    นักพัฒนาของคุณเพิ่มเอง

    PHPTRAVELS มาพร้อมซอร์สโค้ดครบชุด นักพัฒนาของคุณจึงเพิ่ม Razorpay เป็นเกตเวย์ใหม่ข้างเกตเวย์เดิมได้ ครอบคลุมการสร้างออเดอร์ Checkout ในขั้นชำระเงิน การตรวจลายเซ็น การเรียกเก็บเงิน เว็บฮุก และการคืนเงิน

    • พัฒนาและทดสอบด้วยคีย์โหมดทดสอบของ Razorpay
    • ใช้หมายเลขการจองซ้ำเป็น receipt ของออเดอร์
    • สลับไปใช้คีย์จริงเมื่อการจองทดสอบผ่าน
  2. ตัวเลือกที่ 2

    PHPTRAVELS สร้างให้

    นักพัฒนาของเราสร้างคอนเนกเตอร์ Razorpay ให้คุณเป็นการเชื่อมต่อ API แบบกำหนดเองได้ คุณส่งความต้องการมา รับราคาและกรอบเวลาก่อนเริ่มงาน และได้รับซอร์สโค้ดที่ผ่านการทดสอบแล้วเมื่อเสร็จงาน

    • เสนอราคาก่อนเริ่มงาน
    • สร้างโดยทดสอบกับโหมดทดสอบของ Razorpay
    • ส่งมอบเป็นซอร์สโค้ดที่คุณเป็นเจ้าของ
  3. ตัวเลือกที่ 3

    ใช้เกตเวย์สำเร็จรูปได้ทันที

    ถ้าต้องเปิดให้บริการก่อน ให้เปิดใช้เกตเวย์ที่มีอยู่ในแพลตฟอร์มแล้ว สำหรับอินเดียคือ Cashfree เกตเวย์สำเร็จรูปในปัจจุบันมีดังนี้

เกตเวย์สำเร็จรูป

เกตเวย์ชำระเงินที่เปิดใช้ได้วันนี้

รายการนี้ดึงสดจากไดเรกทอรีเกตเวย์ของ PHPTRAVELS แต่ละรายการเปิดใช้ในหน้าผู้ดูแลด้วยบัญชีและคีย์ของคุณเอง

อยากเข้าใจการเรียกเบื้องหลังของแต่ละเกตเวย์ อ่านคู่มือAPI เกตเวย์ชำระเงิน เปรียบเทียบคู่มือชำระเงินด้วย Stripeและการชำระเงิน PayPal หรือดูว่าเอเจนต์จ่ายเงินจากกระเป๋าเงินเอเจนต์ B2Bบนพอร์ทัล B2B อย่างไร

คำถามเกี่ยวกับ Razorpay

Razorpay และ PHPTRAVELS ตอบครบ

คุยกับฝ่ายขาย

ไม่ใช่ในรูปแบบคอนเนกเตอร์สำเร็จรูป ปัจจุบัน 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 เสนอราคางานกำหนดเองก่อนเริ่มงาน ตัวแพลตฟอร์มเป็นไลเซนส์จ่ายครั้งเดียว เริ่มต้นที่