Method: associateAccount

เชื่อมโยงบัญชีของลูกค้ากับผู้ประมวลผลการชำระเงินกับเครื่องมือของ Google ที่เพิ่ม

การเชื่อมโยงบัญชีจะเกิดขึ้นหลังจากที่ผู้ผสานรวมระบบตรวจสอบสิทธิ์ผู้ใช้แล้ว การเชื่อมโยงจะเกิดขึ้นผ่านการเรียกแบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์ที่มี requestId สำหรับขั้นตอนการตรวจสอบสิทธิ์ที่เกี่ยวข้อง (authenticationRequestId), associationId และ googlePaymentToken (GPT) ผู้ประมวลผลการชำระเงินควรเชื่อมโยง associationId และ googlePaymentToken กับบัญชีของลูกค้าสำหรับการตรวจสอบสิทธิ์ GPT ใช้ในการเริ่มชำระเงิน ระบบจะใช้ associationId ในระหว่างการเรียกใช้การตรวจสอบสิทธิ์อีกครั้งเพื่อระบุบัญชีสำหรับการตรวจสอบสิทธิ์

หาก Google ส่ง associationId หรือ googlePaymentToken ที่ผู้ผสานรวมระบบเห็นแล้วในระหว่างการเชื่อมโยงอื่น อุปกรณ์จะแสดงข้อผิดพลาด

หากปลายทางพบข้อผิดพลาดขณะประมวลผลคำขอ เนื้อหาการตอบกลับจากปลายทางนี้ควรเป็นประเภท ErrorResponse

ตัวอย่างคำขอมีลักษณะดังนี้


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "cmVxdWVzdDE",
    "requestTimestamp": "1481899949606"
 },
 "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ__",
 "authenticationRequestId": "bnAxdWTydDX==",
 "associationId": "LmddbXBsZSByZWZlcmVuY2UgdG9rZW4gdmFsdWU_",
 "provideUserInformation": true
}

ตัวอย่างคำตอบจะมีลักษณะดังนี้


  {
  "responseHeader": {
    "responseTimestamp": "1481899949611"
  },
  "paymentIntegratorAssociateAccountId": "xx77df88934hfd",
  "accountId": "1234-5678-91",
  "accountNickname": "***-91",
  "tokenExpirationTime": "0",
  "userInformation": {
    "name": "Example Customer",
    "addressLine": ["123 Main St"],
    "localityName": "Springfield",
    "administrativeAreaName": "CO",
    "postalCodeNumber": "80309",
    "countryCode": "US"
  },
  "result": "SUCCESS"
}

คำขอ HTTP

POST https://www.integratorhost.example.com/v1/associateAccount

เนื้อหาของคำขอ

เนื้อหาของคำขอมีข้อมูลที่มีโครงสร้างต่อไปนี้

การแสดง JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "provideUserInformation": boolean,
  "googlePaymentToken": string,
  "associationId": string,

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
ช่อง
requestHeader

object (RequestHeader)

ต้องระบุ: ส่วนหัวทั่วไปสำหรับคำขอทั้งหมด

provideUserInformation

boolean

ต้องระบุ: เป็นจริงหากต้องการให้ผู้ผสานรวมระบบแจ้งที่อยู่ที่เชื่อมโยงกับบัญชีนี้

googlePaymentToken

string

ต้องระบุ: โทเค็นที่ Google จะใช้เพื่อเริ่มการซื้อกับผู้ประมวลผลการชำระเงิน

ซึ่งเป็นสตริงที่มีความยาวสูงสุด 100 อักขระ

associationId

string

ต้องระบุ: ตัวระบุของการเชื่อมโยงนี้ ตัวระบุนี้สร้างขึ้นโดย Google และจะส่งในระหว่างขั้นตอนการตรวจสอบสิทธิ์อีกครั้งเพื่อระบุว่าบัญชีใดควรตรวจสอบสิทธิ์

