สร้างบัตรบน Android โดยใช้ Google Wallet API

1. บทนำ

ภาพรวม

Google Wallet API ช่วยให้คุณดึงดูดผู้ใช้ผ่านบัตรประเภทต่างๆ ได้ ไม่ว่าจะเป็นบัตรสะสมคะแนน ข้อเสนอ บัตรของขวัญ ตั๋วเข้างาน ตั๋วเดินทาง บอร์ดดิ้งพาส และอื่นๆ อีกมากมาย บัตรแต่ละประเภทหรือคลาสของบัตรแต่ละประเภทมาพร้อมกับช่องและฟีเจอร์เฉพาะสำหรับกรณีการใช้งานเพื่อปรับปรุงประสบการณ์ของผู้ใช้

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

  • บัตรจอดรถ
  • บัตรสมาชิกห้องสมุด
  • บัตรกำนัลมูลค่าที่จัดเก็บไว้
  • บัตรสมาชิกฟิตเนส
  • การจอง

คุณจะใช้บัตรทั่วไปได้สำหรับ Use Case ที่แสดงสิ่งต่อไปนี้

  • ข้อมูลสูงสุด 3 แถว
  • (ไม่บังคับ) กราฟิกบาร์โค้ด
  • (ไม่บังคับ) ส่วนรายละเอียด

อุปกรณ์ที่ใช้ระบบ Android ที่แสดงขั้นตอนการจัดสรร "เพิ่มลงใน Google Wallet"

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Google Wallet API หรือการเพิ่มปุ่มเพิ่มลงใน Google Wallet ลงในแอปพลิเคชัน Android โปรดดูเอกสารสำหรับนักพัฒนาซอฟต์แวร์ Google Wallet

ผ่านคลาสและออบเจ็กต์

Google Wallet API แสดงวิธีการในการสร้างสิ่งต่อไปนี้

ประเภท

คำอธิบาย

คลาสบัตร

เทมเพลตสำหรับออบเจ็กต์บัตรแต่ละรายการ ซึ่งประกอบด้วยข้อมูลทั่วไปในออบเจ็กต์ Pass ทั้งหมดที่อยู่ในคลาสนี้

ออบเจ็กต์บัตร

อินสแตนซ์ของคลาสบัตรที่ไม่ซ้ำกันสำหรับรหัสผู้ใช้

เกี่ยวกับ Codelab นี้

คุณจะทำงานต่อไปนี้ใน Codelab นี้

  1. สร้างบัญชีผู้ออกบัตรใหม่ในโหมดสาธิต
  2. สร้างบัญชีบริการสำหรับการออกบัตร
  3. สร้างคลาสบัตรทั่วไปใหม่
  4. สร้างออบเจ็กต์บัตรใหม่
  5. สร้างปุ่มเพิ่มลงใน Google Wallet เพื่อบันทึกบัตร
  6. แสดงปุ่มในแอป Android ของคุณ
  7. จัดการผลการบันทึกบัตร

ข้อกำหนดเบื้องต้น

วัตถุประสงค์

หลังจากเสร็จสิ้น Codelab นี้แล้ว คุณจะทำสิ่งต่อไปนี้ได้

  • เพิ่ม Google Wallet SDK ลงในแอป Android ของคุณ
  • ตรวจสอบว่า Google Wallet API มีให้บริการบนอุปกรณ์ที่ใช้ Android หรือไม่
  • สร้างปุ่มเพิ่มลงใน Google Wallet

การสนับสนุน

หากคุณติดอยู่ที่จุดใดก็ตามใน Codelab โปรดทราบว่าที่เก็บ google-pay/wallet-android-codelab ใน GitHub จะมีโซลูชันที่สมบูรณ์เพื่อให้คุณใช้อ้างอิง

2. ตั้งค่า

ในขั้นตอนนี้ คุณจะต้องสร้างบัญชีผู้ออกในโหมดสาธิต การดำเนินการนี้จะช่วยให้คุณสร้างคลาสและออบเจ็กต์ของบัตรที่เพิ่มลงในกระเป๋าเงินของผู้ใช้ได้ ถัดไป คุณจะต้องสร้างโปรเจ็กต์ Google Cloud และบัญชีบริการ ซึ่งจะใช้เพื่อสร้างคลาสและออบเจ็กต์บัตรแบบเป็นโปรแกรมในลักษณะเดียวกับเซิร์ฟเวอร์แบ็กเอนด์ สุดท้าย คุณจะให้สิทธิ์บัญชีบริการ Google Cloud ในการจัดการบัตรในบัญชีผู้ออกบัตรของ Google Wallet

