Method: capture

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

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

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


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
    "requestTimestamp": "1502220196077"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ",
  "transactionDescription": "Google - Music",
  "currencyCode": "INR",
  "amount": "728000000",
  "captureContext": {}
}

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


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "result": "SUCCESS",
  "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
}

คำขอ HTTP

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

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

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

การแสดง JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "transactionDescription": string,
  "currencyCode": string,
  "amount": string,
  "captureContext": {
    object (CaptureContext)
  },

  // Union field fopDetails can be only one of the following:
  "googlePaymentToken": string,
  "mandateDetails": {
    object (MandateDetails)
  },
  "mandateWithNotificationDetails": {
    object (MandateWithNotificationDetails)
  }
  // End of list of possible types for union field fopDetails.

  // 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)

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

paymentIntegratorAccountId

string

ต้องระบุ: นี่คือตัวระบุบัญชีของผู้รวมการชำระเงินที่ระบุข้อจำกัดทางสัญญาเกี่ยวกับธุรกรรมนี้

transactionDescription

string

ต้องระบุ: นี่คือคำอธิบายธุรกรรมที่สามารถระบุไว้ในใบแจ้งยอดของลูกค้า แปลเป็นภาษาของ userLocale ที่พบใน requestHeader รูปแบบนี้สามารถเปลี่ยนแปลงได้โดยไม่ต้องแจ้งให้ทราบ และห้ามแยกวิเคราะห์เด็ดขาด

currencyCode

string

ต้องระบุ: รหัสสกุลเงิน 3 ตัวอักษรตามมาตรฐาน ISO 4217

amount

string (Int64Value format)

ต้องระบุ: จำนวนการซื้อเป็นไมโครของหน่วยสกุลเงิน

captureContext

object (CaptureContext)

ต้องระบุ: บริบทเกี่ยวกับการจับภาพนี้

ฟิลด์การรวม fopDetails ต้องระบุ: รายละเอียดรูปแบบการชำระเงินสำหรับธุรกรรมการบันทึกนี้ fopDetails ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
googlePaymentToken

string

โทเค็นที่ทั้ง 2 บริษัทจะใช้เพื่อระบุบัญชีสำหรับการซื้อระหว่างกัน

mandateDetails

object (MandateDetails)

รายละเอียดการชำระเงินตามข้อกำหนด

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

รายละเอียดการชำระเงินที่เฉพาะเจาะจงสำหรับหนังสือมอบอำนาจ หากต้องระบุ upcomingTransactionNotification

ฟิลด์การรวม account_verification

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

authenticationRequestId

string

ไม่บังคับ: requestId ของคำขอการตรวจสอบสิทธิ์ที่เกี่ยวข้อง หากไม่มีคอลัมน์นี้ แสดงว่าไม่สามารถเชื่อมโยงการตรวจสอบสิทธิ์กับการบันทึกนี้ได้

หากมีค่านี้ หมายความว่าผู้ใช้ได้รับการตรวจสอบสิทธิ์ก่อนการโทรนี้ทันที หรือได้รับการตรวจสอบสิทธิ์เมื่อมีการตั้งค่ากำหนดการชำระเงินอัตโนมัติ

otpVerification

object (OtpVerification)

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

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

ออบเจ็กต์การตอบกลับสำหรับวิธีการจับภาพ

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

การแสดง JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
ช่อง
responseHeader

object (ResponseHeader)

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

paymentIntegratorTransactionId

string

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

เพื่อความสะดวก ตัวระบุนี้จะรวมอยู่ในรายละเอียดการส่งเงิน

userMessage
(deprecated)

string

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

result

enum (CaptureResultCode)

REQUIRED: ผลลัพธ์ของการจับภาพนี้

rawResult

object (RawResult)

ไม่บังคับ: ผลลัพธ์ที่เป็นข้อมูลดิบของการจับภาพนี้ ใช้เพื่อช่วยแจ้งเครื่องมือและข้อมูลวิเคราะห์ของ Google ในสถานการณ์การปฏิเสธการแมปโค้ด บางครั้งข้อมูลอาจสูญหาย ผู้รวมบริการสามารถเลือกให้โค้ดดิบกับ Google เช่น เกตเวย์บัตรเครดิต (ผู้รวมบริการ) อาจใช้ช่องนี้เพื่อสื่อสารกับ Google เกี่ยวกับรหัสการปฏิเสธที่แน่นอนที่ได้รับจากเครือข่าย VISA ในกรณีนี้ scope จะเป็น "visa" และ rawCode จะเป็นอะไรก็ได้ที่เครือข่าย VISA ส่งคืน