ซึ่งเป็นสตริงที่มีความยาวสูงสุด 100 อักขระ

ช่องการรวม account_verification

account_verification ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้

authenticationRequestId

string

ไม่บังคับ: requestId ของคำขอการตรวจสอบสิทธิ์ที่เกิดขึ้นก่อนการเรียกนี้ ตัวระบุนี้สร้างขึ้นโดย Google ในขั้นตอนการตรวจสอบสิทธิ์ ซึ่งจะปรากฏก็ต่อเมื่อผู้ใช้ผ่านการตรวจสอบสิทธิ์แอป Android, การตรวจสอบสิทธิ์ผ่านเว็บ หรือวิธีการตรวจสอบสิทธิ์แบบไม่พร้อมกันที่ใช้ authenticationResultNotification แล้วเท่านั้น

otpVerification

object (OtpVerification)

ไม่บังคับ: ข้อมูลที่จำเป็นในการยืนยัน OTP ที่สร้างขึ้นจาก sendOtp ซึ่งจะแสดงก็ต่อเมื่อผู้ใช้ผ่านเส้นทาง sendOtp แล้วเท่านั้น

เนื้อหาการตอบกลับ

ออบเจ็กต์การตอบกลับสำหรับเมธอดบัญชีที่เชื่อมโยง

หากทำสำเร็จ เนื้อหาการตอบกลับจะมีข้อมูลซึ่งมีโครงสร้างดังต่อไปนี้

การแสดง JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorAssociateAccountId": string,
  "tokenExpirationTime": string,
  "accountId": string,
  "userMessage": string,
  "userInformation": {
    object (UserInformation)
  },
  "result": enum (AssociateAccountResultCode),

  // Union field account_names can be only one of the following:
  "accountNickname": string,
  "fullAccountNickname": string
  // End of list of possible types for union field account_names.
}
ช่อง
responseHeader

object (ResponseHeader)

ต้องระบุ: ส่วนหัวทั่วไปของคำตอบทั้งหมด

paymentIntegratorAssociateAccountId

string

ต้องระบุ: ตัวระบุนี้ใช้สำหรับผู้รวมระบบโดยเฉพาะและสร้างขึ้นโดยผู้ผสานรวมระบบ โดยจะใช้สำหรับการแก้ไขข้อบกพร่องเพื่อระบุการโทรนี้เท่านั้น ซึ่งเป็นตัวระบุที่ผู้ผสานรวมระบบรู้จักการเรียกใช้นี้

tokenExpirationTime

string (int64 format)

ไม่บังคับ: มิลลิวินาทีตั้งแต่ Epoch เมื่อโทเค็นหมดอายุ ใช้ 0 เพื่อบ่งบอกว่าโทเค็นไม่มีวันหมดอายุ

accountId

string

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

ค่านี้จะเปลี่ยนแปลงไม่ได้ตลอดอายุของบัญชี

userMessage
(deprecated)

string

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

userInformation

object (UserInformation)

ต้องระบุ: ข้อมูลผู้ใช้ที่ผู้ผสานรวมระบบทราบและจะแชร์ข้อมูลเกี่ยวกับลูกค้ารายนี้ให้กับ Google ใช้สำหรับข้อมูลความเสี่ยงและการป้อนข้อมูลล่วงหน้า

result

enum (AssociateAccountResultCode)

ต้องระบุ: ผลของการเชื่อมโยงนี้

ช่องการรวม account_names

account_names ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้

accountNickname

string

ไม่บังคับ: สตริงที่ผู้ใช้รู้จักบัญชีนี้เพื่อการแสดงผล นี่คือส่วนต่อท้ายของชื่อเล่นของบัญชี เช่น หมายเลขโทรศัพท์ 4 หลักสุดท้าย Google จะระบุในอินเทอร์เฟซผู้ใช้ว่านี่เป็นเพียงส่วนต่อท้ายของชื่อเล่น

