ข้ามไปที่เนื้อหา

การชำระเงิน PG แบบง่าย

'การชำระเงิน PG แบบง่าย' ใช้เมื่อ App Server ดึงข้อมูลวิธีการชำระเงินของ PG จากนั้นสร้าง UI สำหรับเลือกวิธีการชำระเงินโดยตรงภายในหน้าเว็บร้านค้า แล้วเรียกหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ด้วยวิธีที่ผู้ใช้เลือก

หน้านี้อธิบายวิธีเรียก payment/methods และ payment/requests ตามลำดับ

ลำดับการนำไปใช้ที่แนะนำมีดังนี้

  1. ก่อนอื่น ให้ดึงข้อมูลวิธีการชำระเงินเพื่อสร้างหน้าจอเลือกวิธีการชำระเงินบนหน้าเว็บร้านค้า
  2. จากนั้น เมื่อผู้ใช้กด ชำระเงิน ให้เปิดหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ที่เลือก

1. ภาพรวม

ลำดับการเชื่อมต่อ

การชำระเงิน PG แบบง่ายจะจัดการขั้นตอนการเลือกวิธีการชำระเงินภายในหน้าเว็บร้านค้า โดยจะเปิดหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG หลังจากที่ผู้ใช้เลือกวิธีการชำระเงินแล้วเท่านั้น

แนะนำให้เชื่อมต่อตามลำดับดังนี้

  1. บนหน้าเว็บร้านค้า ผู้ใช้กดปุ่ม ซื้อ
  2. App Server เรียก API ดึงข้อมูลวิธีการชำระเงิน
  3. หน้าเว็บร้านค้าสร้างและแสดง UI สำหรับเลือกวิธีการชำระเงินด้วยค่าที่ตอบกลับมา
  4. ผู้ใช้เลือกวิธีการชำระเงินใน UI สำหรับเลือกวิธีการชำระเงิน แล้วกด ชำระเงิน
  5. App Server เรียก API คำขอชำระเงิน
  6. หน้าเว็บร้านค้าเปิดหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ที่เลือกตามผลลัพธ์การตอบกลับ
  7. ผู้ใช้ชำระเงินให้เสร็จสิ้นในหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG

การเตรียมการล่วงหน้า

ก่อนเชื่อมต่อการชำระเงิน PG แบบง่าย ให้เตรียมค่าต่อไปนี้

รายการ คำอธิบาย
คีย์การรับรอง Hive Bearer token ที่ใส่ใน Authorization header ใช้ค่าที่อยู่ใน Hive Console > App Center > การจัดการโปรเจกต์ > รายการเกม - เลือกเกมของบริษัทเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน
app_id App ID ของแอปที่จะใช้ดำเนินการชำระเงิน ใช้ค่าที่อยู่ใน Hive Console > App Center > การจัดการโปรเจกต์ > รายการเกม - เลือกเกมของบริษัทเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน
server_id ค่าระบุตัวตนของ App Server ที่จะใช้ดำเนินการชำระเงิน ใช้ค่าที่อยู่ใน Hive Console > App Center > การจัดการโปรเจกต์ > รายการเกม - เลือกเกมของบริษัทเกม > รายละเอียดเกม > App Server
market_pid Product ID ของสินค้าที่จะชำระเงิน ใช้ค่าที่ลงทะเบียนไว้ใน Hive Console > Billing > การจัดการสินค้า > ลงทะเบียนสินค้า โดยค่านี้จะตั้งค่าตาม Product ID ที่เตรียมไว้ใน Store Console แต่ละแห่งก่อนลงทะเบียนสินค้า
player_id Player ID ของผู้ใช้ปัจจุบันที่กำลังดำเนินการชำระเงิน ใช้ค่าที่ App Server ตรวจสอบจากเซสชันการล็อกอินหรือข้อมูลผู้ใช้ของเกม
market_id Market ID ที่ใช้ในการชำระเงิน PG แบบง่าย ใช้ค่า 15 แบบคงที่

2. การดึงข้อมูลวิธีการชำระเงิน

API ดึงข้อมูลวิธีการชำระเงินเป็น API สำหรับดึงรายการวิธีการชำระเงิน PG ที่สามารถใช้งานได้ในปัจจุบันสำหรับสินค้าที่ระบุ ให้เรียก API นี้ก่อนเพื่อสร้างหน้าจอเลือกวิธีการชำระเงินภายในหน้าเว็บร้านค้า API นี้เพียงอย่างเดียวจะยังไม่เริ่มต้นการชำระเงิน