ลงชื่อสมัครใช้บัญชีผู้ออก Google Wallet API

จำเป็นต้องมีบัญชีผู้ออกบัตรเพื่อสร้างและเผยแพร่บัตรสำหรับ Google Wallet คุณลงชื่อสมัครใช้ได้โดยใช้Google Pay และ Wallet Console ในช่วงแรก คุณจะมีสิทธิ์เข้าถึงเพื่อสร้างบัตรในโหมดสาธิต ซึ่งหมายความว่ามีเพียงผู้ใช้ทดสอบบางรายเท่านั้นที่จะเพิ่มบัตรที่คุณสร้างได้ คุณจัดการผู้ใช้ทดสอบได้ใน Google Pay และ Wallet Console

โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับโหมดสาธิตที่ข้อกำหนดเบื้องต้นของบัตรทั่วไป

  1. เปิด Google Pay และ คอนโซล Wallet
  2. ทำตามวิธีการบนหน้าจอเพื่อสร้างบัญชีผู้ออก
  3. เลือก Google Wallet API
  4. ยืนยันว่าคุณเข้าใจข้อกําหนดในการให้บริการและนโยบายความเป็นส่วนตัว
  5. คัดลอกค่ารหัสผู้ออกไปยังเครื่องมือแก้ไขข้อความหรือตำแหน่งที่ตั้งอื่น
  6. เลือกตั้งค่าบัญชีทดสอบใต้แท็บจัดการ
  7. เพิ่มอีเมลที่คุณจะใช้ใน Codelab นี้

เปิดใช้ Google Wallet API

  1. ลงชื่อเข้าใช้คอนโซล Google Cloud
  2. หากยังไม่มีโปรเจ็กต์ Google Cloud โปรดสร้างโปรเจ็กต์เลย (ดูข้อมูลเพิ่มเติมได้ที่การสร้างและจัดการโปรเจ็กต์)
  3. เปิดใช้ Google Wallet API (หรือที่เรียกว่า Google Pay for Passes API) สำหรับโปรเจ็กต์ของคุณ

สร้างบัญชีบริการและคีย์

จำเป็นต้องมีบัญชีบริการและคีย์บัญชีบริการเพื่อเรียกใช้ Google Wallet API บัญชีบริการคือข้อมูลประจำตัวที่เรียกใช้ Google Wallet API คีย์บัญชีบริการจะมีคีย์ส่วนตัวที่ระบุว่าแอปพลิเคชันของคุณเป็นบัญชีบริการ คีย์นี้มีความละเอียดอ่อน ดังนั้นโปรดเก็บคีย์ไว้เป็นความลับ

สร้างบัญชีบริการ

  1. ในคอนโซล Google Cloud ให้เปิดบัญชีบริการ
  2. ป้อนชื่อ รหัส และคำอธิบายสำหรับบัญชีบริการ
  3. เลือกสร้างและดำเนินการต่อ
  4. เลือกเสร็จสิ้น

สร้างคีย์บัญชีบริการ

  1. เลือกบัญชีบริการ
  2. เลือกเมนูKEYS
  3. เลือกเพิ่มคีย์ แล้วเลือกสร้างคีย์ใหม่
  4. เลือกประเภทคีย์ JSON
  5. เลือกสร้าง

คุณจะได้รับข้อความแจ้งให้บันทึกไฟล์คีย์ลงในเวิร์กสเตชันในระบบ อย่าลืมจำตำแหน่งของสถานที่

ตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS

Google SDK ใช้ตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เพื่อตรวจสอบสิทธิ์เป็นบัญชีบริการและเข้าถึง API ต่างๆ สำหรับโปรเจ็กต์ Google Cloud

  1. ทำตามวิธีการในเอกสารประกอบเกี่ยวกับคีย์บัญชีบริการ Google Cloud เพื่อตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS
  2. ตรวจสอบว่ามีการตั้งค่าตัวแปรสภาพแวดล้อมในเทอร์มินัลใหม่ (MacOS/Linux) หรือเซสชันบรรทัดคำสั่ง (Windows) (คุณอาจต้องเริ่มเซสชันใหม่หากเปิดไว้แล้ว)
    echo $GOOGLE_APPLICATION_CREDENTIALS
    

