1. Başlamadan önce
Bu, Standard Payments API'leriyle bağlantı kurma sürecini adım adım açıklayan, kendi kendine rehberli bir codelab'dir.
Ön koşullar
- Uygulama sürecinin 1. ve 2. adımlarını tamamlamış olmanız gerekir.
- Sağlanan Node.js sunucusunu, Google App Engine'i veya Google ile yapılandırılmış alanda kendi çözümünüzü kullanarak TLS sonlandırmasıyla barındırabilirsiniz.
- Ortamınızda Node.js yüklü olmalıdır.
Neler Öğreneceksiniz?
- Google Standard Payments echo API'ye geçerli bir istek göndererek bağlantıyı doğrulama
- Google'dan İş Ortağı Tarafından Barındırılan Echo API'ye gelen bir isteği alma, şifresini çözme ve ayrıştırma
2. Kurulum ve Gereksinimler
Uygulamayı indirme
Node.js örnek kodunu indirin.
Bağımlılıkları yükleme
Proje dizinine gidin ve gerekli bağımlılıkları yüklemek için aşağıdaki komutu çalıştırın. App Engine kullanıyorsanız bu adımı atlayabilirsiniz.
npm install
3. Ödeme entegratörü hesabı kimliğini (PIAID) yapılandırma
Ödeme entegratörü hesap kimliği (PIAID), entegrasyonlarınızı benzersiz şekilde tanımlamak için kullanılan bir tanımlayıcıdır. Bu eğitime başlamadan önce ön koşulları tamamlayarak Google'dan PIAID'nizi almış olmanız gerekir.
- Proje dizinindeki
server.jsdosyasına gidin. PIAIDdeğişkenini, Google tarafından size verilen PIAID olarak ayarlayın.
const PIAID = '{PAYMENT_INTEGRATOR_ACCOUNT_ID}';
4. PGP anahtarları ekleme
Proje yapısında aşağıdaki dosyaları oluşturun ve PGP şifrelemeyi etkinleştirmek için PGP anahtarlarınızı ekleyin.
public.keyadlı bir dosya oluşturun ve ASCII armored ortak anahtarını dosyaya ekleyin.private.keyadlı bir dosya oluşturun ve ASCII armoured özel anahtarını dosyaya ekleyin.passphrase.txtadlı bir dosya oluşturun ve gizli parola ifadesini bu dosyaya ekleyin.