ค่านี้จะแสดงใน UI เช่น ขั้นตอนการซื้อ เพื่อให้ผู้ใช้แยกความแตกต่างระหว่างวิธีการชำระเงินต่างๆ ได้

fullAccountNickname

string

ไม่บังคับ: สตริงที่ผู้ใช้รู้จักบัญชีนี้เพื่อการแสดงผล นี่คือชื่อเล่นของบัญชีที่สมบูรณ์ ซึ่งแตกต่างจาก accountNickname เช่น 56565-56501 สำหรับหมายเลขโทรศัพท์ หรือ sally@sample-email.com สำหรับข้อมูลประจำตัวอีเมล

ค่านี้จะแสดงใน UI เช่น ขั้นตอนการซื้อ เพื่อให้ผู้ใช้แยกความแตกต่างระหว่างวิธีการชำระเงินต่างๆ ได้

UserInformation

โครงสร้างที่เก็บข้อมูลเกี่ยวกับผู้ใช้

การแสดง JSON
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string,
  "phone": string,
  "emailAddress": string
}
ช่อง
name

string

ไม่บังคับ: ชื่อเต็มของลูกค้า

addressLine[]

string

ไม่บังคับ: ส่วนนี้จะใช้ข้อความของที่อยู่ที่ไม่มีโครงสร้าง

localityName

string

ไม่บังคับ: คำนี้มีความหมายไม่ชัดเจน แต่โดยทั่วไปจะหมายถึงส่วนเมืองของที่อยู่ ในภูมิภาคของโลกซึ่งยังไม่มีการกำหนดย่านต่างๆ ไว้ชัดเจนหรือไม่เหมาะสมกับโครงสร้างนี้ (เช่น ญี่ปุ่นและจีน) ให้ปล่อย localityName ว่างไว้และใช้ addressLine

ตัวอย่าง: เมืองในสหรัฐอเมริกา, เขตไอที, เมืองไปรษณีย์ของสหราชอาณาจักร

administrativeAreaName

string

ไม่บังคับ: เขตการปกครองระดับบนสุดของประเทศนี้ เช่น รัฐในสหรัฐอเมริกา ภูมิภาคไอที จังหวัดในจีน จังหวัดญี่ปุ่น"

postalCodeNumber

string

ไม่บังคับ: แม้ว่าจะชื่อ แต่ค่า zipCodeNumber มักจะเป็นตัวอักษรและตัวเลขคละกัน เช่น "94043", "SW1W", "SW1W 9TQ"

countryCode

string

ไม่บังคับ: รหัสประเทศของที่อยู่ลูกค้าควรเป็น ISO-3166-1 Alpha-2

phone

string

ไม่บังคับ: หมายเลขโทรศัพท์ของลูกค้า

emailAddress

string

ไม่บังคับ: อีเมลของลูกค้า

AssociateAccountResultCode

รหัสผลลัพธ์สำหรับบัญชีที่เชื่อมโยง

Enum
UNKNOWN_RESULT โปรดอย่าตั้งค่าเริ่มต้นนี้
SUCCESS เชื่อมโยงสำเร็จ
USER_AUTHENTICATION_FAILED แม้ว่าระบบจะส่งคืนกลุ่มการตรวจสอบสิทธิ์บัญชี แต่การตรวจสอบสิทธิ์ผู้ใช้ล้มเหลว
NOT_ELIGIBLE บัญชีของผู้ใช้ไม่มีสิทธิ์ใช้บริการนี้
OTP_NOT_MATCHED OTP ไม่ตรงกับสิ่งที่ผู้ผสานรวมระบบส่ง
OTP_ALREADY_USED มีการใช้ OTP อยู่แล้ว
OTP_LIMIT_REACHED ผู้ใช้ขอหรือพยายามยืนยัน OTP จำนวนมากเกินไป
OTP_EXPIRED OTP หมดอายุแล้ว