ให้สิทธิ์บัญชีบริการ

สุดท้ายนี้ คุณจะต้องให้สิทธิ์บัญชีบริการในการจัดการบัตรใน Google Wallet

  1. เปิด Google Pay และ คอนโซล Wallet
  2. เลือกผู้ใช้
  3. เลือกเชิญผู้ใช้
  4. ป้อนอีเมลของบัญชีบริการ (เช่น test-svc@myproject.iam.gserviceaccount.com)
  5. เลือกนักพัฒนาซอฟต์แวร์หรือผู้ดูแลระบบจากเมนูแบบเลื่อนลงระดับการเข้าถึง
  6. เลือกเชิญ

3. สร้างคลาสบัตรทั่วไป

ในขั้นตอนนี้ คุณจะได้สร้างคลาสพื้นฐานสำหรับบัตร เมื่อใดก็ตามที่สร้างบัตรใบใหม่ให้กับผู้ใช้ บัตรใบนั้นจะรับค่าพร็อพเพอร์ตี้ที่กำหนดไว้ในคลาสบัตร

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

คุณสร้างชั้นเรียนบัตรได้โดยตรงใน Google Pay และ Wallet Console หรือใช้ Google Wallet API ใน Codelab นี้ คุณจะสร้างคลาสบัตรทั่วไปโดยใช้ API ซึ่งจะเป็นไปตามกระบวนการที่เซิร์ฟเวอร์แบ็กเอนด์แบบส่วนตัวจะใช้ในการสร้างคลาสบัตร

  1. โคลนที่เก็บ google-pay/wallet-android-codelab ใน GitHub ไปยังเวิร์กสเตชันในเครื่อง
    git clone https://github.com/google-pay/wallet-android-codelab.git
    
  2. เปิดที่เก็บที่โคลนในเทอร์มินัลหรือพรอมต์บรรทัดคำสั่ง
  3. ไปที่ไดเรกทอรี backend (สคริปต์เหล่านี้เลียนแบบการทำงานของเซิร์ฟเวอร์แบ็กเอนด์)
    cd backend
    
  4. ติดตั้งการอ้างอิง Node.js
    npm install .
    
  5. ในไดเรกทอรี backend ให้เปิด generic_class.js
  6. แทนที่ค่า issuerId ด้วยรหัสผู้ออกบัตรจาก Google Pay และ คอนโซล Wallet
    // TODO: Define Issuer ID
    let issuerId = 'ISSUER_ID';
    
  7. เรียกใช้generic_class.jsสคริปต์
    node generic_class.js
    
    ในเทอร์มินัลหรือพรอมต์บรรทัดคำสั่ง

เมื่อโค้ดทำงาน ระบบจะสร้างคลาสบัตรใหม่และแสดงผลรหัสคลาส รหัสคลาสประกอบด้วยรหัสผู้ออกบัตรตามด้วยคำต่อท้ายที่นักพัฒนาแอปกำหนด ในกรณีนี้ ค่าต่อท้ายจะได้รับการตั้งค่าเป็น codelab_class (รหัสคลาสจะดูคล้ายกับ 1234123412341234123.codelab_class) บันทึกเอาต์พุตจะมีการตอบกลับจาก Google Wallet API ด้วย

4. เปิดโปรเจ็กต์ใน Android Studio

ที่เก็บ GitHub ที่คุณโคลนมีโปรเจ็กต์ Android ที่มีกิจกรรมที่ว่างเปล่า ในขั้นตอนนี้ คุณจะต้องแก้ไขในกิจกรรมนี้ให้รวมปุ่มเพิ่มลงใน Google Wallet ในหน้าผลิตภัณฑ์

  1. เปิด Android Studio
  2. เลือกไฟล์ แล้วเลือกเปิด
  3. เลือกไดเรกทอรี android ในที่เก็บ
  4. เลือกเปิด

เพิ่ม Google Wallet SDK ลงในแอปของคุณ

  1. เปิดไฟล์บิลด์ Gradle ระดับโมดูล (android/app/build.gradle)
  2. เพิ่ม Google Wallet SDK ลงในส่วน dependencies
    // TODO: Add the "com.google.android.gms:play-services-pay" dependency to
    //       use the Google Wallet API
    implementation "com.google.android.gms:play-services-pay:16.0.3"
    
  3. บันทึกไฟล์
  4. เลือกไฟล์ แล้วซิงค์โปรเจ็กต์ด้วยไฟล์ Gradle

