การกำหนดค่าบัญชีผู้ออกบัตร

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

ตรวจสอบว่าคุณทำตามขั้นตอนต่อไปนี้แล้วก่อนดำเนินการต่อ

เลือกบัญชีที่จะเปิดใช้การแตะอัจฉริยะ

ก่อนดำเนินการต่อ คุณต้องระบุบัญชีที่จะกำหนดให้เป็นบัญชี บัญชีผู้ออกการแลกสิทธิ์ ซึ่งทำได้ 2 วิธีในการพิจารณาดังนี้

สร้างบัญชีผู้ออกบัตรใหม่

ข้อมูลติดต่อบัญชีของบัญชีใหม่ต้องมีข้อมูล สำหรับคำแนะนำเกี่ยวกับวิธีดำเนินการใน Google Pay และ กระเป๋าสตางค์ Console บทความสนับสนุน ตัวอย่างโค้ดต่อไปนี้สาธิตการสร้างบัญชีผู้ออกบัตรโดยใช้ API ของ Google Wallet:

Java

/**
 * Create a new Google Wallet Issuer account.
 *
 * @param issuerName The Issuer's name.
 * @param issuerEmail The Issuer's email address.
 * @throws IOException
 */
public void CreateIssuerAccount(String issuerName, String issuerEmail) throws IOException {
  // New Issuer information
  Issuer issuer =
      new Issuer()
          .setName(issuerName)
          .setContactInfo(new IssuerContactInfo().setEmail(issuerEmail));

  Issuer response = service.issuer().insert(issuer).execute();

  System.out.println("Issuer insert response");
  System.out.println(response.toPrettyString());
}

PHP

/**
 * Create a new Google Wallet issuer account.
 *
 * @param string $issuerName The Issuer's name.
 * @param string $issuerEmail The Issuer's email address.
 */
public function createIssuerAccount(string $issuerName, string $issuerEmail)
{
  // New Issuer information
  $issuer = new Google_Service_Walletobjects_Issuer([
    'name' => $issuerName,
    'contactInfo' => new Google_Service_Walletobjects_IssuerContactInfo([
      'email' => $issuerEmail,
    ]),
  ]);

  $response = $this->service->issuer->insert($issuer);

  print "Issuer insert response\n";
  print_r($response);
}

Python

def create_issuer_account(self, issuer_name: str, issuer_email: str):
    """Create a new Google Wallet Issuer account.

    Args:
        issuer_name (str): The Issuer's name.
        issuer_email (str): The Issuer's email address.
    """
    # New Issuer information
    issuer = {'name': issuer_name, 'contactInfo': {'email': issuer_email}}

    # Make the POST request
    response = self.http_client.post(url=self.issuer_url, json=issuer)

    print('Issuer insert response')
    print(response.text)

C#

/// <summary>
/// Create a new Google Wallet Issuer account.
/// </summary>
/// <param name="issuerName">The Issuer's name.</param>
/// <param name="issuerEmail">The Issuer's email address.</param>
public void CreateIssuerAccount(string issuerName, string issuerEmail)
{
  // New issuer information
  Issuer issuer = new Issuer()
  {
    ContactInfo = new IssuerContactInfo()
    {
      Email = issuerEmail
    },
    Name = issuerName,
  };

  Stream responseStream = service.Issuer
      .Insert(issuer)
      .ExecuteAsStream();
  StreamReader responseReader = new StreamReader(responseStream);
  JObject jsonResponse = JObject.Parse(responseReader.ReadToEnd());

  Console.WriteLine("Issuer insert response");
  Console.WriteLine(jsonResponse.ToString());
}

Node.js

/**
 * Create a new Google Wallet Issuer account.
 *
 * @param {string} issuerName The Issuer's name.
 * @param {string} issuerEmail The Issuer's email address.
 */
async createIssuerAccount(issuerName, issuerEmail) {
  // New Issuer information
  let issuer = {
    name: issuerName,
    contactInfo: {
      email: issuerEmail
    }
  };

  let response = await this.httpClient.request({
    url: this.issuerUrl,
    method: 'POST',
    data: issuer
  });

  console.log('Issuer insert response');
  console.log(response);
}

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

