Method: capture

Bir müşterinin Google'daki hesapları ile ödeme işleyici arasında para aktarımı başlatır. Başlık içindeki requestId ve paymentIntegratorAccountId kombinasyonu kimlik anahtarıdır ve bu işlemi benzersiz şekilde tanımlar. Bu işlemdeki tüm mutasyonlar (geri ödemeler) captureRequestId alanındaki requestId değerini doldurur.

Uç nokta, isteği işlerken bir hatayla karşılaşırsa bu uç noktanın yanıt gövdesi ErrorResponse türünde olmalıdır.

Örnek bir istek şu şekilde görünür:


{
  "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": {}
}

Örnek bir yanıt şöyle görünür:


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

HTTP isteği

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

İstek içeriği

İstek gövdesi, aşağıdaki yapıyla birlikte veriler içerir:

JSON gösterimi
{
  "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.
}
Alanlar
requestHeader

object (RequestHeader)

ZORUNLU: Tüm istekler için ortak başlık.

paymentIntegratorAccountId

string

ZORUNLU: Bu işlemle ilgili sözleşmeden doğan kısıtlamaları tanımlayan ödeme entegratörü hesap kimliğidir.

transactionDescription

string

ZORUNLU: Müşterinin ekstresine eklenebilecek işlem açıklamasıdır. requestHeader içinde bulunan userLocale'ye göre yerelleştirilmiş. Bu biçim önceden haber verilmeksizin değiştirilebilir ve hiçbir zaman ayrıştırılmamalıdır.

currencyCode

string

ZORUNLU: ISO 4217 3 harfli para birimi kodu

amount

string (Int64Value format)

ZORUNLU: Para biriminin mikro cinsinden satın alma tutarı.

captureContext

object (CaptureContext)

ZORUNLU: Bu yakalamayla ilgili bağlam.

fopDetails alanı. ZORUNLU: FOP Bu Yakalama işleminin ayrıntıları. fopDetails şunlardan yalnızca biri olabilir:
googlePaymentToken

string

Her iki şirketin birbirleri arasındaki satın alma işlemlerinde hesaplarını tanımlamak için kullanacağı jeton.

mandateDetails

object (MandateDetails)

Emirlere özel ödeme ayrıntıları

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

upcomingTransactionNotification gerekli olan emirlere özel ödeme ayrıntıları

account_verification alanı.

account_verification şunlardan yalnızca biri olabilir:

authenticationRequestId

string

İSTEĞE BAĞLI: İlişkili kimlik doğrulama isteğinin requestId kadarı. Bu yoksa bu yakalamaya kimlik doğrulama bağlanamaz.

Bu mevcutsa kullanıcının kimliği bu çağrıdan hemen önce veya otomatik ödeme planı ayarlandığında kimliği doğrulanmış demektir.

otpVerification

object (OtpVerification)

İSTEĞE BAĞLI: sendOtp kaynağından oluşturulan OTP'yi doğrulamak için gerekli veriler. Bu uyarı, yalnızca kullanıcı sendOtp yolunu tamamladıysa mevcuttur.

Yanıt gövdesi

Yakalama yöntemi için yanıt nesnesi.

Başarılı olursa yanıt metni aşağıdaki yapıyla birlikte verileri içerir:

JSON gösterimi
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
Alanlar
responseHeader

object (ResponseHeader)

ZORUNLU: Tüm yanıtlar için ortak başlık.

paymentIntegratorTransactionId

string

İSTEĞE BAĞLI: Bu tanımlayıcı, entegratöre özeldir ve entegratör tarafından oluşturulur. Bu, entegratörün bu işlemi bildiği tanımlayıcıdır.

Kolaylık sağlaması açısından bu tanımlayıcı havale ayrıntılarına eklenmiştir.

userMessage
(deprecated)

string

KULLANIMDAN KALDIRILDI: Sonuç SUCCESS değilse kullanıcıya gösterilecek sonucun açıklaması.

