Protokol standartları

API, bir dizi HTTP API standardını izler ve idempotency ile daha güçlü bir inceleyebilirsiniz.

Google tarafından barındırılan URL'ler

Google tarafından barındırılan her yöntemin dokümanları bir temel URL sağlar. yöntem adını ve ana sürüm numarasını içerir. Tam URL oluşturulur arayanın Ödeme Entegratörü Hesap Kimliğini dokunun. Örneğin, Google tarafından barındırılan yankı yöntemi ile ilgili dokümanlar belirtir:

https://vgw.googleapis.com/secure-serving/gsp/v1/echo

Arayan kişinin Ödeme Entegratörü Hesap Kimliği INTEGRATOR_1 ise şunu ekleyin:

https://vgw.googleapis.com/secure-serving/gsp/v1/echo/INTEGRATOR_1

İş ortağı tarafından barındırılan URL'ler

İş ortağı tarafından barındırılan her bir API yönteminin dokümanları, yöntem adını ve ana sürüm numarasını içerir. Etiketlerde Ödeme Entegratörü Hesap Kimliği (PIAID) emin olmanız gerekir.

Korumalı alan ve üretim ortamları

Google, Standart Payments API'lerini hem korumalı alanda (geliştirme ve test amaçlı) ve üretim. Google korumalı alanı ortamındaki istekler gerçek dünyada herhangi bir mali yükümlülük getirmez. Korumalı alan ve üretim ortamları tamamen ayrıdır ve burada anahtar veya işlem bilgileri.

Google, test etmek için bir korumalı alan oluşturun.

Google'ın korumalı alan temel yolu

https://vgw.sandbox.google.com/secure-serving/gsp/

Google'ın üretim temel yolu

https://vgw.googleapis.com/secure-serving/gsp/

Bu rehber, üretim uç noktalarını kullanacaktır.

İçerik türü ve kodlama

. PGP şifrelemesi kullanan ileti yükleri, içerik türünü kullanmalıdır application/octet-stream; charset=utf-8. PGP istek organları, Şurada tanımlandığı gibi base64url kodlaması kullanılarak gönderilmelidir. rfc4648 §5 şeklindedir. . JWE şifrelemesi kullanan mesaj yükleri, içerik türünü kullanmalıdır application/jose; charset=utf-8. Kompakt Serileştirme seçeneği JWE/JWS tarafından desteklenen son istek gövdesinin kodlamasını işler.

HTTP durum kodları

Standart Payments API'leri, HTTP 200 durum kodu döndürecek şekilde tasarlanmıştır sunucu tarafından işlenebilecek tüm isteklere karşılık gelir. Bu, hem başarılı ve reddedilmiş taleplerin işletme veya uygulama mantığından yararlanabilirsiniz. İşlenemeyen istekler Google ile Google arasında bir hatayı temsil ettiğinden HTTP 200 durum kodu iş ortağı. Bunun yerine, API yanıtı uygun HTTP durumunu kullanmalıdır isteğe bağlı bir ErrorResponse nesnesiyle kullanabilirsiniz.

HTTP Hataları ve Nedenleri
400 BAD REQUEST

İstemci, geçersiz bir bağımsız değişken belirtti.

İşlemin sistem tarafından reddedildiği durumlarda da , işlemin yürütülmesi için gerekli bir durumda değil.

İsteğin yeniden denenmesi sistem durumuna kadar başarılı olamazsa bunu kullanın açıkça düzeltildi. Örneğin, geri ödeme isteği mevcut olmayan bir yakalamaya referans veriyor. Yeniden denemek başarılı olmaz devam ettirebilirsiniz.

401 UNAUTHORIZED

İstek, işlemidir. Örneğin, geçersiz imzalar veya bilinmeyen imzalar Return 401 değerini döndürür.

403 FORBIDDEN / PERMISSION DENIED

Arayanın belirtilen işlemi yürütme izni yok.

404 NOT FOUND

Ödeme veya kullanıcı gibi istenen bazı varlıklar bulunamadı.

409 CONFLICT / ABORTED

İşlem, genellikle aşağıdaki gibi bir eşzamanlılık sorunu nedeniyle iptal edildi: sıralayıcı denetim hataları, işlem iptalleri vb.

412 PRECONDITION FAILED

Bu kod, bir idempotency anahtarının yönetildiği farklı parametrelerle yeniden kullanılır.

429 RESOURCE EXHAUSTED / TOO MANY REQUESTS

Bazı sistem kaynakları tükendi.

499 CANCELLED

İşlem iptal edildi (genellikle arayan tarafından).

500 INTERNAL ERROR

Dahili hatalar. Bu, temel sistemin beklediği bazı sabit değerleri ifade eder. bozuldu.

501 UNIMPLEMENTED

İşlem, bu hizmette uygulanmıyor, desteklenmiyor veya etkinleştirilmemiş.