Java

/**
 * Update permissions for an existing Google Wallet Issuer account.
 *
 * <p><strong>Warning:</strong> This operation overwrites all existing permissions!
 *
 * <p>Example permissions list argument below. Copy the add entry as needed for each email address
 * that will need access. Supported values for role are: 'READER', 'WRITER', and 'OWNER'
 *
 * <pre><code>
 * ArrayList<Permission> permissions = new ArrayList<Permission>();
 * permissions.add(new Permission().setEmailAddress("emailAddress").setRole("OWNER"));
 * </code></pre>
 *
 * @param issuerId The Issuer ID being used for this request.
 * @param permissions The list of email addresses and roles to assign.
 * @throws IOException
 */
public void UpdateIssuerAccountPermissions(String issuerId, ArrayList<Permission> permissions)
    throws IOException {

  Permissions response =
      service
          .permissions()
          .update(
              Long.parseLong(issuerId),
              new Permissions().setIssuerId(Long.parseLong(issuerId)).setPermissions(permissions))
          .execute();

  System.out.println("Issuer permissions update response");
  System.out.println(response.toPrettyString());
}

PHP

/**
 * Update permissions for an existing Google Wallet Issuer account.
 *
 * **Warning:** This operation overwrites all existing permissions!
 *
 * Example permissions list argument below. Copy the entry as
 * needed for each email address that will need access. Supported
 * values for role are: 'READER', 'WRITER', and 'OWNER'
 *
 * $permissions = array(
 *  new Google_Service_Walletobjects_Permission([
 *    'emailAddress' => 'email-address',
 *    'role' => 'OWNER',
 *  ]),
 * );
 *
 * @param string $issuerId The Issuer ID being used for this request.
 * @param array $permissions The list of email addresses and roles to assign.
 */
public function updateIssuerAccountPermissions(string $issuerId, array $permissions)
{
  // Make the PUT request
  $response = $this->service->permissions->update(
    $issuerId,
    new Google_Service_Walletobjects_Permissions([
      'issuerId' => $issuerId,
      'permissions' => $permissions,
    ])
  );

  print "Permissions update response\n";
  print_r($response);
}

Python

def update_issuer_account_permissions(self, issuer_id: str,
                                      permissions: List):
    """Update permissions for an existing Google Wallet Issuer account.

    **Warning:** This operation overwrites all existing permissions!

    Example permissions list argument below. Copy the dict entry as
    needed for each email address that will need access. Supported
    values for role are: 'READER', 'WRITER', and 'OWNER'

    permissions = [
        {
            'emailAddress': 'email-address',
            'role': 'OWNER'
        }
    ]

    Args:
        issuer_id (str): The Issuer ID being used for this request.
        permissions (List): The list of email addresses and roles to assign.
    """
    response = self.http_client.put(url=f'{self.permissions_url}/{issuer_id}',
                                    json={
                                        'issuerId': issuer_id,
                                        'permissions': permissions
                                    })

    print('Permissions update response')
    print(response.text)

C#

/// <summary>
/// Update permissions for an existing Google Wallet Issuer account.
/// <para />
/// <strong>Warning:</strong> This operation overwrites all existing permissions!
/// <para />
/// Example permissions list argument below. Copy the add entry as needed for each email
/// address that will need access.Supported values for role are: 'READER', 'WRITER', and 'OWNER'
/// <para />
/// <![CDATA[List&lt;Permission> permissions = new List&lt;Permission>();]]>
/// <para />
/// permissions.Add(new Permission { EmailAddress = "emailAddress", Role = "OWNER"});
/// </summary>
/// <param name="issuerId">The issuer ID being used for this request.</param>
/// <param name="permissions">The list of email addresses and roles to assign.</param>
public void UpdateIssuerAccountPermissions(string issuerId, List<Permission> permissions)
{
  Stream responseStream = service.Permissions
      .Update(new Permissions
      {
        IssuerId = long.Parse(issuerId),
        PermissionsValue = permissions
      },
      long.Parse(issuerId))
      .ExecuteAsStream();
  StreamReader responseReader = new StreamReader(responseStream);
  JObject jsonResponse = JObject.Parse(responseReader.ReadToEnd());

  Console.WriteLine("Issuer permissions update response");
  Console.WriteLine(jsonResponse.ToString());
}