5. สร้าง ปุ่มเพิ่มลงใน Google Wallet

ในขั้นตอนนี้ คุณจะสร้างปุ่มเพิ่มลงใน Google Wallet และเพิ่มลงในกิจกรรมที่มีอยู่ เนื้อหาสำหรับปุ่มนี้รวมอยู่ในโปรเจ็กต์แล้ว หากต้องการใส่ปุ่ม คุณจะต้องสร้างไฟล์เลย์เอาต์แยกต่างหาก เมื่อเพิ่มแล้ว ปุ่มจะมีลักษณะดังนี้

ปุ่มเพิ่มลงใน Google Wallet

  1. สร้างไฟล์การออกแบบใหม่: app/src/main/res/layout/add_to_google_wallet_button.xml
  2. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์เลย์เอาต์ใหม่
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="48sp"
        android:background="@drawable/add_to_google_wallet_button_background_shape"
        android:clickable="true"
        android:contentDescription="@string/add_to_google_wallet_button_content_description"
        android:focusable="true">
      <ImageView
          android:layout_width="227dp"
          android:layout_height="26dp"
          android:layout_gravity="center"
          android:duplicateParentState="true"
          android:src="@drawable/add_to_google_wallet_button_foreground" />
    </FrameLayout>
    
  3. รวมเลย์เอาต์ add_to_google_wallet_button.xml ในไฟล์เลย์เอาต์กิจกรรมการชำระเงิน (app/src/main/res/layout/activity_checkout.xml)
    <!--
        TODO: Create the button under `add_to_google_wallet_button.xml`
              and include it in your UI
    -->
    <include
        android:id="@+id/addToGoogleWalletButton"
        layout="@layout/add_to_google_wallet_button"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_marginTop="10dp" />
    

6. ตรวจสอบว่า Google Wallet API พร้อมใช้งานหรือไม่

หากผู้ใช้เปิดแอปของคุณในอุปกรณ์ที่ไม่รองรับ Google Wallet API ผู้ใช้อาจได้รับประสบการณ์ที่ไม่ดีเมื่อพยายามเพิ่มบัตร หากอุปกรณ์ของผู้ใช้ไม่รองรับ Google Wallet API การซ่อนปุ่มเพิ่มลงใน Google Wallet จะช่วยหลีกเลี่ยงไม่ให้เกิดความสับสน API อาจไม่พร้อมใช้งานด้วยเหตุผลหลายประการ เช่น เวอร์ชัน Android หรือบริการ Google Play ล้าสมัย หรือ Google Wallet ไม่พร้อมใช้งานในประเทศของผู้ใช้

ในขั้นตอนนี้ คุณจะเพิ่มตรรกะลงในแอปของคุณที่ตรวจสอบว่า Google Wallet API พร้อมใช้งานบนอุปกรณ์หรือไม่ หากมี ปุ่มนี้จะแสดงในกิจกรรม มิเช่นนั้นระบบจะซ่อนปุ่มไว้

  1. เปิดไฟล์ CheckoutActivity.kt ใน app/src/main/java/com/google/android/gms/samples/wallet/activity/
  2. สร้างพร็อพเพอร์ตี้คลาสสำหรับPayClientอินสแตนซ์
    // TODO: Create a client to interact with the Google Wallet API
    private lateinit var walletClient: PayClient
    
  3. สร้างอินสแตนซ์พร็อพเพอร์ตี้ PayClient ในเมธอด onCreate
    // TODO: Instantiate the client
    walletClient = Pay.getClient(this)
    
  4. สร้างวิธีการที่ตรวจสอบว่า Google Wallet SDK และ API พร้อมใช้งานในอุปกรณ์หรือไม่และจัดการผลลัพธ์
    // TODO: Create a method to check for the Google Wallet SDK and API
    private fun fetchCanUseGoogleWalletApi() {
      walletClient
        .getPayApiAvailabilityStatus(PayClient.RequestType.SAVE_PASSES)
        .addOnSuccessListener { status ->
          if (status == PayApiAvailabilityStatus.AVAILABLE)
            layout.passContainer.visibility = View.VISIBLE
        }
        .addOnFailureListener {
          // Hide the button and optionally show an error message
        }
    }
    
  5. เรียกใช้เมธอด fetchCanUseGoogleWalletApi ในเมธอด onCreate เพื่อตรวจสอบว่า Google Wallet API พร้อมใช้งาน
    // TODO: Check if the Google Wallet API is available
    fetchCanUseGoogleWalletApi()
    
    หรือไม่

