[Dev] Google Play In-app Billing สำหรับ Android : Part 4 ถึงเวลาขายจริง

และแล้วก็ถึงตอนสุดท้ายของบทความเกี่ยวกับการขายของใน App หรือ In-app Purchase แล้ว จาก Part 1 ว่าด้วยเรื่องของการเตรียมความพร้อม แล้วต่อด้วย Part 2 สำหรับการเขียนคำสั่ง จนถึง Part 3 การนำ Utility มาช่วยเขียนคำสั่ง นั้น ยังเป็นการเขียนคำสั่งทดสอบการขายเท่านั้น

in-app-billing-android

สำหรับคนที่รอคอยตอนจบของบทความชุดนี้ มาดูตามกันเลยครับ

ก่อนจะทำการขายจริงได้นั้น อย่าลืมกำหนด Marchant account หรือบัญชีผู้ขาย ใน Google play Developer Console ก่อนนะครับ

และเราจำเป็นต้องทำการ Upload ไฟล์ apk ของเราขึ้นไปยัง Developer Console โดยจะต้องมีการกำหนดให้ใช้ Permission com.android.vending.BILLING ด้วย ตามที่ได้อธิบายไว้ใน Part 1 หลังจากนั้น เมนูเพิ่มสินค้า/ผลิตภัณฑ์ ถึงจะใช้งานได้

 

List of contents

 

Add In-app Product

เมื่อเข้าไปที่ App ของเรา ใน Developer Console แล้ว ให้เลือกเมนู In-app Products (หรือ ผลิตภัณฑ์ในแอปพลิเคชัน) ที่ด้านบน จะมีปุ่ม + Add new product (หรือ เพิ่มผลิตภัณฑ์ใหม่)

หากไม่พบปุ่มนี้ ให้ย้อนไปอ่านที่ต้นบทความใหม่นะครับBig Smile

เพิ่มผลิตภัณฑ์ใหม่ ภายใน App
เพิ่มผลิตภัณฑ์ใหม่ ภายใน App

จะมีหน้าต่างให้ระบุชนิดของ Product ทั้งหมด 3 แบบ ดังนี้

หน้าจอสำหรับการเพิ่ม Product ชนิด Managed
หน้าจอสำหรับการเพิ่ม Product ชนิด Managed
หน้าจอสำหรับการเพิ่ม Product ชนิด Unmanaged
หน้าจอสำหรับการเพิ่ม Product ชนิด Unmanaged
หน้าจอสำหรับการเพิ่ม Product ชนิด Subscription
หน้าจอสำหรับการเพิ่ม Product ชนิด Subscription

ให้เลือกเป็นชนิด Managed product (หรือ ผลิตภัณฑ์ที่มีการจัดการ) แล้วทำการระบุ Product ID (หรือ ID ผลิตภัณฑ์) แล้วกดปุ่ม Continue (หรือ ดำเนินการต่อ)

กำหนด Product ID
กำหนด Product ID

โดยการตั้งชื่อ Product ID มีข้อกำหนดดังนี้

  1. ต้องเป็นตัวอักษรภาษาอังกฤษตัวเล็ก (a-z), ตัวเลข (0-9), เส้นใต้ (_), และจุด (.) เท่านั้น
  2. ตัวอักษรตัวแรก ต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษตัวเล็ก (a-z) หรือ ตัวเลข (0-9) ไม่สามารถใช้ เส้นใต้ (_) และจุด (.) ได้
  3. ห้ามขึ้นต้นด้วย android.test. เนื่องจากถูกสงวนไว้สำหรับการทดสอบเท่านั้น

สำหรับชนิดของ Product และ Product ID นั้น เมื่อกำหนดแล้ว ไม่สามารถแก้ไขได้

ต่อจากนั้นก็ทำการกำหนดรายละเอียดต่าง ๆ ให้เรียบร้อย (ในส่วนนี้ สามารถแก้ไขในภายหลังได้) แล้วกดปุ่ม Save (หรือ บันทึก) ด้านบน ต่อด้วยตัวเลือกด้านข้างปุ่ม เปลี่ยนจาก Inactive เป็น Active (หรือจาก ไม่ใช้งาน เป็น เปิดใช้งาน)

กำหนดรายละเอียดของ Produc
กำหนดรายละเอียดของ Product
กำหนดให้ใช้งาน Product
กำหนดให้ใช้งาน Product

สำหรับการลบ Product ID ออกไปนั้น ก็สามารถทำได้เช่นกัน แต่จะไม่สามารถใช้ Product ID ที่ลบไปแล้วมาใช้ได้อีก

รายการ Product ที่เพิ่มไว้แล้ว
รายการ Product ที่เพิ่มไว้แล้ว

 

Update Product ID in Source code

