การเก็บข้อมูลกับโอมิเซะโดยใช้ Metadata API
ตามปกติแล้วในรายการรับชำระเงิน (charge object) จะมีการจัดเก็บข้อมูลพื้นฐานไว้อยู่แล้ว เช่น ราคา, สถานะของรายการ, สกุลเงินที่ผู้ซื้อชำระเข้ามา เป็นต้น ซึ่งที่ผ่านมามีผู้ใช้งานโอมิเซะจำนวนมากถามถึงคุณสมบัติการทำงานที่จะช่วยให้ร้านค้าสามารถเก็บข้อมูลเฉพาะของรายการไว้กับ charge object ได้เพิ่มขึ้น เช่น จัดเก็บรายการคำสั่งซื้อ (Order ID) หรือ จัดเก็บหมายเลข tracking number เพื่อนำมาใช้ในการอ้างอิงข้อมูล หรือกระทบยอด (reconcile) ได้อย่างสะดวกมากขึ้นในภายหลัง เราจึงได้พัฒนาเป็น Metadata API ออกมา
Metadata สามารถเก็บข้อมูลอะไรได้บ้าง?
ในส่วนของขอบเขตข้อมูลที่สามารถจัดเก็บได้นั้น ร้านค้าสามารถกำหนดเองได้ ไม่มีข้อจำกัด เราขอยกตัวอย่างการนำ Metadata API ไปใช้ ดังนี้:
- จัดเก็บรายการคำสั่งซื้อ (Order ID) ไว้กับรายการรับชำระเงิน (charge object) เพื่อให้ง่ายต่อการกระทบยอด (reconcile) ในภายหลัง
- เก็บข้อมูลการจัดส่ง หรือระบุรุ่นของสินค้าไว้กับรายการรับชำระเงิน (charge object) ทำให้สามารถติดตามตรวจสอบรายการผ่านแดชบอร์ดของโอมิเซะได้เลย
- สามารถจัดเก็บข้อมูลที่จำเป็นต่อการทำงานของฝ่ายบัญชี ให้เจ้าหน้าที่ในแผนกเรียกดูข้อมูลทั้งหมดจากที่เดียว ช่วยให้ทำงานได้เร็วขึ้น
ก่อนการพัฒนา Metadata API ออกมา เราให้ผู้ใช้งานเพิ่ม custom JSON ลงใน description field ของ charge object แต่เนื่องจากมีผู้ใช้งานเยอะขึ้นเรื่อย ๆ เราจึงเห็นว่าควรมีโซลูชันที่สะดวกกว่านี้ให้ทุกคนได้ใช้งานกัน เราได้เพิ่ม metadata key เข้าไปใน Charge และ Customer API แล้ว โดย key นี้ต้องใส่เป็น JSON Hash ส่วนค่าข้างในสามารถกำหนดได้ตามต้องการ
ตัวอย่าง PHP
<?php
$charge = OmiseCharge::create(array(
'description' => 'Payment for Order #3947',
'currency' => 'thb',
'amount' => 10000,
'card' => 'tokn_test_58307zpezucfvb6u1ty',
'metadata' => array(
'order_id' => '3947'
)
));
ตัวอย่างข้อมูล JSON ที่ตอบกลับ
{
"object": "charge",
"description": "Payment for Order #3947",
"metadata": {
"order_id": "3947"
},
"...": "..."
}
ใช้ Metadata API แล้วเป็นอย่างไร มี use case อื่นๆ ที่น่าสนใจ หรือหากพบ bug สามารถพูดคุยแนะนำเข้ามาได้เลยที่ Gitter
บทความอื่นๆ
ขอบคุณ!
ขอบคุณที่ลงทะเบียนกับโอมิเซะ