เมื่อเรียกใช้แอป คุณจะเห็นปุ่มเพิ่มลงใน Google Wallet ใน UI

ตอนนี้ปุ่ม &quot;เพิ่มลงใน Google Wallet&quot; จะปรากฏในกิจกรรมบนแอป

7. สร้างออบเจ็กต์บัตรทั่วไป

เมื่อตรวจสอบแล้วว่า Google Wallet API พร้อมให้บริการ คุณจึงสร้างบัตรและแจ้งให้ผู้ใช้เพิ่มบัตรลงใน Wallet ได้ การสร้างออบเจ็กต์ Pass สำหรับผู้ใช้มี 2 ขั้นตอน

สร้างออบเจ็กต์บัตรในเซิร์ฟเวอร์แบ็กเอนด์

ในวิธีนี้ ระบบจะสร้างออบเจ็กต์ Pass บนเซิร์ฟเวอร์แบ็กเอนด์และส่งไปยังแอปไคลเอ็นต์เป็น JWT ที่ลงนามแล้ว วิธีนี้เหมาะสมที่สุดสำหรับกรณีที่การใช้งานของผู้ใช้สูง เนื่องจากจะช่วยให้มั่นใจได้ว่ามีออบเจ็กต์อยู่ก่อนที่ผู้ใช้จะพยายามเพิ่มรายการดังกล่าวลงในกระเป๋าเงินของผู้ใช้

สร้างออบเจ็กต์บัตรเมื่อผู้ใช้เพิ่มบัตรลงใน Wallet

ในแนวทางนี้ ระบบจะกำหนดออบเจ็กต์ Pass และเข้ารหัสเป็น JWT ที่ลงนามในเซิร์ฟเวอร์แบ็กเอนด์ จากนั้นปุ่มเพิ่มลงใน Google Wallet จะแสดงในแอปไคลเอ็นต์ที่อ้างอิง JWT เมื่อผู้ใช้เลือกปุ่ม ระบบจะใช้ JWT ในการสร้างออบเจ็กต์บัตร วิธีนี้เหมาะสมที่สุดสำหรับกรณีที่การใช้งานของผู้ใช้มีการเปลี่ยนแปลงหรือไม่แน่นอน เนื่องจากจะป้องกันไม่ให้มีการสร้างและไม่ใช้ออบเจ็กต์บัตร เราจะนำแนวทางนี้ไปใช้ใน Codelab

  1. เปิดไฟล์ backend/generic_pass.js
  2. แทนที่ค่า issuerId ด้วยรหัสผู้ออกบัตรจาก Google Pay และ คอนโซล Wallet
    // TODO: Define Issuer ID
    let issuerId = 'ISSUER_ID';
    
  3. เรียกใช้ไฟล์ generic_pass.js
    node generic_pass.js
    
    ในเทอร์มินัลหรือพรอมต์บรรทัดคำสั่ง
  4. คัดลอกโทเค็นเอาต์พุตไปยังคลิปบอร์ดหรือเครื่องมือแก้ไขข้อความ

เมื่อโค้ดทำงาน โค้ดจะกำหนดออบเจ็กต์ Pass ใหม่และฝังไว้ใน JWT จากนั้นจะลงชื่อ JWT ด้วยคีย์บัญชีบริการที่คุณสร้างขึ้นก่อนหน้านี้ การดำเนินการนี้จะตรวจสอบสิทธิ์คำขอที่ส่งไปยัง Google Wallet API เพื่อให้คุณไม่จำเป็นต้องจัดเก็บข้อมูลรับรองไว้ในแอปไคลเอ็นต์

นอกเหนือจากในระบบที่ใช้งานจริง ระบบแบ็กเอนด์ของคุณจะมีหน้าที่สร้าง JWT และส่งกลับไปยังไคลเอ็นต์ ใน Codelab นี้ สคริปต์ generic_pass.js จะจำลองลักษณะการทำงานนี้และ "ส่งคืน" โทเค็นเพื่อให้คุณใช้ในแอปไคลเอ็นต์

8. เพิ่มบัตรลงใน Google Wallet