ทำการปรับปรุง Source code เดิม จากที่เขียนในตัวอย่าง Part 2 หรือ Part 3 ดังนี้

หลังจากนั้นก็ทำการ Export Signed Application Package และ Publish ขึ้น Developer Console ให้เรียบร้อย แล้วนำไปติดตั้งบน Device เพื่อทดสอบซื้อจริงกันต่อ

หากยังไม่ต้องการให้ User เห็น ก็เลือก Publish ไปยัง Alpha test หรือ Beta test ก่อนก็ได้

 

Add In-app Test account

ใน Developer Console ที่เมนู Settings (หรือ การตั้งค่า) > Account details (หรือ รายละเอียดบัญชี) จะสามารถกำหนดว่า Account ไหน เป็น Test account เพื่อใช้ในการทดสอบการซื้อจริง โดยในช่อง Gmail accounts with testing access (หรือ บัญชี Gmail ที่มีการเข้าถึงการทดสอบ) ให้ระบุ Gmail ที่จะใช้เป็น Test account ลงไป

การกำหนด Test account
การกำหนด Test account

หากใครที่เข้าไปเมนูนี้ แล้วไม่เหมือนในรูป คุณต้องสร้าง Marchant account หรือบัญชีผู้ขายก่อน

 

Test buy In-app Product

เมื่อลองกดซื้อจาก App บน Device จริง หาก Dialog ที่พบเหมือนดังรูปนี้ ไม่ต้องตกใจไปนะครับ แสดงว่ายังไม่ได้ Publish ขึ้น Developer Console หรือ คุณทดสอบ App เร็วเกินไป Angry ก็คือ Product ID ที่ใช้ ยังไม่ Active บน Developer Console ซึ่งก็ต้องรอประมาณ 2-3 ชั่วโมง เช่นเดียวกับการแก้ไขข้อมูลต่าง ๆ ของ App หรือเวลารอ Active เมื่อส่ง App ขึ้นไปใหม่นั่นเอง

Error เนื่องจาก Product ID ที่กำหนดบน Developer Console ยังไม่ Active
Error เนื่องจาก Product ID ที่กำหนดบน Developer Console ยังไม่ Active

เมื่อ Product ID ที่เพิ่มบน Developer Console นั้น Active แล้ว หากพบ Dialog ดังรูปต่อไปนี้ หมายความว่า คุณกำลังทดสอบบน Device ที่ใช้ Account ของผู้พัฒนา จะไม่สามารถซื้อได้

หากกดซื้อบน Device ที่ใช้ Account ของผู้พัฒนา จะไม่สามารถซื้อได้
หากกดซื้อบน Device ที่ใช้ Account ของผู้พัฒนา จะไม่สามารถซื้อได้

เมื่อทำการซื้อด้วย Device ที่ใช้ Test account อยู่ จะพบ Dialog ดังรูปด้านล่าง ซึ่งจะมีข้อความบอกไว้ให้ทราบด้วยว่า การซื้อในครั้งนี้ จะไม่มีการเรียกเก็บเงินจริง ๆ

เมื่อกดซื้อด้วย Test Account
เมื่อกดซื้อด้วย Test account
เมื่อการซื้อเสร็จสมบูรณ์
เมื่อการซื้อเสร็จสมบูรณ์

และเมื่อ User ที่ไม่ได้อยู่ในรายชื่อ Test account ก็จะเป็นการซื้อจริง

Dialog เมื่อ User กดซื้อจริง
Dialog เมื่อ User กดซื้อจริง

ในการซื้อ ไม่ว่าจะซื้อจาก Test account หรือการซื้อจริง จะมี E-mail แจ้ง ดังนี้

Email จาก Google play แจ้งการชำระเงิน
E-mail จาก Google play แจ้งการชำระเงิน

 

Order report

ทันทีที่มีคำสั่งซื้อจากลูกค้า เราสามารถติดตามสถานะการสั่งซื้อได้จาก Merchant Center บน Google Wallet โดยจะมีรายการสั่งซื้อแบบนี้

รายการสั่งซื้อจากลูกค้า บน Google Wallet Merchant Center
รายการสั่งซื้อจากลูกค้า บน Google Wallet Merchant Center

ด้านบนจะมีปุ่ม Export ให้ Export ออกมาเป็นไฟล์ชนิด CSV ได้

ลองสังเกตุที่ Status จะเห็นว่ามีอยู่หลายแบบ ดังนี้

  • วงกลมสีเขียว – รายการที่สั่งซื้อสำเร็จ และมีการเรียกเก็บเงินแล้ว
  • วงกลมสีเหลือง – รายการที่สั่งซื้อสำเร็จ แต่ยังไม่ได้เรียกเก็บเงิน
  • วงกลมสีแดง – รายการที่เกิดข้อผิดพลาด
  • กากบาทสีดำ – รายการที่ถูกยกเลิก

