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

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

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

กำหนดบัญชีที่จะเปิดใช้สำหรับการแตะอัจฉริยะ

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

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

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

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 และ TeaLuv คุณสามารถจัดการชั้นเรียนบัตรด้วยวิธีใดวิธีหนึ่งต่อไปนี้

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

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

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

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

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

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

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

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

ดูข้อมูลเพิ่มเติมได้ที่การกำหนดค่าผู้ขาย