เมื่อตรวจสอบแล้วว่า Google Wallet API พร้อมให้บริการและสร้าง JWT ที่ลงนามแล้ว คุณก็แจ้งให้ผู้ใช้เพิ่มบัตรลงใน Wallet ได้ ในขั้นตอนนี้ คุณจะเพิ่ม Listener ลงในปุ่มเพิ่มลงใน Google Wallet ที่ใช้ API ของ Google Wallet เพื่อบันทึกบัตรลงในกระเป๋าเงินของผู้ใช้

  1. เปิดไฟล์ app/src/main/CheckoutActivity.kt
  2. แทนที่ค่าของ token ด้วย JWT ที่สร้างไว้ก่อนหน้านี้
    // TODO: Save the JWT from the backend "response"
    private val token = "TOKEN"
    
  3. สร้างพร็อพเพอร์ตี้ของชั้นเรียนเพื่อเก็บโค้ดคำขอ
    // TODO: Add a request code for the save operation
    private val addToGoogleWalletRequestCode = 1000
    
  4. ตั้งค่า Listener สำหรับปุ่มเพิ่มลงใน Google Wallet
    // TODO: Set an on-click listener on the "Add to Google Wallet" button
    addToGoogleWalletButton = layout.addToGoogleWalletButton.
    
    addToGoogleWalletButton.setOnClickListener {
      walletClient.savePassesJwt(token, this, addToGoogleWalletRequestCode)
    }
    

เมื่อผู้ใช้เลือกปุ่มเพิ่มลงใน Google Wallet ระบบจะเรียกเมธอด walletClient.savePassesJwt วิธีนี้จะแจ้งให้ผู้ใช้เพิ่มออบเจ็กต์บัตรใหม่ลงใน Google Wallet

9. จัดการ ผลลัพธ์ SavePassesJwt

ในขั้นตอนสุดท้ายของ Codelab นี้ คุณจะต้องกำหนดค่าแอปเพื่อจัดการผลของการดำเนินการ walletClient.savePassesJwt

  1. เปิดไฟล์ app/src/main/CheckoutActivity.kt
  2. ลบล้างเมธอด onActivityResult เพื่อให้มีโค้ดต่อไปนี้
    // TODO: Handle the result
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
      super.onActivityResult(requestCode, resultCode, data)
    
      if (requestCode == addToGoogleWalletRequestCode) {
        when (resultCode) {
          RESULT_OK -> {
            // Pass saved successfully. Consider informing the user.
          }
    
          RESULT_CANCELED -> {
            // Save canceled
          }
    
          PayClient.SavePassesResult.SAVE_ERROR ->
            data?.let { intentData ->
              val errorMessage = intentData.getStringExtra(PayClient.EXTRA_API_ERROR_MESSAGE)
              // Handle error. Consider informing the user.
              Log.e("SavePassesResult", errorMessage.toString())
            }
    
          else -> {
            // Handle unexpected (non-API) exception
          }
        }
      }
    }
    

ตอนนี้แอปของคุณรับมือกับสถานการณ์ต่อไปนี้ได้แล้ว

  • เพิ่มบัตรสำเร็จ
  • การยกเลิกของผู้ใช้
  • ข้อผิดพลาดที่ไม่คาดคิด

เรียกใช้แอปเพื่อยืนยันว่าคุณจะเพิ่มบัตรและจัดการผลลัพธ์ตามที่คาดไว้ได้

10. ขอแสดงความยินดี

ตัวอย่างออบเจ็กต์บัตรทั่วไป

ขอแสดงความยินดี คุณได้ผสานรวม Google Wallet API บน Android เรียบร้อยแล้ว

ดูข้อมูลเพิ่มเติม

ดูการผสานรวมทั้งหมดในที่เก็บ GitHub แบบ google-pay/wallet-android-codelab

สร้างบัตรและขอสิทธิ์เข้าถึงเวอร์ชันที่ใช้งานจริง

เมื่อพร้อมที่จะออกบัตรของคุณเองในเวอร์ชันที่ใช้งานจริงแล้ว ให้ไปที่ Google Pay และ Wallet Console เพื่อขอสิทธิ์เข้าถึงเวอร์ชันที่ใช้งานจริงและให้สิทธิ์แอป Android ของคุณ

โปรดดูข้อมูลเพิ่มเติมในข้อกำหนดเบื้องต้นของ Android SDK