ส่วนที่ Total ที่แสดงจำนวนเงินที่ต่างกันนั้น ขึ้นกับอัตราแลกเปลี่ยนสกุลเงินของแต่ละประเทศในขณะนั้น โดยรายการที่มีการแปลงสกุลเงิน จะมี Icon รูปโลก อยู่ด้านขวา ถ้าเอา Cursor ไปชี้ จะแสดงรายละเอียดสกุลเงิน และยอดเงินก่อนแปลงให้เห็น

ส่วนรายการสั่งซื้อจากตัวอย่างด้านบน ก็คือรายการนี้ ที่เป็นกากบาทสีดำ เนื่องจากเกิน 14 วันแล้ว สำหรับการสั่งซื้อโดย Test account และสังเกตุที่ด้านหน้าของรายละเอียดสินค้า จะมีคำว่า Test: เพิ่มขึ้นมาให้เราทราบ

รายการสั่งซื้อที่ทำการทดสอบ
รายการสั่งซื้อที่ทำการทดสอบ

ในแต่ละรายการสั่งซื้อ เมื่อคลิกเข้าไป ก็จะแสดงรายละเอียดรายการสั่งซื้อ ดังรูปตัวอย่างต่อไปนี้

รายละเอียดรายการสั่งซื้อที่ถูกยกเลิก
รายละเอียดรายการสั่งซื้อที่ถูกยกเลิก
รายละเอียดรายการสั่งซื้อที่สำเร็จ แต่ยังไม่ได้เรียกเก็บเงิน
รายละเอียดรายการสั่งซื้อที่สำเร็จ แต่ยังไม่ได้เรียกเก็บเงิน
รายละเอียดรายการสั่งซื้อที่สำเร็จ และเรียกเก็บเงินเรียบร้อย
รายละเอียดรายการสั่งซื้อที่สำเร็จ และเรียกเก็บเงินเรียบร้อย

ด้านบนของรายการสั่งซื้อ จะมีปุ่ม Cancel ให้เราสามารถยกเลิกรายการได้ และปุ่ม Refund ให้เราสามารถคืนเงินให้ลูกค้า กรณีที่ลูกค้าแจ้งความประสงค์มา

ปุ่ม Cancel และ Refund ด้านบนรายละเอียดของแต่ละรายการสั่งซื้อ
ปุ่ม Cancel และ Refund ด้านบนรายละเอียดของแต่ละรายการสั่งซื้อ

ส่วนบน Google play Developer Console นั้น ในเมนู Financial reports (หรือ รายงานทางการเงิน) จะมีรายงานรวมทุก App ให้เรา Download เป็นไฟล์ CSV ได้ และมีเครื่องมือให้ดึงข้อมูลไปได้ด้วย ซึ่งข้อมูลจะอัพเดตวันละครั้ง

รายการทางการเงิน
รายการทางการเงิน

หากเข้าไปดูในแต่ละ App ที่เมนู Revenue (หรือ รายได้) ก็จะมีข้อมูลรายได้ให้ดูพร้อมกราฟ สามารถเลือกดูรวมทุกประเทศ หรือดูเฉพาะบางประเทศได้ ซึ่งข้อมูลจะอัพเดตวันละครั้งเช่นกัน

รายได้ของแต่ละ App
ข้อมูลรายได้ของแต่ละ App

 

ก็จบแล้วนะครับ สำหรับการทำ In-app Billing หรือ In-app Purchase ตอนแรกตั้งใจว่าจะเขียนแค่ 2 ตอน ทำไปทำมา ก็ลากยาวมาจนถึง 4 ตอนกันเลยทีเดียว I Surrender!

ฝากให้คิดต่อกันสักนิดนะครับ ว่า… เราจะตรวจสอบและป้องกันอย่างไร ให้มั่นใจได้ว่า User กำลังใช้ของที่เราขายจริง ๆ

ผมเองก็ยังไม่ได้คิดให้จบเหมือนกัน ว่าจะทำอย่างไร?

ถ้าใครมี Idea ดี ๆ ลองมาคุยกันนะครับ

หากใครอยากลองเล่น App ที่ผมได้ทำขึ้นเพื่อทดสอบและใช้ในการเขียน Blog ตอนนี้ ผมไม่ได้นำขึ้น Play Store นะ แต่สามารถ Download ได้ที่ in_app_billing_ex2_1.0.1.apk “การกดซื้อจะเป็นการจ่ายเงินจริง ๆ ให้ผมนะ” Big Smile

Ref.1 Administering In-app Billing

Ref.2 Creating In-App Product IDs

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.