result

enum (CaptureResultCode)

ZORUNLU: Bu yakalamanın sonucu.

rawResult

object (RawResult)

İSTEĞE BAĞLI: Bu yakalamanın ham sonucu. Google'ın risk motoru ve analizlerinin bilgilendirilmesine yardımcı olmak için kullanılır. Reddetme kodu eşleme durumlarında bazen veriler kaybolur. Entegratör, Google'a ham bir kod vermeyi tercih edebilir. Örneğin, bir kredi kartı ağ geçidi (entegre edici) bu alanı, VISA ağından alınan reddetme kodunu aynen Google'a iletmek için kullanabilir. Bu durumda, scope "vize", rawCode ise VISA ağının döndürdüğü değer olacaktır.

result, SUCCESS değilse bu değer zorunludur.

transactionLimit

string (Int64Value format)

İSTEĞE BAĞLI: Sonuç CHARGE_EXCEEDS_TRANSACTION_LIMIT ise bu, kullanıcının bir işlem için harcayabileceği maksimum tutardır (mikro cinsinden). Bu özellik, yapılandırılmış, kullanıcıya yönelik mesajlaşma ve ret oranı analizi için kullanılır.

Bu, istekteki currencyCode ile göreli bir sınır olmalıdır.

currentBalance

string (Int64Value format)

İSTEĞE BAĞLI: Sonuç INSUFFICIENT_FUNDS ise bu, kullanıcının hesabındaki mevcut bakiyedir (mikro cinsinden). Bu, yapılandırılmış, kullanıcıya yönelik mesajlaşma için kullanılır.

Bu değer, istekteki currencyCode ile aynı para biriminde olmalıdır.

MandateDetails

Yakalanma yetkisiyle ilgili ayrıntılar.

JSON gösterimi
{
  "mandateId": string
}
Alanlar
mandateId

string

ZORUNLU: createMandate görüşmesi sırasında Google tarafından oluşturulan vekalet kimliği.

MandateWithNotificationDetails

Gerekli bildirim ayrıntılarıyla birlikte emrin alınmasıyla ilgili ayrıntılar.

JSON gösterimi
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
Alanlar
mandateId

string

ZORUNLU: createMandate görüşmesi sırasında Google tarafından oluşturulan vekalet kimliği.

upcomingTransactionNotificationId

string

ZORUNLU: Bu işlem hakkında önceden bildirimde bulunmak için yapılan upcomingTransactionNotification aramasının requestId işlemi.

CaptureContext

Bu nesne, yakalamanın nasıl istendiğine dair bağlam sağlar.

JSON gösterimi
{
  "userIpAddress": string
}
Alanlar
userIpAddress

string

İSTEĞE BAĞLI: Satın alma işlemi oturumdaki bir kullanıcı tarafından yapıldıysa kullanıcının cihazının IP adresidir. Kullanıcı oturumda değilse bu alan boş bırakılır. Söz konusu sözleşme, bu alana ihtiyaç duyulduğunu göstermiyorsa her zaman boş bırakılır.

CaptureResultCode

Yakalama için sonuç kodları.

Sıralamalar
UNKNOWN_RESULT Bu varsayılan değeri hiçbir zaman ayarlamayın.
SUCCESS Yakalama başarılı, ürünleri teslim edin.
CHARGE_EXCEEDS_TRANSACTION_LIMIT Bu yakalama isteğinin amount değeri, işlem başına sınırı aşıyor. Bu kod kullanılırsa kullanıcıyla mesajlaşma amacıyla transactionLimit alanını doldurun.
CHARGE_EXCEEDS_DAILY_LIMIT Bu hesap, günlük sınırlarını aştığından şu anda satın alma işlemlerinde kullanılamaz.
CHARGE_EXCEEDS_MONTHLY_LIMIT Bu hesap, aylık sınırlarını aştığından şu anda satın alma işlemlerinde kullanılamaz.
CHARGE_UNDER_LIMIT Bu yakalama isteğinin amount, minimum işlem tutarını karşılamıyor.
INSUFFICIENT_FUNDS Bu hesapta, söz konusu yakalamayı garanti etmek için yeterli bakiye yok.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY Bu hesap, istenen para birimini desteklemiyor.
ACCOUNT_CLOSED