Node.js

/**
 * Update permissions for an existing Google Wallet Issuer account.
 *
 * **Warning:** This operation overwrites all existing permissions!
 *
 * Example permissions list argument below. Copy the dict entry as
 * needed for each email address that will need access. Supported
 * values for role are: 'READER', 'WRITER', and 'OWNER'
 *
 * let permissions = [
 *  {
 *    'emailAddress': 'email-address',
 *    'role': 'OWNER',
 *  },
 * ];
 *
 * @param {string} issuerId The Issuer ID being used for this request.
 * @param {Array} permissions The list of email addresses and roles to assign.
 */
async updateIssuerPermissions(issuerId, permissions) {
  let response = await this.httpClient.request({
    url: `${this.permissionsUrl}/${issuerId}`,
    method: 'PUT',
    data: {
      issuerId: issuerId,
      permissions: permissions
    }
  });

  console.log('Permissions update response');
  console.log(response);
}

ใช้บัญชีที่มีอยู่

ควรใช้เกณฑ์ต่อไปนี้ในการพิจารณาว่าคุณสามารถใช้ผู้ออกบัตรได้หรือไม่ บัญชีที่มีคลาสบัตรที่มีอยู่

  • หากบัญชีผู้ออกบัตรสำหรับการพัฒนาบัตรมีคลาสสำหรับ ผู้ขายรายอื่น คุณต้องตั้งค่าบัญชีใหม่ในนามของ ผู้ขาย
  • หากบัญชีผู้ออกบัตรสำหรับการพัฒนาบัตรมีเฉพาะคลาส สำหรับผู้ขายรายนั้น

หากบัญชีเป็นไปตามเกณฑ์เหล่านี้ คุณต้องอัปเดตข้อมูลติดต่อ ใน Business Profile พร้อมด้วยข้อมูลของผู้ขายเพื่อให้แน่ใจว่าบัญชี ระบุชื่อผู้ขาย คุณควรเป็นคนเดียวที่มีสิทธิ์เข้าถึง API ในบัญชีนี้ นักพัฒนาแอปบัตรเพิ่มเติมควรสร้างบัญชีผู้ออกบัตรของตัวเอง

การกำหนดค่าบัญชีผู้ออกการแลกสิทธิ์

ใช้ Google Pay และ คอนโซล Wallet

คุณจะต้องทำตามขั้นตอนต่อไปนี้ในบัญชีผู้ออกการแลกสิทธิ์

  1. ไปที่ส่วน Google Wallet API
  2. เลือกฟีเจอร์เพิ่มเติม
  3. เลือกเพิ่มคีย์การตรวจสอบสิทธิ์
  4. อัปโหลดคีย์สาธารณะ (.pem ไฟล์) และระบุเวอร์ชันคีย์
  5. เลือกสร้างคีย์การตรวจสอบสิทธิ์

คุณจะได้รับรหัสผู้เรียกเก็บเงินเมื่อคีย์การตรวจสอบสิทธิ์ อัปโหลดเรียบร้อยแล้ว

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEchyXj869zfmKhRi9xP7f2AK07kEo
4lE7ZlWTN14jh4YBTny+hRGRXcUzevV9zSSPJlPHpqqu5pEwlv1xyFvE1w==
-----END PUBLIC KEY-----

ใช้ Google Wallet API

อัปโหลดคีย์สาธารณะ

หากต้องการกำหนดคีย์สาธารณะและเวอร์ชันคีย์โดยใช้ Google Wallet API คุณจะต้องทำดังนี้ ต้องส่งคำขอ PATCH ไปยังปลายทางของผู้ออกบัตร