ข้อมูลคำขอ

เอนด์พอยต์

เอนด์พอยต์ที่ใช้เรียกมีดังนี้

รายการ คำอธิบาย
Production URL https://hiveiap.qpyou.cn/payment/methods
Sandbox URL https://sandbox-hiveiap.qpyou.cn/payment/methods
HTTP Method POST
Data Format JSON

HTTP header

HTTP header มีดังนี้

รายการ คำอธิบาย
Content-Type application/json;charset=utf-8
Authorization Bearer

Bearer token ที่ใส่ใน Authorization header คือคีย์การรับรอง Hive ที่อยู่ใน Hive Console > App Center > การจัดการโปรเจกต์ > รายการเกม - เลือกเกมของบริษัทเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน

Request body

ในตารางด้านล่าง กำหนดให้ค่าที่จำเป็นเป็น M และค่าทางเลือกเป็น O

ชื่อ ประเภท จำเป็นหรือไม่ คำอธิบาย
language String M ค่าภาษาของเกมที่จะแสดงวิธีการชำระเงิน ส่งภาษาที่กำลังใช้อยู่ใน App Client ในรูปแบบ ISO 639-1 Alpha-2
country String M รหัสประเทศเป้าหมายที่จะใช้ดึงข้อมูลวิธีการชำระเงิน ส่งประเทศของผู้ใช้ที่จะดำเนินการชำระเงินในรูปแบบรหัส 2 ตัวอักษรตาม ISO 3166-1
app_id String M App ID ของแอปที่จะใช้ดำเนินการชำระเงิน ส่งค่าที่ตรวจสอบไว้ในส่วนการเตรียมการล่วงหน้า
market_pid String M Product ID ของสินค้าที่จะชำระเงิน ส่งค่าที่ตรวจสอบไว้ในส่วนการเตรียมการล่วงหน้า
market_id Integer O Market ID ใช้ค่า 15 แบบคงที่
fixed_currency String O หากต้องการแสดงเฉพาะสกุลเงินที่กำหนด ให้ป้อนรหัสสกุลเงิน ISO 4217 หากไม่ได้ตรึงสกุลเงิน ให้ใช้ค่า data.currency ในการตอบกลับในขั้นตอนถัดไป

ข้อมูลการตอบกลับ

ในตารางด้านล่าง กำหนดให้ค่าที่จำเป็นเป็น M และค่าทางเลือกเป็น O