Harika, uygulamayı çalıştırmaya hazırsınız.
5. Uygulamayı çalıştırma
Uygulamayı başlatmak için aşağıdaki komutu yürütün.
$ node server.js Server listening on port 8080...
Önceden yapılandırılmış bir App Engine örneği çalıştırıyorsanız bunun yerine bu komutu çalıştırın.
$ gcloud app deploy
Sunucu varsayılan olarak 8080 numaralı bağlantı noktasını dinler.
6. Google Standard Payments API bağlantısını test etme
Uygulama çalışır duruma geldiğine göre, Google Standard Payments echo API ile bağlantıyı test etme zamanı.
Örnek uygulama örneğinizden Google'ın sunucularına arama başlatmak için aşağıdaki komutu çalıştırın. Örnek uygulama echo API, düz metin biçiminde bir POST isteğini kabul eder. İstek alındıktan sonra Google tarafından barındırılan API'ye sonraki istek gönderilir.
$ curl -X POST -H 'Content-Type: text/plain' -d 'Hello from Little Bear' https://{HOSTNAME}/echo
Başarılı bir API isteği, Google'dan aşağıdaki yanıtı alır.
{
"responseHeader":{
"responseTimestamp":"1606710026723"
},
"clientMessage":"Hello from Little Bear",
"serverMessage":"Server message."
}
Adım adım
Sunucunuz tarafından istek başarıyla gönderildiğine göre, bu işlemin nasıl çalıştığını inceleyelim.
İsteği oluşturma
buildEchoRequestBody içindeki bodyHelpers.js, Google'ın API'sine gönderilen echo isteğini oluşturur.
const message = bodyHelpers.buildEchoRequestBody(req.body);
Oluşturulan istekte clientMessage ve birkaç varsayılan değer alanı bulunur.
{
"requestHeader":{
"protocolVersion":{
"major":1,
"minor":0,
"revision":0
},
"requestId":"ddfe0fd0-ffdc-4fcf-991a-f0611ec83970",
"requestTimestamp":"1606715389040"
},
"clientMessage":"Hello from Little Bear"
}
İsteği şifreleyin
Tüm istekler şifrelenir ve base64url kodlaması yapılır. Bu örnekte, crypto.js sizin için şifreleme ve şifre çözme işlemlerini gerçekleştiren yardımcı yöntemler içerir. crypto.encrypt yöntemi, Google'ın ortak anahtarını kullanarak şifreleme gerçekleştirir.
const encrypted = await crypto.encrypt(message);
Base64url kodlu POST isteğini gönderin.
Şifrelenmiş mesaj, base64url paketi kullanılarak base64url olarak kodlanır ve axios kullanılarak bir POST isteği aracılığıyla gönderilir.
const response = await axios.post(ECHO_URL, base64url(encrypted), AXIOS_CONFIG);
Yanıtın şifresini çözüp döndürme
Google'ın başarılı yanıtı base64url ile kodlanmış ve şifrelenmiştir. Bu nedenle, düz metin olarak döndürülmeden önce kodunun çözülmesi ve şifresinin çözülmesi gerekir.
const encryptedMessage = base64url.toBuffer(response.data);
const decryptedResponse = await crypto.decrypt(encryptedMessage);
res.status(200);
res.send(decryptedResponse);
7. İş Ortağı API bağlantısını test etme
Google, iş ortağı echo API bağlantısını test etmek için iş ortağı tarafından barındırılan echo API'ye bir istek gönderir.
Hazır olduğunuzda lütfen Google'daki ilgili kişinizle birlikte çalışarak bu isteği Google'a iletin.
Google'dan gelen gelen yankı isteğini okuyup geçerli bir yankı yanıtı verebildiğinizde yankı testi tamamlanır.
Adım adım
Sunucunuz tarafından bir istek başarıyla alındıktan ve işlendikten sonra bu işlemin nasıl gerçekleştiğini inceleyelim.
İsteğin Base64url kodunu çözün.
İsteği aldığınızda öncelikle base64url kodunu çözmeniz gerekir.
const encryptedRequest = base64url.toBuffer(req.body);
İsteğin şifresini çözme
İsteğin base64url kodunu çözdükten sonra şifresini çözmeniz gerekir.
const decryptedRequest = await crypto.decrypt(encryptedRequest);
İsteği alma
Google, kod çözme ve şifre çözme işlemi tamamlandıktan sonra aşağıdakine benzer bir mesaj yükü gönderdi.
{
"requestHeader": {
"protocolVersion": {
"major": 1
},
"requestId": "G1MQ0YERJ0Q7LPM",
"requestTimestamp": {
"epochMillis":1481899949606
},
"paymentIntegratorAccountId": "abcdef123456"
},
"clientMessage": "echo Me"
}
Yanıtı oluşturma
Gelen yankı isteğini başarıyla okuduktan sonra yanıtı oluşturmaya başlayabilirsiniz.
clientMessage = JSON.parse(decryptedRequest).clientMessage;
responseBody = bodyHelpers.buildEchoResponseBody(clientMessage);
Yanıt, Google'dan gelen mesajın yanı sıra sunucudan gelen mesajı ve zaman damgasını içerir.
{
"responseHeader": {
"responseTimestamp": {
"epochMillis":1481899950236
}
},
"clientMessage": "echo Me",
"serverMessage": "Debug ID 12345"
}
Yanıtı şifreleyin ve Base64 ile kodlayın.
Yanıt mesajını oluşturduktan sonra şifrelemeye ve Base64url kodlamaya hazırsınız demektir.
encryptedResponse = await crypto.encrypt(responseBody);
const encodedResponse = base64url(encryptedResponse);
Yanıtı döndürme
Son olarak, POST yanıtını göndermeye hazırsınız.
res.send(encodedResponse);
8. Tebrikler!
Bu codelab'de Echo API ile bağlantıyı başarıyla kurdunuz.