Kullanıcının entegratörde bulunan hesabı kapatıldı.

Bu değerin döndürülmesi, kullanıcının aracının Google tarafından kapatılmasına neden olur. Kullanıcı, ilişkilendirme akışını tekrar gerçekleştirerek yeni bir araç eklemeye zorlanır.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Kullanıcının entegratördeki hesabı kapatıldı ve hesabın ele geçirildiğinden şüpheleniliyor.

Bu değerin döndürülmesi, kullanıcının aracının Google tarafından kapatılmasına neden olur. Kullanıcı, ilişkilendirme akışını tekrar gerçekleştirerek yeni bir araç eklemeye zorlanır.

ACCOUNT_ON_HOLD Hesap beklemede.
ACCOUNT_CLOSED_FRAUD

Kullanıcının entegratördeki hesabı sahtekarlık nedeniyle kapatıldı.

Bu değerin döndürülmesi, kullanıcının aracının Google tarafından kapatılmasına neden olur. Kullanıcı, ilişkilendirme akışını tekrar gerçekleştirerek yeni bir araç eklemeye zorlanır.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

Hesap etkin, ancak kullanıcı entegratör tarafında GPT geçersiz kılındı.

Bu değerin döndürülmesi, kullanıcının aracının Google tarafından kapatılmasına neden olur. Kullanıcı, ilişkilendirme akışını tekrar gerçekleştirerek yeni bir araç eklemeye zorlanır.

TOKEN_REFRESH_REQUIRED Bu işlemin geri döndürülmesi için kullanıcının yenileme akışından geçmesi gerekir.
OTP_NOT_MATCHED OTP, entegratörün gönderdiği ile eşleşmedi.
OTP_ALREADY_USED OTP zaten kullanıldı.
RISK_DECLINED

Entegratör tarafındaki bir risk kontrolü nedeniyle işlem reddedildi.

Bu, söz konusu ödeme için kalıcı bir hatadır, ancak kullanıcının aracının Google'da kapatılmasına neden olmaz.

NO_GOOD_FUNDING_SOURCE_AVAILABLE Kullanıcının hesabında işlem için ödeme yapabilecek, çalışan bir ödeme kaynağı yapılandırılmış değildir.
FUNDING_SOURCE_UNAVAILABLE

Ödemeyi veren kuruluş veya para kaynağı kullanılamıyor. Bu ödeme işlemi yeniden denenirse, ödeme işlemi başarısız olur.

Google, iş ortağı tarafından 4xx veya 5xx yanıt kodu döndürdüğünde ödemeleri yeniden dener. Bu nedenle, temel para kaynağı tekrar kullanılabilir olduğunda aynı ödemenin tekrar denenmesi başarılı olursa iş ortakları normalde bu yanıt kodlarından birini döndürmelidir. Bununla birlikte, Google'ın yeniden ödeme denemesi başarısız olduğu teknik nedenler varsa iş ortağı, Google'a aynı ödemeyi tekrar denememesi gerektiğini belirtmek için "FUNDING_SOURCE_UNAVAILABLE" yanıtını gönderebilir.

Not: Google, farklı bir requestId kullanarak bu ödemeyi yeniden deneyebilir ancak bu ödeme isteği Reddedildi olarak işaretlenecektir.

MANDATE_NOT_ACTIVE Bu yakalama için kullanılan talimat artık etkin değil. Bu döndürülen değer, kullanıcının talimat aracının Google ile kapatılmasına neden olur.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED Kullanıcıya yinelenen talimat ödemesi için gönderilen bildirimin süresi doldu.