PATCH https://walletobjects.googleapis.com/walletobjects/v1/issuer/{issuerId}

เนื้อหาคำขอ PATCH จะมีลักษณะคล้ายกับด้านล่างนี้

{
    "smartTapMerchantData": {
        "authenticationKeys": [
            {
                "id": 1,
                "publicKeyPem": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
            },
            {
                "id": 2,
                "publicKeyPem": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
            }
        ]
    }
}

ตัวอย่างโค้ดต่อไปนี้แสดงการอัปเดตบัญชีผู้ออกให้รวม คีย์สาธารณะสาธิตที่พูดถึงก่อนหน้านี้:

Java

/**
 * Add a new public key to an Issuer account.
 *
 * @param issuerId The issuer ID being used for this request.
 * @throws IOException
 */
public void AddSmartTapKey(Long issuerId) throws IOException {
  // New smart tap key information
  Issuer patchBody =
      new Issuer()
          .setSmartTapMerchantData(
              new SmartTapMerchantData()
                  .setAuthenticationKeys(
                      Arrays.asList(
                          new AuthenticationKey()
                              .setId(1)
                              .setPublicKeyPem(
                                  "-----BEGIN PUBLIC KEY-----\n"
                                      + "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEchyXj869zfmKhRi9xP7f2AK07kEo\n"
                                      + "4lE7ZlWTN14jh4YBTny+hRGRXcUzevV9zSSPJlPHpqqu5pEwlv1xyFvE1w==\n"
                                      + "-----END PUBLIC KEY-----"))));

  Issuer response = service.issuer().patch(issuerId, patchBody).execute();

  System.out.println("Issuer patch response");
  System.out.println(response.toPrettyString());
}

PHP

/**
 * Add a new public key to an Issuer account.
 *
 * @param string $issuerId The issuer ID being used for this request.
 */
public function addSmartTapKey(string $issuerId)
{
  // New smart tap key information
  $patchBody = new Google_Service_Walletobjects_Issuer([
    'smartTapMerchantData' => new Google_Service_Walletobjects_SmartTapMerchantData([
      'authenticationKeys' => [
        new Google_Service_Walletobjects_AuthenticationKey([
          'id' => 1,
          'publicKeyPem' => "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEchyXj869zfmKhRi9xP7f2AK07kEo\n4lE7ZlWTN14jh4YBTny+hRGRXcUzevV9zSSPJlPHpqqu5pEwlv1xyFvE1w==\n-----END PUBLIC KEY-----"
        ])
      ]
    ])
  ]);

  $response = $this->service->issuer->patch($issuerId, $patchBody);

  print "Issuer patch response\n";
  print_r($response);
}

Python

def add_smart_tap_key(self, issuer_id: str) -> str:
    """Add a new public key to an Issuer account.

    Args:
        issuer_id (str): The issuer ID being used for this request.
    """
    # New smart tap key information
    patch_body = {
        'smartTapMerchantData': {
            'authenticationKeys': [{
                'id':
                    1,
                'publicKeyPem':
                    '-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEchyXj869zfmKhRi9xP7f2AK07kEo\n4lE7ZlWTN14jh4YBTny+hRGRXcUzevV9zSSPJlPHpqqu5pEwlv1xyFvE1w==\n-----END PUBLIC KEY-----'
            }]
        }
    }

    # Make the PATCH request
    response = self.http_client.patch(url=f'{self.issuer_url}/{issuer_id}', json=patch_body)

    print('Issuer patch response')
    print(response.text)

    return response.json()['smartTapMerchantData']['smartTapMerchantId']

C#