ชื่อ ประเภท จำเป็นหรือไม่ คำอธิบาย
result String M สตริงผลลัพธ์ของ API หากตอบกลับสำเร็จ ให้ใช้ข้อมูลวิธีการชำระเงินใน data สำหรับขั้นตอนถัดไป
code Integer M รหัสผลลัพธ์ของ API ใช้เพื่อแยกแยะความสำเร็จและสาเหตุของความล้มเหลว
message String M ข้อความผลลัพธ์ของ API ใช้ตรวจสอบสาเหตุเมื่อเกิดความล้มเหลว
data Object M ชุดข้อมูลวิธีการชำระเงินที่ส่งมาเมื่อการดึงข้อมูลสำเร็จ
data.agency_company_code Integer M รหัสบริษัทผู้ให้บริการตัวกลางชำระเงิน PG หลังจากผู้ใช้เลือกวิธีการชำระเงินแล้ว ให้ส่งค่านี้ไปยัง agency_company_code ของ API คำขอชำระเงิน
data.country String M รหัสประเทศที่ใช้กับผลลัพธ์การดึงข้อมูล ให้ใช้รหัสประเทศเดียวกันนี้กับ API คำขอชำระเงิน
data.currency String M สกุลเงินที่ใช้กับผลลัพธ์การดึงข้อมูล ส่งค่านี้ไปยัง currency ของ API คำขอชำระเงิน
data.email_agree_text Array O รายการข้อความยินยอมที่จะแสดงให้ผู้ใช้เมื่อเลือกวิธีการชำระเงินที่ต้องกรอกอีเมล
data.email_agree_text[].agree_id Integer O ID ของข้อความยินยอม ใช้เพื่อแยกแยะรายการยินยอม
data.email_agree_text[].title String O ชื่อเรื่องการยินยอมที่จะแสดงให้ผู้ใช้
data.email_agree_text[].description String O ข้อความรายละเอียดการยินยอมที่จะแสดงให้ผู้ใช้
data.available_payment_methods Array M รายการวิธีการชำระเงินที่สามารถใช้ได้ในปัจจุบันสำหรับสินค้านี้ ในหน้าจอชำระเงิน ให้แสดงเฉพาะรายการนี้ และใช้ฟิลด์ย่อยของรายการที่ผู้ใช้เลือกในขั้นตอนถัดไป
data.available_payment_methods[].agency String M รหัสผู้ให้บริการ PG ของวิธีการชำระเงินที่เลือก ส่งไปยัง agency ของ API คำขอชำระเงิน
data.available_payment_methods[].agency_id Integer M ค่าระบุผู้ให้บริการ PG ใช้เพื่อแยกแยะวิธีการชำระเงินหรือตรวจสอบ internal log
data.available_payment_methods[].method String M รหัสวิธีการชำระเงินที่เลือก ส่งไปยัง method ของ API คำขอชำระเงิน
data.available_payment_methods[].method_id Integer M ค่าระบุวิธีการชำระเงิน ใช้เพื่อแยกแยะวิธีการชำระเงิน
data.available_payment_methods[].requires_email Boolean M หากเป็น true ต้องรับอีเมลของผู้ใช้ก่อนเรียกคำขอชำระเงิน แล้วส่งผ่านฟิลด์ email
data.available_payment_methods[].priority Integer M ค่าลำดับความสำคัญในการแสดงวิธีการชำระเงิน ใช้สำหรับจัดเรียงในหน้าจอชำระเงิน
data.available_payment_methods[].display_name String M ชื่อวิธีการชำระเงินที่จะแสดงให้ผู้ใช้เห็นบนหน้าจอชำระเงิน
data.available_payment_methods[].icon_url String O URL ไอคอนของวิธีการชำระเงินที่จะแสดงร่วมกันบนหน้าจอชำระเงิน

การใช้ค่าการตอบกลับ

ให้ใช้ค่าการตอบกลับดังนี้

  1. ใช้ค่า display_name, icon_url, priority ของ data.available_payment_methods เพื่อสร้าง UI สำหรับเลือกวิธีการชำระเงินภายในหน้าเว็บร้านค้า
  2. เมื่อแสดงวิธีการชำระเงินที่ requires_email เป็น true ให้แสดงข้อความ email_agree_text ร่วมด้วย และรับอีเมลจากผู้ใช้
  3. เมื่อผู้ใช้เลือกวิธีการชำระเงิน ให้ส่งค่า data.agency_company_code, data.currency, data.available_payment_methods[].agency, data.available_payment_methods[].method, data.available_payment_methods[].requires_email ไปเป็นค่าป้อนเข้าในขั้นตอนถัดไปตามเดิม

ตัวอย่างคำขอ

curl -L -v \
 -d '{
   "language": "ko",
   "country": "KR",
   "app_id": "com.com2us.hivesdk.normal.freefull.google.global.android.common",
   "market_pid": "com.com2us.hivesdk.normal.freefull.google.global.android.common.item01",
   "market_id": 15,
   "fixed_currency": "KRW"
 }' \
 -H "Content-Type: application/json;charset=utf-8" \
 -H "Authorization: Bearer {Bearer 토큰}" \
 https://sandbox-hiveiap.qpyou.cn/payment/methods

ตัวอย่างการตอบกลับ