ต้องระบุค่านี้หาก result ไม่ใช่ SUCCESS

transactionLimit

string (Int64Value format)

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

ค่านี้ต้องสัมพันธ์กับ currencyCode ในคำขอ

currentBalance

string (Int64Value format)

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

โดยค่านี้ต้องอยู่ในสกุลเงินเดียวกับ currencyCode ในคำขอ

MandateDetails

รายละเอียดเกี่ยวกับหนังสือมอบอำนาจที่จะจับภาพ

การแสดง JSON
{
  "mandateId": string
}
ช่อง
mandateId

string

ต้องระบุ: รหัสหนังสือมอบอำนาจที่ Google สร้างขึ้นซึ่งส่งระหว่างการโทรติดต่อ createMandate

MandateWithNotificationDetails

รายละเอียดเกี่ยวกับหนังสือมอบอำนาจที่จะจับภาพและรายละเอียดการแจ้งเตือนที่จำเป็น

การแสดง JSON
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
ช่อง
mandateId

string

ต้องระบุ: รหัสหนังสือมอบอำนาจที่ Google สร้างขึ้นซึ่งส่งระหว่างการโทรติดต่อ createMandate

upcomingTransactionNotificationId

string

ต้องระบุ: สาย requestId จาก upcomingTransactionNotification ซึ่งสร้างขึ้นเพื่อแจ้งเตือนล่วงหน้าเกี่ยวกับธุรกรรมนี้

CaptureContext

ออบเจ็กต์นี้ให้บริบทเกี่ยวกับวิธีการขอจับภาพ

การแสดง JSON
{
  "userIpAddress": string
}
ช่อง
userIpAddress

string

ไม่บังคับ: นี่คือที่อยู่ IP ของอุปกรณ์ของผู้ใช้หากผู้ใช้ในเซสชันทำการซื้อ หากผู้ใช้ไม่ได้อยู่ในเซสชัน ค่านี้จะว่างเปล่า หากสัญญานั้นไม่ได้ระบุถึงข้อกำหนดของช่องนี้ ช่องดังกล่าวจะว่างเปล่าเสมอ

CaptureResultCode

รหัสผลลัพธ์สำหรับการจับภาพ

Enum
UNKNOWN_RESULT ห้ามตั้งค่าเริ่มต้นนี้เป็นอันขาด
SUCCESS จับภาพ นำส่งสินค้าสำเร็จ
CHARGE_EXCEEDS_TRANSACTION_LIMIT amount ของคำขอบันทึกนี้เกินขีดจำกัดต่อธุรกรรม หากใช้รหัสนี้ ให้เติมข้อมูลในช่อง transactionLimit เพื่อการรับส่งข้อความกับผู้ใช้
CHARGE_EXCEEDS_DAILY_LIMIT บัญชีนี้ไม่สามารถใช้ซื้อสินค้าได้ในขณะนี้ เนื่องจากเกินขีดจํากัดต่อวัน
CHARGE_EXCEEDS_MONTHLY_LIMIT ไม่สามารถใช้บัญชีนี้สำหรับการซื้อได้ในขณะนี้ เนื่องจากเกินขีดจํากัดรายเดือนแล้ว
CHARGE_UNDER_LIMIT amount ของคำขอบันทึกนี้ไม่เป็นไปตามจำนวนเงินขั้นต่ำสำหรับธุรกรรม
INSUFFICIENT_FUNDS บัญชีนี้มีเงินไม่เพียงพอที่จะรับประกันการจับภาพนี้
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY บัญชีนี้ไม่สนับสนุนสกุลเงินที่ร้องขอ
ACCOUNT_CLOSED

ระบบได้ปิดบัญชีของผู้ใช้ที่คงไว้ชั่วคราวไว้กับผู้ผสานการทำงานระบบแล้ว

การแสดงผลค่านี้จะทำให้เครื่องมือของผู้ใช้ปิดกับ Google ระบบจะบังคับผู้ใช้ให้เพิ่มเครื่องมือใหม่โดยทำตามขั้นตอนการเชื่อมโยงอีกครั้ง

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

