คู่มือการเชื่อมต่อ DMM GAMES¶
หากต้องการเชื่อมต่อ DMM GAMES กับแอป ต้องทำสัญญาล่วงหน้าก่อน หลังจากทำสัญญาแล้ว โปรดอ้างอิงคู่มือนี้เพื่อดำเนินการติดตั้งใช้งาน
ขอบเขตการรองรับการเชื่อมต่อ DMM GAMES ตามสภาพแวดล้อมการเรียกใช้แอปมีดังนี้
- PC: รองรับทั้งการยืนยันตัวตนและการชำระเงินสำหรับการเปิดให้บริการบนสโตร์
- มือถือ: รองรับเฉพาะการเชื่อมต่อวิธีการยืนยันตัวตนสำหรับเข้าสู่ระบบด้วย IdP
การเตรียมความพร้อม¶
1. ออกข้อมูลรับรองและตรวจสอบค่าคีย์ใน DMM Developer Site¶
- PC: ตรวจสอบค่าคีย์ 3 รายการที่ออกให้จาก DMM ClientGame Developer Site
-
มือถือ: ออกข้อมูลรับรอง DMM
- ลงทะเบียนข้อมูลแอปมือถือ เช่น ชื่อแพ็กเกจและข้อมูลแอป ใน DMM GAMES Developer Console ก่อน จากนั้นจึงออกข้อมูลรับรองด้านล่าง การยืนยันตัวตน DMM ใช้ข้อมูลรับรอง 2 ประเภท ได้แก่ OpenSocial และ AuthSDK
ประเภท คีย์ คำอธิบาย OpenSocial appIdOpenSocial App ID เป็นค่า opensocial_app_idของ makeRequest และใช้ในการตรวจสอบลายเซ็นOpenSocial consumerKey,consumerSecretข้อมูลรับรอง consumer สำหรับการลงลายเซ็น ตรวจสอบได้ใน DMM Console หลังจากลงทะเบียนแอป AuthSDK clientId,clientSecret,secretKeyข้อมูลรับรองการเข้าสู่ระบบ OAuth2 ใช้งานโดย DMM AuthSDK ฝั่งอุปกรณ์ และไม่ถูกส่งไปยัง Hive Server ต้องยื่นคำขอแยกกับ DMM เพื่อออกข้อมูล AuthSDK redirectUriScheme สำหรับ callback ของ OAuth2 DMM จะผูกค่านี้กับ clientIdและมอบให้พร้อมกันเมื่อยื่นคำขอ
2. เตรียม App ID¶
- ใน App Center > App ID Management > New App ID ให้สร้าง App ID ให้ตรงกับ OS และสโตร์ สำหรับสภาพแวดล้อม PC ให้เลือก OS เป็น Windows และเลือกสโตร์เป็น DMM GAMES
- ตัวอย่าง App ID: com.[ชื่อบริษัท].[ชื่อโปรเจกต์].windows.dmm
3. ตั้งค่าการยืนยันตัวตน¶
- เพื่อเสริมความปลอดภัยของการยืนยันตัวตนระหว่างบริการ ต้องออก Security Key ใน Hive Console > App Center > Security Key Settings
- สำหรับการตั้งค่าการยืนยันตัวตน ให้ลงทะเบียน Store Key และตั้งค่าการแสดง IdP ใน Authentication > Login Settings
4. ตั้งค่าการชำระเงิน¶
- สำหรับการตั้งค่าการชำระเงิน ให้ลงทะเบียน Store Key ใน Billing > Payment Settings > Store Settings
การติดตั้งใช้งานการเข้าสู่ระบบ DMM¶
การเชื่อมต่อสภาพแวดล้อม PC (สภาพแวดล้อม DMM GAME PLAYER)¶
ติดตั้งใช้งานโดยอ้างอิง เข้าสู่ระบบ/ออกจากระบบ
Warning
อย่าเรียกใช้แอปหากไม่มีพารามิเตอร์การเรียกใช้
หากไม่ได้เรียกใช้ผ่าน DMM GAME PLAYER และไม่ได้รับพารามิเตอร์การเรียกใช้ viewer_id, onetime_token อย่าเรียกใช้แอปและให้จัดการโดยการปิดแอป เป็นต้น สำหรับรายละเอียดเกี่ยวกับวิธีส่งพารามิเตอร์ โปรดดูนโยบายบริการ DMM GAMES PLAYER ใน DMM GAMES Developer Support
เมื่อสภาพแวดล้อมการเรียกใช้แอปเป็น PC (DMM GAME PLAYER) ให้พิจารณารายการต่อไปนี้สำหรับการเชื่อมต่อการเข้าสู่ระบบ DMM
- Hive SDK รับพารามิเตอร์การเรียกใช้
viewer_id,onetime_tokenที่ DMM GAME PLAYER Launcher ส่งมา และดำเนินการเข้าสู่ระบบบัญชี DMM โดยไม่มี UI เข้าสู่ระบบแยกต่างหาก ดังนั้นแอปไม่จำเป็นต้องติดตั้งใช้งาน flow เข้าสู่ระบบเฉพาะสำหรับสภาพแวดล้อม DMM แต่ให้เชื่อมต่อกระบวนการเข้าสู่ระบบบัญชี DMM - การเข้าสู่ระบบ DMM ดำเนินการด้วยเมธอดเข้าสู่ระบบแบบ implicit
AuthV4.Helper.signInหรือAuthV4.signIn(ProviderType.DMM)เมื่อเข้าสู่ระบบสำเร็จ เซสชันเข้าสู่ระบบอัตโนมัติจะถูกบันทึก และสามารถเข้าสู่ระบบภายหลังด้วยAuthV4.signIn(ProviderType.Auto)ได้เช่นกัน ตรวจสอบproviderUserIdตามตัวระบุผู้ใช้viewer_idในข้อมูล DMM provider ของผลลัพธ์การเข้าสู่ระบบPlayerInfo - หากเรียกใช้ผ่าน DMM GAME PLAYER และได้รับพารามิเตอร์จาก Launcher การเข้าสู่ระบบแบบ implicit จะทำงานด้วยบัญชี DMM เสมอโดยไม่มีข้อจำกัดเฉพาะครั้งแรก และไม่ใช้
showSignInซึ่งเป็น UI เข้าสู่ระบบแบบ explicit สำหรับพฤติกรรมการเข้าสู่ระบบแบบ implicit ทั่วไปบน Windows โปรดดูพฤติกรรมการเข้าสู่ระบบแบบ implicit: PC - โทเคนจัดการ
onetime_tokenมีอายุ 90 นาทีตามนโยบาย DMM Hive SDK จะต่ออายุโดยอัตโนมัติภายใน จึงไม่จำเป็นต้องติดตั้งใช้งานแยกต่างหาก อย่างไรก็ตาม หากการต่ออายุล้มเหลว เช่น เครือข่ายขาดการเชื่อมต่อเป็นเวลานานจนโทเคนหมดอายุโดยสมบูรณ์ SDK จะไม่สามารถกู้คืนได้ด้วยตนเอง ให้เริ่มแอปใหม่เพื่อรับโทเคนใหม่ การเรียก DMM API เช่น การชำระเงิน จำเป็นต้องมีโทเคนจัดการที่ยังใช้งานได้ - เมื่อเรียกใช้ผ่าน DMM GAME PLAYER อย่าใช้เมธอดออกจากระบบ
signOutเนื่องจาก DMM ทำงานด้วยการเข้าสู่ระบบอัตโนมัติผ่าน Launcher จึงไม่ใช้showSignInซึ่งเป็น UI เลือก IdP เช่นกัน
การยืนยันตัวตน DMM เป็นวิธีการยืนยันตัวตนที่ใช้เมื่อผู้ใช้เรียกใช้แอปผ่าน DMM GAME PLAYER บน Windows โดยทำงานเป็นการเข้าสู่ระบบอัตโนมัติผ่าน Launcher และไม่แสดงในรายการเลือก IdP ของ UI เข้าสู่ระบบแบบ explicit
การเชื่อมต่อสภาพแวดล้อมมือถือ¶
การเข้าสู่ระบบ DMM บนมือถือใช้งานด้วยการเรียก AuthV4.signIn(ProviderType.DMM) เช่นเดียวกับ IdP อื่น ๆ เช่น Google, Apple โดย provider จะจัดการการเริ่มต้น DMM SDK การเข้าสู่ระบบ และการตรวจสอบลายเซ็นภายใน
ตั้งค่าคีย์ใน hive_config.xml¶
อ้างอิงโค้ดตัวอย่างด้านล่างและกรอกค่าในแท็ก providers ของไฟล์ hive_config.xml จากตัวอย่าง Sandbox และ Service ให้ใช้เฉพาะบล็อก developmentMode ของสภาพแวดล้อมที่ใช้งาน
<!-- การตั้งค่า Sandbox -->
<properties>
<!-- ละเว้นการตั้งค่าทั่วไปของ Hive SDK -->
<!-- การตั้งค่าการยืนยันตัวตน Hive SDK: START -->
<providers>
<!-- เข้าสู่ระบบด้วย DMM (DMM) -->
<dmm appId="123456" developmentMode="sandbox" redirectUri="app-redirect-url" consumerKeySandbox="abcdefghijklmnop" consumerSecretSandbox="abcdefghijklmnopabcdefghijklmnop" />
</providers>
<!-- การตั้งค่าการยืนยันตัวตน Hive SDK: END -->
</properties>
<!-- การตั้งค่า Service -->
<properties>
<!-- ละเว้นการตั้งค่าทั่วไปของ Hive SDK -->
<!-- การตั้งค่าการยืนยันตัวตน Hive SDK: START -->
<providers>
<!-- เข้าสู่ระบบด้วย DMM (DMM) -->
<dmm appId="123456" developmentMode="service" redirectUri="app-redirect-url" consumerKey="abcdefghijklmnop" consumerSecret="abcdefghijklmnopabcdefghijklmnop" />
</providers>
<!-- การตั้งค่าการยืนยันตัวตน Hive SDK: END -->
</properties>
รายการคีย์ hive_config.xml (Android, iOS) มีดังนี้
| คีย์ | ค่า | จำเป็นเมื่อ |
|---|---|---|
| appId | ตัวระบุแอป | เสมอ |
| developmentMode | sandbox หรือ service | เสมอ |
| consumerKey | consumer key | เมื่อเป็น service |
| consumerSecret | consumer secret | เมื่อเป็น service |
| consumerKeySandbox | consumer key | เมื่อเป็น sandbox |
| consumerSecretSandbox | consumer secret | เมื่อเป็น sandbox |
| redirectUri | redirect url ที่ตั้งค่าไว้ในแอป | เสมอ |
| adult | true หรือ false | เมื่อเป็น iOS |
ข้อควรพิจารณาเกี่ยวกับการตั้งค่า secretKey, clientId, clientSecret มีดังนี้
- ให้ตั้งค่า
secretKey,clientId,clientSecretทั้งสามค่าผ่าน APIsetConfigurations() - ข้อมูลที่ตั้งค่าด้วย API
setConfigurations()จะคงอยู่เฉพาะในหน่วยความจำ runtime จึงต้องเรียกใช้ทุกครั้งที่เปิดแอป - แม้จะมีค่าที่ตั้งไว้ในไฟล์ hive_config.xml ค่าที่ตั้งผ่าน API
setConfigurations()ขณะ runtime จะมีลำดับความสำคัญสูงกว่าและเขียนทับค่าเดิม -
สำหรับการตั้งค่าคีย์ลับผ่าน API
setConfigurations()โปรดดูโค้ดตัวอย่างด้านล่าง
การตั้งค่า Android DMM IdP¶
เพิ่มไลบรารีเข้าสู่ระบบ DMM โดยอ้างอิง เพิ่ม Android IdP จากนั้นตั้งค่า Android DMM IdP ตามลำดับด้านล่าง
-
ตั้งค่า redirectUri(scheme)
redirect_uriเป็น custom scheme เช่นcomXXX://authและต้องส่งพร้อมกับการสมัครclientIdเพื่อรับการรับรองจาก DMM ก่อนใช้งาน เนื่องจากค่านี้ผูกกับclientIdหากใช้ค่าที่ไม่ได้รับการรับรอง จะเกิดข้อผิดพลาด DMME210019 (error_redirect_uri_unavailable)ขณะเข้าสู่ระบบใส่ redirect scheme ใน build.gradle
-
ตั้งค่า Gradle dependencies และ repository
เพิ่ม DMM Maven repository ใน
3. ติดตั้งใช้งานโดยอ้างอิง เข้าสู่ระบบ/ออกจากระบบdependencyResolutionManagement { repositories }ของ settings.gradle ที่ root เนื่องจากการประกาศ Gradle repository ไม่ส่งต่อกัน หากไม่ได้ประกาศในการ build ของแอป การ resolve DMM SDK (link-id-sdk,AuthSDK) จะล้มเหลว
การตั้งค่า iOS DMM IdP¶
เพิ่มไลบรารีเข้าสู่ระบบ DMM โดยอ้างอิง เพิ่ม iOS IdP จากนั้นติดตั้งใช้งานโดยอ้างอิง เข้าสู่ระบบ/ออกจากระบบ
การติดตั้งใช้งานการชำระเงิน DMM¶
DMM เป็นวิธีชำระเงินที่ผู้ใช้ซื้อสินค้าด้วย DMM Point ที่เติมไว้ การขอชำระเงินและ flow การกู้คืนจะเป็นไปตาม flow การซื้อทั่วไปของ IAP v4 แต่มีเงื่อนไขเฉพาะของ DMM เช่น การตรวจสอบยอด DMM Point และการแนะนำให้เติม Point ทำงานร่วมด้วย ดังนั้นในสภาพแวดล้อม Windows DMM ต้องคง flow IAP v4 เดิมไว้พร้อมจัดการเงื่อนไขการชำระเงินแบบ DMM Point
ขั้นตอนการติดตั้งใช้งาน¶
- ติดตั้งใช้งานโดยอ้างอิง Billing > การเริ่มต้น IAP v4
- ติดตั้งใช้งานโดยอ้างอิง Billing > การสอบถามรายการสินค้าและการซื้อ
- ติดตั้งใช้งานโดยอ้างอิง การตรวจสอบใบเสร็จ
- ข้อควรพิจารณาเมื่อพัฒนาการเข้าสู่ระบบ DMM
- การชำระเงิน DMM จะยืนยันทันทีโดยไม่มี UI หน้าต่างชำระเงินแยกต่างหาก หากหลังซื้อแล้วอยู่ในสถานะ Pending โดยไม่ได้รับใบเสร็จ ให้เรียก IAPV4.restore เพื่อรับใบเสร็จอีกครั้ง แล้วดำเนินการตรวจสอบและมอบสินค้า flow โดยรวมของการตรวจสอบใบเสร็จและมอบสินค้าหลังซื้อเหมือนกับสโตร์อื่น ๆ รายละเอียดโปรดดู การตรวจสอบใบเสร็จ
- การเรียก DMM billing API ต้องใช้โทเคนจัดการ
onetime_tokenที่ยังใช้งานได้ สำหรับอายุโทเคน การต่ออายุอัตโนมัติ และการจัดการเมื่อหมดอายุ โปรดดู การเข้าสู่ระบบ DMM - การชำระเงิน DMM รองรับการซื้อหลายจำนวนเช่นกัน ให้เรียก IAPV4.purchase(marketPid, iapPayload, quantity, onIAPV4PurchaseCB) พร้อมพารามิเตอร์ quantity เพื่อซื้อสินค้ารายการเดียวกันหลายชิ้นพร้อมกัน
DMM Point¶
สอบถามยอด DMM Point¶
เรียก IAPV4.getBalanceInfo เพื่อสอบถามยอด DMM Point ที่ผู้ใช้สามารถใช้ได้ ใช้เมื่อต้องการตรวจสอบยอดล่วงหน้าก่อนซื้อหรือแสดงยอดในหน้าร้านค้า callback จะส่ง ResultAPI และยอดคงเหลือชนิดจำนวนเต็ม balance กลับมา getBalanceInfo ใช้ได้เฉพาะกับการชำระเงิน DMM ในสภาพแวดล้อม PC Windows หากเรียกใน Market อื่น จะส่งคืนผลลัพธ์ไม่รองรับ NOT_SUPPORTED
เมื่อเรียกสำเร็จ balance จะมีจำนวน DMM Point ที่ใช้งานได้ในปัจจุบัน หากเรียกล้มเหลว ให้ตรวจสอบสาเหตุด้วย ResultAPI
แนะนำให้เติมเงินเมื่อ DMM Point ไม่เพียงพอ¶
หากยอด Point ไม่เพียงพอขณะซื้อ callback ของ purchase จะส่งคืน result code IAPV4DmmInsufficientPointBalance ในกรณีนี้ ให้แสดงหน้าเติม DMM Point ผ่านเบราว์เซอร์จากแอปและแนะนำให้ผู้ใช้เติม Point
URL หน้าเติม DMM Point คือ https://point.dmm.com/choice/pay?basket_service_type=freegame
Caution
URL หน้าเติมเงินด้านบนเป็นค่าที่ DMM ให้มา และอาจเปลี่ยนแปลงได้ตามนโยบาย DMM โปรดตรวจสอบ URL ล่าสุดและค่าพารามิเตอร์ เช่น basket_service_type จาก DMM