/// <summary>
/// Add a new public key to an Issuer account.
/// </summary>
/// <param name="issuerId">The issuer ID being used for this request.</param>
public void AddSmartTapKey(long issuerId)
{
  // New smart tap key information
  Issuer patchBody = new Issuer()
  {
    SmartTapMerchantData = new SmartTapMerchantData
    {
      AuthenticationKeys = new List<AuthenticationKey>
      {
        new AuthenticationKey
        {
          Id = 1,
          PublicKeyPem = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEchyXj869zfmKhRi9xP7f2AK07kEo\n4lE7ZlWTN14jh4YBTny+hRGRXcUzevV9zSSPJlPHpqqu5pEwlv1xyFvE1w==\n-----END PUBLIC KEY-----"
        }
      }
    }
  };

  Stream responseStream = service.Issuer
      .Patch(patchBody, issuerId)
      .ExecuteAsStream();
  StreamReader responseReader = new StreamReader(responseStream);
  JObject jsonResponse = JObject.Parse(responseReader.ReadToEnd());

  Console.WriteLine("Issuer patch response");
  Console.WriteLine(jsonResponse.ToString());
}

Node.js

/**
 * Add a new public key to an Issuer account.
 *
 * @param {string} issuerId The issuer ID being used for this request.
 */
async addSmartTapKey(issuerId) {
  // New smart tap key information
  let patchBody = {
    smartTapMerchantData: {
      authenticationKeys: [
        {
          id: 1,
          publicKeyPem: '-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEchyXj869zfmKhRi9xP7f2AK07kEo\n4lE7ZlWTN14jh4YBTny+hRGRXcUzevV9zSSPJlPHpqqu5pEwlv1xyFvE1w==\n-----END PUBLIC KEY-----'
        }
      ]
    }
  };

  let response = await this.httpClient.request({
    url: `${this.issuerUrl}/${issuerId}`,
    method: 'PATCH',
    data: patchBody
  });

  console.log('Issuer patch response');
  console.log(response);
}

คำตอบจะรวมเนื้อความที่คุณส่งและฟิลด์ที่เกินมา smartTapMerchantData.smartTapMerchantId นี่คือรหัสผู้รวบรวมของ บัญชีผู้ออกการแลกสิทธิ์

รับรหัสผู้เรียกเก็บเงิน

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

GET https://walletobjects.googleapis.com/walletobjects/v1/issuer/{issuerId}

Java

/**
 * Get the Collector ID for an Issuer account.
 *
 * @param issuerId The issuer ID being used for this request.
 * @return The Collector ID
 * @throws IOException
 */
public Long GetCollectorId(Long issuerId) throws IOException {
  Issuer response = service.issuer().get(issuerId).execute();

  System.out.println("Issuer patch response");
  System.out.println(response.toPrettyString());

  return response.getSmartTapMerchantData().getSmartTapMerchantId();
}

PHP

/**
 * Get the Collector ID for an Issuer account.
 *
 * @param string $issuerId The issuer ID being used for this request.
 * @return string The Collector ID.
 */
public function getCollectorId(string $issuerId)
{
  $response = $this->service->issuer->get($issuerId);

  print "Issuer get response\n";
  print_r($response);

  return $response['smartTapMerchantData']['smartTapMerchantId'];
}

Python

def get_collector_id(self, issuer_id: str) -> str:
    """Get the Collector ID for an Issuer account.

    Args:
        issuer_id (str): The issuer ID being used for this request.
    """
    # Make the GET request
    response = self.http_client.get(url=f'{self.issuer_url}/{issuer_id}')

    print('Issuer get response')
    print(response.text)

    return response.json()['smartTapMerchantData']['smartTapMerchantId']

C#

/// <summary>
/// Get the Collector ID for an Issuer account.
/// </summary>
/// <param name="issuerId">The issuer ID being used for this request.</param>
/// <returns>The Collector ID</returns>
public string GetCollectorId(long issuerId)
{
  Stream responseStream = service.Issuer
      .Get(issuerId)
      .ExecuteAsStream();
  StreamReader responseReader = new StreamReader(responseStream);
  JObject jsonResponse = JObject.Parse(responseReader.ReadToEnd());

  Console.WriteLine("Issuer get response");
  Console.WriteLine(jsonResponse.ToString());

  return jsonResponse["smartTapMerchantData"]["smartTapMerchantId"].Value<string>();
}