503 UNAVAILABLE

Hizmet şu anda kullanılamıyor. Bu, büyük olasılıkla geçici bir durum durumu düzeltilebilir. Bu işlem yeniden denenerek düzeltilebilir.

504 GATEWAY TIMEOUT / DEADLINE EXCEEDED

İşlem tamamlanamadan son tarih doldu. Çevik’in bu hata, sistemdeki bir durumu değiştirseniz bile işlemi başarıyla tamamlandı. Örneğin, başarılı bir yanıt bir sunucudan gelene kadar geçen süre sona erecektir.

İstek kimliği

İstek kimliği, Standart Ödemeler'de kullanılan merkezi bir stratejidir Google ile iş ortakları arasındaki sistem etkileşimlerinin gerçekleşebilmesini sağlamak için kullanılan API'ler hatadan etkilenmez. Anlık istekler, başka bir kullanıcının birden fazla kez gönderilebilir ancak tek bir istekle aynı etkiye sahiptir. Bu strateji, yüksek performanslı özellikleri kontrol ederek güvenli şekilde yeniden dener ve sistemlerimizin kaynak durumunu kontrol edebilirsiniz.

API'miz aciliyetten yararlanarak şunları yapar:

  • tüm işlemleri kolayca izlenebilir hale getirerek ve mutabakatla ilgili denetlenebilir.
  • birden fazla özdeş talebin gönderilmesini sağlayarak farklı bir nihai durumla sonuçlanmaz.
  • isteklerin ayrı ayrı anlaşılmasına izin vererek ve böylece sunucu yükünü kaldırarak performans ve işleme hızını artırır. en iyi uygulamaları paylaşacağız.
  • bir isteğin yeniden deneme olduğunu belirten ek alanlara ihtiyaç duymamak
ziyaret edin.

Örnekler

1. Örnek: Yanıt alınmadan bağlantı kesilir

Senaryo:

  1. Google, entegrasyon uzmanına bir istek gönderir.
  2. Entegrasyon sunucusu bu isteği alır ve başarıyla işler.
  3. Google'ın sunucusu, 2. adımda yanıt almadan önce güç kaybeder.
  4. Google'ın sunucu gücü geri yüklenir ve aynı istek gönderilir tümüyle aynı parametrelerle (aynı istek kimliği ve istek ayrıntılarına sahip ancak güncellenmiş) requestTimestamp) entegrasyon yapın.

Sonuç:

Bu durumda entegrasyon sunucusu, responseTimestamp dışındaki tüm parametreler aynı olduğundan 2. adım. Yan etki 2. adımda yalnızca bir kez gerçekleşir. 4. Adım'ın herhangi bir yan etkisi yoktur.

2. Örnek: İstek, bakımda olan bir sunucuya gönderildi

Senaryo:

  1. İntegratör sunucusunun veritabanı bakım nedeniyle kapalı.
  2. Google, entegrasyon uzmanına bir istek gönderir.
  3. Entegratör, UNAVAILABLE durum kodunu doğru şekilde döndürüyor.
  4. Google'ın sunucusu yanıtı alır ve bir yeniden deneme planlar.
  5. Entegratör sunucusunun veritabanı tekrar çevrimiçi olur.
  6. Google, 2. adımdaki isteği yeniden gönderir (aynı istek kimliği ve istek ayrıntıları ancak requestTimestamp güncellendi). Her iki isteğin istek kimliklerinin aynı olmalıdır.
  7. Entegratör sunucusu istek alır ve istek sırasında Tamam durum kodu döndürür tam yanıt gönderin.

Sonuç:

Bu durumda, entegrasyon sunucusu 7. adımdaki isteği işlemelidir. şunu döndür: HTTP 503 (UNAVAILABLE). Bunun yerine entegrasyon sunucusundaki isteği işleme koymalı ve uygun mesajla birlikte Tamam yanıtını vermelidir. Lütfen sistem UNAVAILABLE Google, 2. adım: Her istekte, 3. adıma benzer bir mesaj verilmelidir. Son olarak, 6. adım ve 7. adım gerçekleşir.

3. Örnek: Kurtarma hatası nedeniyle, yeniden denenen mesaj ilk mesajla eşleşmiyor

Senaryo:

  1. Google, entegrasyon uzmanına bir istek gönderir.
  2. Entegrasyon sunucusu bu isteği alır ve başarıyla işler.
  3. Google'ın sunucusu, 2. adımda yanıt almadan önce güç kaybeder.
  4. Google'ın sunucu gücü geri yüklenir ve aynı isteği göndermeye çalışır ancak ne yazık ki bazı parametreler farklı.

Sonuç:

Bu durumda, entegrasyon sunucusu HTTP 412 ile yanıt vermelidir. (PRECONDITION FAILED) hata kodu, Google'a bunun hatası olabilir.