Signature อัลกอริทึมที่ใช้
#
1. รายละเอียดAPI Gateway จะตรวจสอบตัวตนที่เรียก API แต่ละรายการ และเซิร์ฟเวอร์จะตรวจสอบด้วยว่าพารามิเตอร์ที่ถูกเรียกนั้นถูกต้องหรือไม่ ดังนั้น HTTP request ในแต่ละรายการต้องมีข้อมูล signature หากมีการใช้ค่า signature ไม่ถูกต้อง รายการดังกล่าวจะถูกปฏิเสธการทำรายการ
API จะตรวจสอบตัวตนของร้านค้า โดยใช้โทเค็นที่กำหนดให้กับร้านค้า โทเค็นนั้นจะใช้เพื่อสร้าง signature ใน URL request HTTP และ signature ฝั่งเซิร์ฟเวอร์ ต้องเก็บเป็นความลับอย่าง
หากคุณเขียน HTTP request ด้วยตนเอง (แทนที่จะใช้ official SDK ที่ออกโดย ksher) คุณต้องเข้าใจอัลกอริทึม signature ต่อไปนี้
ขั้นตอนการสร้าง signature มีดังนี้:
- จัดเรียง request พารามิเตอร์ทั้งหมด (รวมถึงparam ใน query string แต่ยกเว้น "signature" และพารามิเตอร์ที่มีประเภท byte array) ให้เรียงสำดับตามชื่อพารามิเตอร์ในตาราง ASCII ตัวอย่างเช่น:
- concat key:value pairs เช่น '=' ':' ',' ที่เชื่อมระหว่างแต่ละตัวแปร (เฉพาะนอกสุดตัวแปรเท่านั้น ค่าอื่นเช่น "chanel":"alipay,wechat" ให้คง "alipay,wechat" เอาไว้) แล้วเชื่อมพารามิเตอร์ที่เรียงลำดับแล้ว เข้าด้วยกันเป็นข้อความ ตัวอย่างเช่น:
- เพิ่ม path API หน้าข้อความที่ต่อกัน ตัวอย่างเช่น เพิ่มชื่อ API "/test/api":
- Encode ข้อความที่เชื่อมกันในรูปแบบ UTF-8 และสร้าง digest โดยสร้าง signature อัลกอริทึม (โดยใช้ HMAC_SHA256) ตัวอย่างเช่น:
- แปลง digest เป็นรูปแบบเลขฐานสิบหก ตัวอย่างเช่น:
#
2. ตัวอย่างโปรดดูตัวอย่างด้านล่างเกี่ยวกับวิธีการคำนวณ signature ตาม token (secret key) API และพารามิเตอร์
#
2.1. PYTHON#
2.2. JAVA#
2.3. C#For the signature sample codes in other programming languages, refer to the source code of the official SDK.
#
3. ฉันจะหา token ได้ที่ไหน?คุณสามารถหา token (secret) สำหรับสร้าง signature ได้โดย login เข้าใช้เกตเวย์ API
ในตัวอย่างข้างต้น 186d6c953c90f39c2973e6dd2e110d4057194996ef08fb4b3338180517b509c7
คือ token.
#
4. วิธีการดีบัก signature?ใน sandbox สามารถดีบัก ได้ 2 วิธีคือ
#
4.1. DO_NOT_CHECKคุณสามารถปิดใช้งานการตรวจสอบ signature เพื่อทดสอบโดยตั้งค่าเป็น "DO_NOT_CHECK"
#
4.2. Echo Signature Modeinfo
ถ้า Echo Signature Mode
เปิดอยู่ API ทั้งหมดจะอยู่ใน echo โหมด ทำให้ทุก response สำหรับการเรียก API จะแสดงเฉพาะ signature ที่ถูกต้องและ string input ของ HMAC_SHA256 สำหรับการดีบัก
ภายใต้ Integration -> Configuration
เมนูของเกตเวย์ คุณสามารถเปิดหรือปิดการตรวจสอบ Signature ได้
เมื่อเปิดโหมดก Echo Signature ทุกๆ request ที่ส่งมายัง API จะถูกใช้ในการตรวจสอบ Signature Signature ที่คำนวณแล้ว และอักขระเดิมก่อนจะถูกแฮชจะถูกส่งกลับไปยังไคลเอ็นต์เพื่อช่วยร้านค้าในการตรวจสอบ Signature
ต่อไปนี้คือตัวอย่าง response จากเปิดโหมด Echo Signature
ใน note จะมี string ดั้งเดิมก่อนที่จะการดำเนินการ HMAC-SHA256 และมีค่าแฮชที่คำนวณได้ในช่อง reference