Node.js

/**
 * Get the Collector ID for an Issuer account.
 *
 * @param {string} issuerId The issuer ID being used for this request.
 *
 * @returns {string} The Collector ID
 */
async getCollectorId(issuerId) {
  let response = await this.httpClient.request({
    url: `${this.issuerUrl}/${issuerId}`,
    method: 'GET'
  });

  console.log('Issuer patch response');
  console.log(response);

  return response.data.smartTapMerchantData.smartTapMerchantId;
}

การตอบกลับจะมีฟิลด์ smartTapMerchantData.smartTapMerchantId นี่คือรหัสผู้เรียกเก็บเงินของบัญชีผู้ออกการแลกสิทธิ์

การจัดการบัญชีผู้ออกบัตร

องค์กรที่ใช้บัตร

วิธีทั่วไปในการจัดการคลาสและออบเจ็กต์ของบัตรผ่านมีอยู่ 2 วิธี ผู้ขายหลายราย:

  • บัญชีผู้ออกบัตรกลางบัญชีเดียวสำหรับผู้ขายทั้งหมด
  • บัญชีผู้ออกบัตรใหม่ 1 บัญชีสำหรับผู้ขายแต่ละราย

ตัวอย่างเช่น Foo-Loyalty จะจัดการโปรแกรมสะสมคะแนนแยกกันสำหรับผู้ขาย 2 ราย ดังนี้ ILuvCoffee และ TeLuv คุณสามารถจัดการคลาสบัตรโดยสารได้ใน วิธีต่อไปนี้

แนวทาง คำอธิบาย
บัญชีผู้ออกรายเดียว มีประเภทการสะสมคะแนนทั้งหมดภายใต้ผู้ออกใบรับรองรายเดียว บัญชี "Foo-Loyalty" ขอแนะนำตัวเลือกนี้ หากคุณวางแผนที่จะติดตามบัตร สามารถแลกได้ในระดับชั้นเรียน และยัง ตัวเลือกที่ดีหากคุณไม่เคยให้สิทธิ์ผู้ขาย สิทธิ์เข้าถึง API ไปยังบัญชีผู้ออกบัตร
แยกบัญชีผู้ออกบัตร สร้างบัญชีผู้ออก 2 บัญชีแยกกัน: "iLuvCoffee ผ่าน Foo-Loyalty" และ "teaLuv via Foo-Loyalty" แนะนำให้ใช้ตัวเลือกนี้หากคุณต้องการ ว่าชั้นเรียนทั้งหมดภายใต้บัญชีผู้ออกบัตรหนึ่งๆ แลกสิทธิ์ได้ที่ระดับผู้ขาย หรือหาก คุณวางแผนจะให้ merchants API เข้าถึง บัญชีผู้ออกบัตร

บัญชีผู้ออกการแลกสิทธิ์

การพิจารณาการแลกสิทธิ์ที่ถูกต้องมี 2 กรณีดังนี้ บัญชีผู้ออกบัตรที่จะใช้

สถานการณ์ที่ 1: ผู้ขายใช้การแตะอัจฉริยะอยู่แล้ว

หากผู้ขายยืนยันว่าสามารถแลกจาก Google Wallet ได้โดยใช้ เครื่องชำระเงิน (ผู้ขายตั้งค่าเป็นผู้ออกการแลกสิทธิ์อยู่แล้ว) ให้ทำตาม ได้ที่ด้านล่าง

  1. ขอรหัสผู้ออกการแลกสิทธิ์ของผู้ขาย
  2. เพิ่มรหัสผู้ออกการแลกสิทธิ์ของผู้ขายลงในพร็อพเพอร์ตี้ redemptionIssuers ของคลาสบัตร

สถานการณ์ที่ 2: ผู้ขายเพิ่งเริ่มใช้การแตะอัจฉริยะ

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

สำหรับข้อมูลเพิ่มเติม โปรดดู การกำหนดค่าผู้ขาย