{
  "result": "success",
  "code": 0,
  "message": "success",
  "data": {
    "agency_company_code": 1,
    "country": "KR",
    "currency": "KRW",
    "email_agree_text": [
      {
        "agree_id": 1,
        "title": "(필수) 개인정보 수집∙이용 동의",
        "description": "Com2uS은(는) “결제 대행 업체 전송”을 위해 이메일주소를 수집합니다.<br>
내용을 자세히 읽으신 후 동의 여부를 결정해 주시기 바랍니다.<br><br>
- 수집∙이용 목적 : <span class=\"point_color\">결제 대행 업체 전송</span><br>
- 수집 항목 : 이메일주소<br>
- 보유∙이용 기간 : <span class=\"point_color\">결제 대행 업체 전송 목적으로만 수집하며 별도로 저장·보유하지 않습니다.</span><br><br>
※ 개인정보 수집∙이용에 대한 동의를 거부할 권리가 있습니다.<br>
단, 동의를 거부할 경우 해당 결제 대행 업체를 통한 결제가 제한됩니다."
      },
      {
        "agree_id": 2,
        "title": "(필수) 개인정보 제3자 제공 동의",
        "description": "Com2uS은(는) 다음과 같이 이메일주소를 제3자에게 제공하고 있습니다.<br>
내용을 자세히 읽으신 후 동의 여부를 결정해 주시기 바랍니다.<br><br>
- 제공받는 자 : <strong>결제 대행 업체 (PayPal, Terminal3)</strong><br>
- 이용 목적 : <span class=\"point_color\">부정/의심 거래 방지 및 고객 지원</span><br>
- 제공 항목 : 이메일주소<br>
- 보유∙이용 기간 : <span class=\"point_color\">가맹점과의 계약 종료 후 최대 5년</span><br><br>
※ 개인정보 제3자 제공에 대한 동의를 거부할 권리가 있습니다.<br>
단, 동의를 거부할 경우 해당 결제 대행 업체를 통한 결제가 제한됩니다."
      }
    ],
    "available_payment_methods": [
      {
          "agency": "html5_inicis",
          "agency_id": 9,
          "method": "card",
          "method_id": 1,
          "requires_email": false,
          "priority": 1,
          "display_name": "Credit Card",
          "icon_url": "https://hive-fn.qpyou.cn/hiveiap/hivestore/test/img/pg_icon/credit_card.png?ver=2.4.32"
      },
      {
          "agency": "html5_inicis",
          "agency_id": 9,
          "method": "naverpay",
          "method_id": 17,
          "requires_email": true,
          "priority": 10,
          "display_name": "NAVER Pay",
          "icon_url": "https://hive-fn.qpyou.cn/hiveiap/hivestore/test/img/pg_icon/5169459511710849342.png?ver=2.4.32"
      }
    ]
  }
}

3. การเรียกการชำระเงิน

API คำขอชำระเงินเป็น API ที่ใช้เปิดหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ที่เกี่ยวข้อง โดยใช้วิธีการชำระเงินที่ผู้ใช้เลือกไว้แล้วภายในหน้าเว็บร้านค้า คุณต้องนำค่าที่ได้รับจาก API ดึงข้อมูลวิธีการชำระเงินกลับมาใช้ซ้ำ

ข้อควรระวังมีดังนี้

  1. API นี้จะไม่แสดงหน้าจอเลือกวิธีการชำระเงินขึ้นมาอีกครั้ง
  2. API นี้ไม่ได้ยืนยันการชำระเงินเสร็จสมบูรณ์ในตัวเอง

ข้อมูลคำขอ

เอนด์พอยต์

เอนด์พอยต์ที่ใช้เรียกมีดังนี้

รายการ คำอธิบาย
Production URL https://hiveiap.qpyou.cn/payment/requests
Sandbox URL https://sandbox-hiveiap.qpyou.cn/payment/requests
HTTP Method POST
Data Format JSON

HTTP header

HTTP header มีดังนี้

รายการ คำอธิบาย
Content-Type application/json;charset=utf-8
Authorization Bearer

Bearer token ที่ใส่ใน Authorization header คือคีย์การรับรอง Hive ที่อยู่ใน Hive Console > App Center > การจัดการโปรเจกต์ > รายการเกม - เลือกเกมของบริษัทเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน

Request body

ในตารางด้านล่าง กำหนดให้ค่าที่จำเป็นเป็น M และค่าทางเลือกเป็น O

