จับยอด Charge
จับยอด charge ที่ได้รับอนุมัติก่อนหน้านี้เพื่อทำให้การชำระเงินเสร็จสมบูรณ์ ใช้สำหรับ workflow การอนุมัติล่วงหน้าที่คุณอนุมัติก่อน (ด้วย capture=false) แล้วจับยอดทีหลัง
พารามิเตอร์คำขอ
จำเป็น - 1 ฟิลด์พารามิเตอร์ที่จำเป็น
`id`STRING(required)
Charge ID ที่ต้องการจับยอด ต้องเป็น charge ที่ได้รับอนุมัติแต่ยังไม่ได้จับยอด (status: successful, authorized: true, capture: false, capturable: true)
เพิ่มเติม - 2 ฟิลด์พารามิเตอร์เพิ่มเติม
การตอบกลับ
200
จับยอดสำเร็จจับยอด charge สำเร็จ การชำระเงินเสร็จสมบูรณ์และเงินถูกโอนแล้ว
การเปลี่ยนแปลงฟิลด์หลักหลังจับยอด:
capture- เปลี่ยนจาก false เป็น truepaid- เปลี่ยนจาก false เป็น truecapturable- เปลี่ยนจาก true เป็น falserefundable- เปลี่ยนจาก false เป็น truepaid_at- ตั้งค่าเป็น timestamp ปัจจุบัน
400
คำขอไม่ถูกต้องพารามิเตอร์ที่ระบุไม่ถูกต้อง
สาเหตุทั่วไป:
- capture_amount ไม่ถูกต้อง (เกินจำนวนเงินที่อนุมัติ)
- รูปแบบ charge ID ไม่ถูกต้อง
401
ไม่ได้รับอนุญาตการยืนยันตัวตนล้มเหลว API key ไม่ถูกต้องหรือขาดหายไป
สาเหตุทั่วไป:
- ขาด Authorization header
- Secret key ไม่ถูกต้อง
- ใช้ public key แทน secret key
404
ไม่พบCharge ID ไม่มีอยู่
สาเหตุทั่วไป:
- Charge ID ไม่ถูกต้อง
- Charge จากบัญชีอื่น
- ใช้ test key สำหรับ live charge (หรือในทางกลับกัน)
422
ไม่สามารถประมวลผลได้ไม่สามารถจับยอด charge ได้
สาเหตุทั่วไป:
- Charge ถูกจับยอดแล้ว
- Charge ไม่สามารถจับยอดได้ (หมดอายุหรือถูกย้อนกลับ)
- จำนวนเงินที่จับยอดเกินจำนวนเงินที่อนุมัติ
- การอนุมัติหมดอายุ (เกินกรอบเวลา 7 วัน)
5xx
ข้อผิดพลาดเซิร์ฟเวอร์เกิดข้อผิดพลาดฝั่งเซิร์ฟเวอร์ เกิดขึ้นไม่บ่อยแต่ควรจัดการอย่างเหมาะสม
วิธีจัดการ:
- ลองส่งคำขอใหม่ด้วย exponential backoff
- ตรวจสอบ status.omise.co สำหรับเหตุการณ์บริการ
- ดู การจัดการข้อผิดพลาด สำหรับคำแนะนำโดยละเอีย ด
ตัวอย่างโค้ด
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
curl https://api.omise.co/charges/chrg_test_5xuy4w91xqz7d1w9u0t/capture \
-X POST \
-u skey_test_5xuy4w91xqz7d1w9u0t:
require 'omise'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
charge = Omise::Charge.capture('chrg_test_5xuy4w91xqz7d1w9u0t')
import omise
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
charge = omise.Charge.capture('chrg_test_5xuy4w91xqz7d1w9u0t')
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
const charge = await omise.charges.capture('chrg_test_5xuy4w91xqz7d1w9u0t');
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
$charge = OmiseCharge::retrieve('chrg_test_5xuy4w91xqz7d1w9u0t');
$charge->capture();
Client client = new Client.Builder()
.secretKey("skey_test_5xuy4w91xqz7d1w9u0t")
.build();
Charge charge = client.charges().capture("chrg_test_5xuy4w91xqz7d1w9u0t")
.send();
var client = new Client("skey_test_5xuy4w91xqz7d1w9u0t");
var charge = await client.Charges.Capture("chrg_test_5xuy4w91xqz7d1w9u0t");
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"skey_test_5xuy4w91xqz7d1w9u0t",
)
charge, _ := client.CaptureCharge("chrg_test_5xuy4w91xqz7d1w9u0t", nil)
รหัสข้อผิดพลาดและผลลัพธ์
รหัสข้อผิดพลาดทั่วไป
| รหัส | คำอธิบาย | การแก้ไข |
|---|---|---|
not_found | Charge ID ไม่มีอยู่ | ตรวจสอบว่า charge ID ถูกต้อง |
already_captured | Charge ถูกจับยอดแล้ว | ตรวจสอบสถานะ charge ก่อนจับยอด |
not_capturable | ไม่สามารถจับยอด charge ได้ | ตรวจสอบว่าฟิลด์ capturable เป็น true |
capture_amount_too_high | จำนวนเงินเกินการอนุมัติ | ลดค่า capture_amount |
authorization_expired | การอนุมัติล่วงหน้าหมดอายุ (>7 วัน) | สร้าง charge ใหม่ |
สถานะ Charge หลังจับยอด
| ฟิลด์ | ก่อนจับยอด | หลังจับยอด |
|---|---|---|
capture | false | true |
paid | false | true |
capturable | true | false |
refundable | false | true |
paid_at | null | ISO 8601 timestamp |
ข้อมูลยืนยันตัวตน API
ลองใช้งาน
จำเป็น - 1 ฟิลด์
เพิ่มเติม - 2 ฟิลด์
IP ของคุณ:
...กำลังโหลด...