สถานะ charge เป็น pending หมายความว่าอย่างไรครับ

step to reproduce

  1. charge บัตรด้วย omise key production
  2. https://api.omise.co/charges/xxxxx call api ไปตรวจสอบพบว่าได้สถานะเป็น pending และไม่ตัดเงินบัตร
    อยากสอบถามว่ามันคืออะไรหรอครับ และต้องทำอย่างไรถึงจะ success

สถานะ Pending สามารถเกิดได้จากหลายสาเหตุ รวมถึงอาจจะเกิดจาก 2 สาเหตุหลักๆ ดังนี้ครับ

  • Transaction นั้นๆ เป็น transaction “authorized only” หรือการจองวงเงิน (แต่ยังไม่ capture)
    จุดสังเกตคือ ที่ Omise Dashboard (https://dashboard.omise.co/live/charges/chrg_***) สถานะบนหน้าจอ จะขึ้นเป็นวงกลมสีเขียวที่ authorized และวงกลมสีส้ม Not captured (manual) ครับ

    ตรงนี้ เราสามารถ capture ผ่านหน้าจอ Dashboard ได้เลย หรือสามารถเรียก API https://api.omise.co/charges/xxxxx/capture เพื่อตัดเงินได้เช่นกันครับ

  • อีกสาเหตุหลักๆ คือ บัญชี Omise นั้นๆ อาจมีการเปิดใช้งาน 3-D Secure payment
    จุดสังเกตคือ ที่หน้าจอ Dashboard ในหน้าข้อมูล Charge (https://dashboard.omise.co/live/charges/chrg_***) สถานะจะขึ้นเป็น วงกลมสีส้มทั้ง Not authorized และ Not captured

    ถ้าเป็นกรณีนี้ ระบบที่เชื่อมต่อกับ Omise API จำเป็นจะต้อง redirect ผู้ใช้งานไปยังหน้า 3-D Secure Payment เพื่อยืนยันตัวตน (จะเป็น OTP) เสียก่อน ตัว API ถึงจะตัดเงินได้ครับ

    โดยเมื่อเรียก https://api.omise.co/charges/xxxxx แล้ว จะได้รับ attribute ตัวหนึ่งที่ชื่อว่า authorize_uri กลับมาด้วยใน Charge Object ซึ่งเราสามารถ redirect ผู้ใช้งานออกไปที่ url ตัวนี้ได้ครับ

    ลักษณะของ url จะเป็น

    {
      "object": "charge",
      "status": "pending",
      "authorized": false,
      "paid": false,
      ..
      "authorize_url": "https://pay.omise.co/offsites/ofsp_***/pay"
    }
    
1 Like

ผมขอสอบถามเพิ่มเติมต่อจากข้างบนนะครับ

ถ้า charge อยู่ในสถานะ pending แล้ว ผู้ใช้งานเข้าไปยังหน้า 3-D secure แต่ผู้ใช้หยุด process ที่ตรงจุดนี้ไม่ว่าจะด้วยเรื่อง กรอก OTP ไม่ผ่าน หรือไม่ทำรายการต่อ

สถานะของ charge นั้นใน dashboard จะขึ้นเป็น รอดำเนินการ (สีส้ม)

เราควรจะปล่อยให้มันค้างไว้แบบนั้น หรือเราควรจะจัดการกับตัว รายการ charge นี้ยังไงต่อไหมครับ

ถ้าต้องจัดการยกเลิก charge ให้เปลี่ยนสถานะเป็นอย่างอื่น หรือทำอะไรอื่นๆ ต้องทำอย่างไรบ้างครับ

ขอบคุณครับ

ตัว charge เปลี่ยนสถานะ expired ไปเองใน 7 วันครับ