1. Giriş
Bu codelab, Web için Google Pay API 101: Temel Bilgiler codelab'inin devamı niteliğindedir ve bu codelab'de yazılan koda dayanır. Bu codelab'i tamamlamak için önce bu codelab'i tamamladığınızdan emin olun.
Neler öğreneceksiniz?
- Google Pay düğmesini özelleştirme
- Ödeme sürecini başlatma
- Ödeme yetkilendirme durumunu onaylama
- Gönderim adresi değişiklikleri nasıl ele alınır?
- Kullanım kodları nasıl kullanılır?
İhtiyacınız olanlar
- HTML ve JavaScript dosyalarını düzenlemek için tercih ettiğiniz bir metin düzenleyici.
- Google Chrome web tarayıcısı veya yerel bir web sitesini test etmenin başka bir yolu.
- Üretim için bir Google Pay
merchantId
'e ihtiyacınız vardır. Google Pay ve Cüzdan Konsolu'na kaydolmak yalnızca bir dakika sürer. Bu işlemi şimdi yapabilirsiniz.
Project IDX'yi kullanarak takip edin
2. Düğme özelleştirme
Bu, ButtonOptions
'a kısa bir genel bakıştır. Daha ayrıntılı açıklama için dokümanları inceleyin
Seçenek | Zorunluluk | Değerler |
onClick | Zorunlu | JavaScript etkinlik işleyicisinin adı |
allowedPaymentMethods | İsteğe bağlı | |
buttonColor | İsteğe bağlı | varsayılan, siyah, beyaz |
buttonLocale | İsteğe bağlı | İki harfli ISO 639-1 kodu. |
buttonRadius | İsteğe bağlı | 0 ila 100 |
buttonRootNode | İsteğe bağlı | HTMLDocument veya ShadowRoot |
buttonSizeMode | İsteğe bağlı | statik, dolgu |
buttonType | İsteğe bağlı | rezervasyon, satın alma, ödeme, bağış, sipariş, ödeme, sade, abone olma |
main.js
dosyanızda renderGooglePayButton()
yöntemini bulun ve burada listelenen kodla değiştirin.
function renderGooglePayButton() {
const button = getGooglePaymentsClient().createButton({
buttonColor: 'default',
buttonType: 'buy',
buttonRadius: 4,
buttonLocale: 'en',
onClick: onGooglePaymentButtonClicked,
allowedPaymentMethods: baseGooglePayRequest.allowedPaymentMethods,
});
document.getElementById(GPAY_BUTTON_CONTAINER_ID).appendChild(button);
}
Kod açıklaması
createButton()
kitaplığı yöntemi, düğmenin nasıl görünmesini ve davranmasını istediğinizi tanımlamanıza olanak tanıyan birButtonOptions
yapılandırma bağımsız değişkeni alır.
3. Ödeme verisi geri çağırmaları
Ödeme istemcisi, belirli etkinlikler gerçekleştiğinde işlenecek işlevleri kaydettiğiniz bir mekanizma sağlar. Bunlardan ilki ödeme yetkilendirmesi, ikincisi ise ödeme verileri değişikliğidir.
main.js
dosyasında// todo: paymentDataCallbacks
yorumunu bulup bu kodla değiştirin.paymentDataCallbacks: { onPaymentAuthorized: onPaymentAuthorized, onPaymentDataChanged: onPaymentDataChanged },
- Ardından,
main.js
dosyasınınEvent Handlers
bölümünü bulun ve bölümün sonuna aşağıdaki kodu ekleyin.function onPaymentAuthorized(paymentData) { // We'll fill this in later } function onPaymentDataChanged(intermediatePaymentData) { // We'll fill this in later }
- Son olarak,
main.js
içinde// todo: callbackIntents
yorumunu bulun ve yorumu bu kodla değiştirin. Bu codelab'de 4 intent'in de uygulamasını yapacağız.callbackIntents: [ 'PAYMENT_AUTHORIZATION', 'SHIPPING_ADDRESS', 'SHIPPING_OPTION', 'OFFER', ], shippingAddressRequired: true, shippingOptionRequired: true, shippingOptionParameters: { defaultSelectedOptionId: 'shipping-001', shippingOptions: [ { id: 'shipping-001', label: '$0.00: Free shipping', description: 'Free Shipping delivered in 5 business days.' }, { id: 'shipping-002', label: '$1.99: Standard shipping', description: 'Standard shipping delivered in 3 business days.' }, { id: 'shipping-003', label: '$1000: Express shipping', description: 'Express shipping delivered in 1 business day.' }, ], },
Kod açıklaması
PaymentDataCallbacks
mülkünün biri ödeme yetkilendirmesi geri çağırması, diğeri ise ödeme verileri değişikliği geri çağırması için iki alt mülkü vardır.- Geri çağırma uygulanıyorsa
onPaymentAuthorized
zorunludur. Bu geri çağırma işlevi,callbackIntents
listesiPaymentDataRequest
içindePAYMENT_AUTHORIZATION
içerdiğinde çağrılır. onPaymentDataChanged
isteğe bağlıdır. Bu geri çağırma işlevi,callbackIntents
listesiPaymentDataRequest
içindeOFFER
,SHIPPING_ADDRESS
veyaSHIPPING_OPTION
içerdiğinde çağrılır.- Bu codelab için her iki geri çağırma işlevini de tetiklemek üzere
PaymentDataRequest
içindekicallbackIntents
değerini ayarlayın.
4. Ödeme onayı
Ödemeleri Yetkilendirme, ödeme sürecini başlatmak ve ödeme yetkilendirme durumunu onaylamak için kullanılır.
Son adımda eklediğiniz main.js
içindeki onPaymentAuthorized()
işlevini bulun ve aşağıdaki kodla değiştirin.
function onPaymentAuthorized(paymentData) {
return new Promise(function(resolve, reject) {
// Write the data to console for debugging
console.log("onPaymentAuthorized", paymentData);
// Do something here to pass token to your gateway
// To simulate the payment processing, there is a 70% chance of success
const paymentAuthorizationResult = (Math.random() > 0.3)
? {transactionState: 'SUCCESS'}
: {
transactionState: 'ERROR',
error: {
intent: 'PAYMENT_AUTHORIZATION',
message: 'Insufficient funds',
reason: 'PAYMENT_DATA_INVALID'
}
};
resolve(paymentAuthorizationResult);
});
}
Kod açıklaması
onPaymentAuthorized()
geri çağırma işlevi,PaymentData
bağımsız değişkeniyle çağrılır ve bir promise döndürmelidir. Bu örnekte işlev, başarı veya hata döndürüp döndürmeyeceğini rastgele seçmektedir. Projenizde,paymentData
saatpaymentData.paymentMethodData.tokenizationData.token
itibarıylapaymentData
adresinde bulunan jetonu kullanarak işlemi geçiş sunucunuzla işlemek için bu fırsattan yararlanırsınız.
5. Ödeme verileri değişikliği
Dinamik Fiyat Güncellemeleri, satıcıların kargo seçeneklerini ve işlem bilgilerini seçilen kargo adresine göre dinamik olarak güncellemelerine olanak tanır. Ayrıca, işlem bilgilerini seçilen kargo seçeneğine göre dinamik olarak güncelleyebilirsiniz.
Son adımda eklediğiniz main.js
içindeki onPaymentDataChanged()
işlevini bulun ve aşağıdaki kodla değiştirin.
function onPaymentDataChanged(intermediatePaymentData) {
return new Promise(function(resolve, reject) {
let paymentDataRequestUpdate = {};
// Write the data to console for debugging
console.log("onPaymentDataChanged", intermediatePaymentData);
switch(intermediatePaymentData.callbackTrigger)
{
case "INITIALIZE":
// Handle initialize
break;
case "SHIPPING_ADDRESS":
// Read intermediatePaymentData.transactionInfo
// Read intermediatePaymentData.shippingAddress
// Update paymentDataRequestUpdate.newTransactionInfo
break;
case "SHIPPING_OPTION":
// Read intermediatePaymentData.transactionInfo
// Read intermediatePaymentData.shippingOptionData
// Update paymentDataRequestUpdate.newTransactionInfo
// Update paymentDataRequestUpdate.newShippingOptionParameters
break;
case "OFFER":
// Read intermediatePaymentData.offerData
// Read intermediatePaymentData.transactionInfo
// Update paymentDataRequestUpdate.newTransactionInfo
// Update paymentDataRequestUpdate.newOfferInfo
break;
default:
// Update paymentDataRequestUpdate.error
}
resolve(paymentDataRequestUpdate);
});
}
Kod açıklaması
onPaymentDataChanged()
işlevi,IntermediatePaymentData
bağımsız değişkenini alır. Bu işlev, ödeme sayfasında gönderim adresi veya gönderim seçenekleri değiştirildiğinde çağrılır.onPaymentDataChanged()
işlevi, ödeme sayfasını güncellemek için yeni işlem bilgilerini, gönderim seçeneklerini ve hatayı belirten birPaymentDataRequestUpdate
nesnesini çözen bir promise döndürmelidir.redemptionCodes
, ödeme sayfasına girilen bir dizi promosyon kodudur. Daha önce onaylanmış kodları içerir.
6. Sonuç
Bu Codelab'i tamamladığınız için tebrikler. Aşağıdakileri nasıl yapacağınızı öğrendiniz:
Projeyi çalıştırma
Google Chrome ile test etme
Google Chrome web tarayıcısını kullanarak Chrome'un ana menüsünden Dosya > Dosya Aç...'ı tıklayarak index.html
dosyasını açın. Proje bu şekilde açıldığında Chrome, main.js
komutunu yürütür. Diğer web tarayıcıları JavaScript'in yürütülmesine izin vermeyebilir.
– veya –
Yerel bir web sunucusuyla test etme
Python yüklüyse kök pay-web-101
klasöründeki bir terminal isteminden python3 -m http.server
'yi çalıştırın.
$ cd /your/path/to/pay-web-101
$ python3 -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
Ardından http://localhost:8000
adresindeki sitenizi ziyaret edin.
Şimdi beni ne bekliyor?
Ek kaynaklar
- Discord'daki #payments kanalında sohbete katılın
- X'te @GooglePayDevs hesabını takip edin
- YouTube'da Google Pay ile ilgili videolar izleme