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 ต้องระบุ: รายละเอียด FOP สำหรับธุรกรรมของ Capture นี้ 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)

ต้องระบุ: ผลลัพธ์ของการบันทึกนี้

rawResult

object (RawResult)

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

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

transactionLimit

string (Int64Value format)

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

ต้องเป็นขีดจำกัดที่เกี่ยวข้องกับ currencyCode ในคำขอ

currentBalance

string (Int64Value format)

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

ค่านี้ต้องใช้สกุลเงินเดียวกับ 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 การแจ้งเตือนที่ส่งถึงผู้ใช้เกี่ยวกับการชำระเงินตามรอบเวลาหมดอายุแล้ว