มีการปิดบัญชีของผู้ใช้กับผู้ผสานการทำงานระบบ บัญชีที่น่าสงสัยจะเข้าควบคุม

การแสดงผลค่านี้จะทำให้เครื่องมือของผู้ใช้ปิดกับ Google ระบบจะบังคับผู้ใช้ให้เพิ่มเครื่องมือใหม่โดยทำตามขั้นตอนการเชื่อมโยงอีกครั้ง

ACCOUNT_ON_HOLD บัญชีถูกระงับ
ACCOUNT_CLOSED_FRAUD

ระบบได้ปิดบัญชีของผู้ใช้ที่เก็บรักษาไว้กับผู้รวมระบบเนื่องจากมีการประพฤติมิชอบ

การแสดงผลค่านี้จะทำให้เครื่องมือของผู้ใช้ปิดกับ Google ระบบจะบังคับผู้ใช้ให้เพิ่มเครื่องมือใหม่โดยทำตามขั้นตอนการเชื่อมโยงอีกครั้ง

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

บัญชียังใช้งานได้อยู่ แต่ผู้ใช้ทางฝั่งผู้ผสานการทำงานระบบทำให้ GPT ใช้งานไม่ได้

การแสดงผลค่านี้จะทำให้เครื่องมือของผู้ใช้ปิดกับ Google ระบบจะบังคับผู้ใช้ให้เพิ่มเครื่องมือใหม่โดยทำตามขั้นตอนการเชื่อมโยงอีกครั้ง

TOKEN_REFRESH_REQUIRED ผู้ใช้จะต้องทำตามขั้นตอนการรีเฟรชจึงจะแสดงผลได้
OTP_NOT_MATCHED OTP ไม่ตรงกับข้อมูลที่ผู้ผสานการทำงานส่งมา
OTP_ALREADY_USED ใช้ OTP ไปแล้ว
RISK_DECLINED

ธุรกรรมถูกปฏิเสธเนื่องจากมีการตรวจสอบความเสี่ยงทางฝั่งผู้รวมระบบ

การชำระเงินนี้ถือเป็นความล้มเหลวถาวร แต่ไม่ได้ทำให้เครื่องมือของผู้ใช้ถูกปิดที่ Google

NO_GOOD_FUNDING_SOURCE_AVAILABLE ผู้ใช้ไม่มีวิธีการชำระเงินที่ใช้งานได้ที่กำหนดค่าไว้ในบัญชีที่สามารถชำระเงินสำหรับธุรกรรมได้
FUNDING_SOURCE_UNAVAILABLE

ผู้ออกบัตรหรือแหล่งเงินทุนที่สำคัญไม่พร้อมให้บริการ และการพยายามชำระเงินเดิมนี้อีกครั้งจะไม่สำเร็จ หากลองดำเนินการอีกครั้ง

Google จะลองชำระเงินอีกครั้งเมื่อพาร์ทเนอร์ส่งโค้ดตอบกลับ 4xx หรือ 5xx กลับมา ด้วยเหตุนี้ โดยปกติ พันธมิตรจึงควรส่งคืนรหัสตอบกลับใดรหัสหนึ่งดังกล่าว หากการพยายามชำระเงินแบบเดียวกันนี้อีกครั้งอาจสำเร็จเมื่อมีแหล่งเงินสำรองพร้อมใช้งานอีกครั้ง แต่หากมีเหตุผลทางเทคนิคที่ทำให้ Google ลองชำระเงินอีกครั้งยังคงไม่สำเร็จ พาร์ทเนอร์สามารถส่งคืน "FUNDING_SOURCE_UNAVAILABLE" เพื่อเป็นทางบอก Google ว่าไม่ควรลองชำระเงินเดิมนี้อีกครั้ง

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

MANDATE_NOT_ACTIVE หนังสือมอบอำนาจที่ใช้สำหรับการจับภาพนี้ไม่ได้ใช้งานอีกต่อไป ค่าที่ส่งคืนนี้จะทำให้ระบบปิดเครื่องมือในมอบอำนาจของผู้ใช้กับ Google
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED การแจ้งเตือนที่ส่งถึงผู้ใช้สำหรับการชำระเงินตามคำสั่งตามรอบหมดอายุแล้ว