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ırapplication/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
Örnekler
1. Örnek: Yanıt alınmadan bağlantı kesilir
Senaryo:
- Google, entegrasyon uzmanına bir istek gönderir.
- Entegrasyon sunucusu bu isteği alır ve başarıyla işler.
- Google'ın sunucusu, 2. adımda yanıt almadan önce güç kaybeder.
- 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:
- İntegratör sunucusunun veritabanı bakım nedeniyle kapalı.
- Google, entegrasyon uzmanına bir istek gönderir.
- Entegratör,
UNAVAILABLE
durum kodunu doğru şekilde döndürüyor. - Google'ın sunucusu yanıtı alır ve bir yeniden deneme planlar.
- Entegratör sunucusunun veritabanı tekrar çevrimiçi olur.
- 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. - 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:
- Google, entegrasyon uzmanına bir istek gönderir.
- Entegrasyon sunucusu bu isteği alır ve başarıyla işler.
- Google'ın sunucusu, 2. adımda yanıt almadan önce güç kaybeder.
- 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.