Method: capture

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

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

Örnek istek:


{
  "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 aşağıdaki gibidir:


{
  "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ıya sahip verileri 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 tanımlayıcısıdır.

transactionDescription

string

ZORUNLU: Müşterinin ekstresine eklenebilecek işlem açıklamasıdır. requestHeader içinde bulunan userLocale'e yerelleştirildi. Bu biçim haber verilmeden 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 bilgisi.

Birleştirme alanı fopDetails. ZORUNLU: Bu yakalama işlemi için ödeme yöntemi ayrıntıları. fopDetails şunlardan yalnızca biri olabilir:
googlePaymentToken

string

İki şirketin de birbirleri arasındaki satın alma işlemlerinde hesabı tanımlamak için kullanacağı jeton.

mandateDetails

object (MandateDetails)

Talimatlara özel ödeme ayrıntıları.

mandateWithNotificationDetails

object (MandateWithNotificationDetails)

upcomingTransactionNotification gerekli olan, talimatlara özel ödeme ayrıntıları.

Birleştirme alanı account_verification.

account_verification şunlardan yalnızca biri olabilir:

authenticationRequestId

string

İSTEĞE BAĞLI: İlişkili kimlik doğrulama isteğinin requestId kadarı. Bu mevcut değilse bu yakalamaya hiçbir kimlik doğrulama bağlanamaz.

Bu durum mevcutsa kullanıcının kimliği bu aramadan hemen önce veya otomatik bir ödeme planı ayarlandığında kimlik doğrulaması yapılmış demektir.

otpVerification

object (OtpVerification)

İSTEĞE BAĞLI: sendOtp tarihinden oluşturulan bir OTP'yi doğrulamak için gereken veriler. Bu uyarı yalnızca kullanıcı sendOtp yolundan gittiyse gösterilir.

Yanıt gövdesi

Yakalama yönteminin 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, entegrasyon uzmanını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ında belirtilmiş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 motorunu ve analizlerini bilgilendirmek için kullanılır. Reddetme kodu eşleme durumlarında veriler bazen kaybolur. Entegratör, Google'a ham kod vermeyi tercih edebilir. Örneğin, bir kredi kartı ağ geçidi (entegratör) bu alanı, VISA ağından alınan ret kodunu tam olarak Google'a iletmek için kullanabilir. Bu durumda, scope "vize" olacaktır rawCode, 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şlemde harcayabileceği maksimum tutardır (mikrosaniye cinsinden). Bu özellik, kullanıcıya yönelik yapılandırılmış mesajlar ve reddetme oranı analizi için kullanılır.

Bu, istekteki currencyCode değerine göre 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 geçerli bakiyedir (mikro cinsinden). Bu, kullanıcılara yönelik yapılandırılmış mesajlar için kullanılır.

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

MandateDetails

Alınacak talimatla ilgili ayrıntılar.

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

string

ZORUNLU: Google tarafından oluşturulmuş, createMandate çağrısı sırasında gönderilen talimat kimliği.

MandateWithNotificationDetails

Alınacak talimatla ilgili ayrıntılar ve gerekli bildirim ayrıntıları.

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

string

ZORUNLU: Google tarafından oluşturulmuş, createMandate çağrısı sırasında gönderilen talimat kimliği.

upcomingTransactionNotificationId

string

ZORUNLU: Bu işlemle ilgili ön bildirimde bulunmak için yapılan upcomingTransactionNotification çağrısından requestId.

CaptureContext

Bu nesne, yakalamanın nasıl istendiği hakkında 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şmede bu alana ihtiyaç duyulmazsa alan her zaman boş olacaktır.

CaptureResultCode

Yakalama için sonuç kodları.

Sıralamalar
UNKNOWN_RESULT Bu varsayılan değeri asla ayarlamayın.
SUCCESS Başarılı çekim, ü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ıyorsa kullanıcı mesajlaşması için 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şlemleri için 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 değeri, minimum işlem tutarını karşılamıyor.
INSUFFICIENT_FUNDS Bu hesapta bu yakalamayı garanti edecek yeterli bakiye yok.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY Bu hesap, istenen para birimini desteklemiyor.
ACCOUNT_CLOSED

Kullanıcının entegrasyon uzmanındaki hesabı kapatıldı.

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

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

Kullanıcının entegrasyon uzmanındaki hesabı kapatıldı ve şüpheli hesap devralındı.

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

ACCOUNT_ON_HOLD Hesap askıya alındı.
ACCOUNT_CLOSED_FRAUD

Kullanıcının entegrasyon uzmanındaki hesabı sahtekarlık nedeniyle kapatıldı.

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

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

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

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

TOKEN_REFRESH_REQUIRED Bunun döndürülmesi için kullanıcının yenileme akışından geçmesi gerekir.
OTP_NOT_MATCHED OTP, entegrasyon uzmanının gönderdiği değerle eşleşmedi.
OTP_ALREADY_USED OTP zaten kullanıldı.
RISK_DECLINED

İşlem, entegrasyon uzmanı tarafında yapılan risk kontrolü nedeniyle reddedildi.

Bu durum, söz konusu ödemeyle ilgili kalıcı bir hatadır ancak kullanıcının ödeme 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, etkin bir ödeme kaynağı yapılandırılmamış.
FUNDING_SOURCE_UNAVAILABLE

Temel kartı veren kuruluş veya para kaynağı kullanılamıyor. Bu ödeme yeniden denenecekse ödeme işlemi başarılı olmaz.

Google, bir iş ortağı tarafından 4xx veya 5xx yanıt kodu döndürüldüğünde ödeme işlemlerini yeniden dener. Bu nedenle, temel ödeme kaynağı tekrar kullanılabilir hâle geldiğinde aynı ödemenin yeniden denenmesi başarılı olursa iş ortakları normalde söz konusu yanıt kodlarından birini döndürmelidir. Bununla birlikte, Google'ın ödemeyi yeniden denemesinin başarısız olmasına yol açan teknik nedenler varsa iş ortağı "FUNDING_SOURCE_UNAVAILABLE" değerini döndürebilir. Böylece, Google'a aynı ödemeyi tekrar denememesi gerektiğini bildirmiş olursunuz.

Not: Google yine de farklı bir requestId kullanarak bu ödemeyi tekrar deneyebilir, ancak bu ödeme isteği Reddedildi olarak işaretlenir.

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 Yinelenen bir talimat ödemesi için kullanıcıya gönderilen bildirimin süresi dolmuştur.