ชื่อ ประเภท จำเป็นหรือไม่ คำอธิบาย
language String M ส่งค่าภาษาของเกมที่ใช้ใน API ดึงข้อมูลวิธีการชำระเงินเหมือนเดิม
country String M ส่งรหัสประเทศที่ใช้ใน API ดึงข้อมูลวิธีการชำระเงินเหมือนเดิม
currency String M ส่งค่า data.currency จากการตอบกลับของ API ดึงข้อมูลวิธีการชำระเงิน
app_id String M ส่งค่าเดียวกับ App ID ที่ใช้ใน API ดึงข้อมูลวิธีการชำระเงิน
server_id String M ส่ง Server ID ที่ตรวจสอบไว้ในส่วนการเตรียมการล่วงหน้า
market_id Integer M Market ID โดยให้ใช้ค่า 15 แบบคงที่เช่นเดียวกับ API ดึงข้อมูลวิธีการชำระเงิน
market_pid String M ส่งค่าเดียวกับ Product ID ที่ใช้ใน API ดึงข้อมูลวิธีการชำระเงิน
quantity Integer M จำนวนที่จะซื้อในคำขอชำระเงินครั้งนี้ ส่งจำนวนที่ผู้ใช้เลือกในเกม
agency_company_code Integer M ส่งค่า data.agency_company_code จากการตอบกลับของ API ดึงข้อมูลวิธีการชำระเงิน
method String M ส่งค่า data.available_payment_methods[].method ของวิธีการชำระเงินที่ผู้ใช้เลือก
agency String M ส่งค่า data.available_payment_methods[].agency ของวิธีการชำระเงินที่ผู้ใช้เลือก
player_id String M ส่ง Player ID ของผู้ใช้ปัจจุบันที่ตรวจสอบไว้ในส่วนการเตรียมการล่วงหน้า
vid_type String M ค่าของเวอร์ชัน SDK โดยใช้ค่า v4 แบบคงที่
email String O เมื่อค่า requires_email ของวิธีการชำระเงินที่เลือกเป็น true ให้ส่งอีเมลที่รับจากผู้ใช้
sandbox Boolean O เมื่อทดสอบด้วย Sandbox URL ให้ใช้ true ในสภาพแวดล้อมใช้งานจริง ให้ไม่ส่งค่านี้หรือใช้ค่าที่เหมาะสมกับสภาพแวดล้อม

ข้อมูลการตอบกลับ

API คำขอชำระเงินไม่ใช่ API ที่ยืนยันผลสำเร็จของการชำระเงินขั้นสุดท้าย หากคำขอได้รับการประมวลผลตามปกติ ให้ใช้ผลลัพธ์ที่ตอบกลับมาเพื่อเปิดหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ที่เลือก

การใช้ค่าการตอบกลับ

ให้ใช้ค่าการตอบกลับดังนี้

  1. ใช้ผลลัพธ์การตอบกลับเพื่อเปิดหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ที่เลือกจากหน้าเว็บร้านค้า
  2. อย่าตัดสินว่าการชำระเงินเสร็จสมบูรณ์จากการตอบกลับนี้เพียงอย่างเดียว ขั้นตอนนี้เป็นขั้นตอนสำหรับเปิดหน้าต่างการชำระเงิน
  3. หากต้องการตรวจสอบผลการชำระเงินจริง ให้ดู การดูประวัติการชำระเงินที่เสร็จสมบูรณ์ และ การตรวจสอบใบเสร็จ IAP v4

ตัวอย่างคำขอ

curl -L -v \
 -d '{
   "language": "ko",
   "country": "KR",
   "currency": "KRW",
   "app_id": "com.com2us.hivesdk.windows.microsoftstore.global.normal",
   "server_id": "global",
   "market_id": 15,
   "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
   "quantity": 1,
   "agency_company_code": 1,
   "method": "kakaopay",
   "agency": "html5_inicis",
   "player_id": "123456789",
   "vid_type": "v4",
   "email": "bobong@com2us.com",
   "sandbox": true
 }' \
 -H "Content-Type: application/json;charset=utf-8" \
 -H "Authorization: Bearer {Bearer 토큰}" \
 https://sandbox-hiveiap.qpyou.cn/payment/requests

4. ขั้นตอนถัดไป

แม้ว่าผู้ใช้จะชำระเงินเสร็จแล้วในหน้าต่าง WebView การชำระเงินของผู้ให้บริการ PG ก็ไม่ควรดำเนินการมอบไอเท็มจาก App Client ทันที ข้อมูลการชำระเงินเสร็จสิ้นจะถูกส่งจาก PG ไปยังเซิร์ฟเวอร์ Hive IAP v4 ดังนั้น App Server จึงต้องทำการตรวจสอบต่อเนื่อง

ให้ดำเนินการต่อดังนี้

  1. เรียก การดูประวัติการชำระเงินที่เสร็จสมบูรณ์ เพื่อดึงข้อมูลการชำระเงินที่บันทึกไว้
  2. หากต้องมีการตรวจสอบเพิ่มเติมเพื่อยืนยันว่าการชำระเงินเสร็จสมบูรณ์ตามปกติ ให้ใช้ purchase_bypass_info จากการตอบกลับของการดึงข้อมูลเพื่อดำเนินการ การตรวจสอบใบเสร็จ IAP v4