Google Play Developer API, faturalandırma ve bağlantı programlarındaki işlemleri bildirmek için ek işlevler içerir. Bu kılavuzda, bu faturalandırma programlarındaki işlemlerin nasıl bildirileceği açıklanmaktadır.
Arka uçtan harici işlemleri yönetmek için gerekli olabilecek birkaç bileşen vardır. Bu API'leri oluşturmak için arka uç entegrasyonunuzu Google Play Developer API'yi yapılandırma bölümünde belirtildiği şekilde ayarlamanız gerekir. Faturalandırmaya ve program bağlantılarına özgü olmayan geliştirici arka uç işlevleri oluşturmak için Google Play'in faturalandırma sistemi başlıklı makaleyi inceleyin.
Terim sözlüğü
Bu kılavuzda kullanılan terimler:
- Faturalandırma ve bağlantı programları: Google Play dışında dijital içerik satın alma veya uygulama indirme işlemlerini kolaylaştıran programlar. Bu kapsamda alternatif faturalandırma ve harici içerik programları yer alır.
- Harici işlem API'leri: Uygun faturalandırma ve bağlantı programları için işlemleri bildirmek üzere kullanılan API'ler.
- Uygulama dışı işlem: Alternatif faturalandırma ve harici içerik programlarında tanımlandığı şekilde uygulama dışında gerçekleşen uygun bir işlem.
- Harici işlem jetonu: Kullanıcı harici bir işlemi tamamladığında kullanmanız için Play Faturalandırma Kitaplığı aracılığıyla sağlanan jeton. Bu jeton, başarılı bir harici işlem hakkında Google Play'i bilgilendirmek için kullanılır.
- Harici işlem kimliği: Harici bir işlemi tanımlamak için sizin tarafınızdan oluşturulan benzersiz tanımlayıcı.
Yeni uygulama dışı işlemleri Google Play'e bildirme
externaltransactions API ile entegrasyon yaparak Google Play'in faturalandırma sistemi dışında gerçekleşen işlemleri desteklenen ülkelerde bildirin. Bu işlemlere, ücretsiz deneme satın alma işlemlerinden kaynaklanan 0 ABD doları tutarındaki işlemler ve uygulama yüklemeleri dahildir. Yalnızca alternatif faturalandırma, dış kampanyalar veya harici ödemeler yönergeleri kapsamında izin verildiği şekilde, uygun kullanıcı ülkeleri için faturalandırma ve bağlantı programlarındaki işlemleri başlatıp bildirmelisiniz. Aksi takdirde API çağrısı reddedilir. Yeni satın alma işlemleri, yenileme, para ekleme, yükseltme, eski sürüme geçme ve uygulama indirme gibi tüm işlemler bu kapsamdadır.
Harici işlem raporlama
Bir ödeme, faturalandırma ve bağlantı programı aracılığıyla yetkilendirildikten sonra harici bir işlemi bildirmek için externaltransactions API'sini çağırmanız gerekir.
İlk ödemeler, yenilemeler ve geri ödemeler gibi tüm işlemler bu kapsamdadır. Raporlama koşulları için ilgili faturalandırma ve bağlantı programının yönergelerine bakın.
Her harici işlem, harici işlem kimliğiyle bildirilir. Yinelenen satın alma işlemleri (ör. otomatik yenilenen abonelikler) için, geri ödemeler dahil olmak üzere sonraki tüm işlemlerin parametresi olarak yinelenen satın alma işlemindeki ilk işlemle ilişkili harici işlem kimliğini göndermeniz gerekir. Bu işlem, söz konusu satın alma işlemine ait işlem dizisini kaydeder. Ürün değiştiğinde (ör. yükseltme veya düşürme) ya da yinelenen işlem iptal edildiğinde veya süresi dolduğunda ve aynı ürün daha sonra tekrar satın alındığında satın alma işlemleri için yeni bir harici işlem kimliği göndermeniz gerekir. Bu harici işlem kimliğine kimliği tanımlayabilecek bilgiler, tescilli bilgiler veya gizli bilgiler eklememelisiniz.
İlk işlemi bildirme
Faturalandırma ve bağlantı programlarında her yeni satın alma veya uygulama indirme işlemi başarılı olduğunda externaltransactions API'sini çağırmanız gerekir.
Google Play Faturalandırma Kitaplığı aracılığıyla uygulama tarafından alınan externalTransactionToken, uygulama indirme, tek seferlik satın alma ve yinelenen satın alma işlemlerinde (ör. abonelik) ilk kez yapılan işlemler için istek gövdesinin bir parçası olarak gereklidir. Buna ilk işlem denir. İlk işlemden sonraki işlemleri (ör. abonelik yenilemeleri) yeni bir benzersiz externalTransactionId sağlayarak bildirin. Daha fazla bilgi için Satın alma işlemiyle ilgili sonraki işlemleri bildirme başlıklı makaleyi inceleyin.
Örnek:
- Geliştirici, uygulamasında alternatif faturalandırmayı yapılandırır ve etkinleştirir.
- 1. kullanıcı, desteklenen bir ülke olan Güney Kore'de bulunuyor ve aylık 12.634,10 KRW karşılığında
product1satın almaya çalışıyor. Bu abonelik, bir aylık ücretsiz deneme teklifiyle sunuluyor. - Uygulama,
product1içinProductDetailsile satın alma akışını başlatır ve kullanıcının seçtiği teklifi gösterir. - 1. kullanıcı, geliştiricinin alternatif faturalandırma sistemini seçer.
UserChoiceBillingListener,my_tokendeğeriniexternalTransactionTokenolarak alır.- Ardından geliştirici, ilgili bilgileri arka uçlarına gönderir (
externalTransactionTokendeğeri ve satın alınan ürünler). Ardından, alternatif faturalandırma sistemindeproduct1için satın alma akışını başlatır. Bu işleme, geliştirici tarafında Google Play'e bildirmek için kullanılan benzersiz bir işlem kimliği atanır: 123-456-789. Kullanıcı ücretsiz deneme alsa bile işlem kimliği gereklidir. - Satın alma işlemi için alternatif faturalandırma sisteminde işlem gerçekleştiğinde geliştirici, işlemi aşağıdaki istekle Google Play'e bildirir. Kullanıcıya bir ay ücretsiz kullanım hakkı verildiği için başlangıçta sıfır ABD doları tutarında bir işlem olarak raporlanır.
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789
Body
{
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
"transactionTime" : "2022-02-22T12:45:00Z",
"recurringTransaction" : {
"externalTransactionToken": "my_token",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
"regionCode": "KR"
}
}
İlk işlemi bildirirken aşağıdakilere dikkat edin:
subscriptionType,RECURRING(otomatik yenilenen abonelikler için) veyaPREPAID(ön ödemeli abonelikler için) olabilir.- Birden fazla ödeme veya gecikmeli ödeme gerektiren tek seferlik satın alma işlemlerini göstermek için
OtherRecurringProductkullanılmalıdır. Örneğin, bir ön siparişte ilk olarak 0 ABD dolarlık bir işlem yapılabilir. Ardından, ön sipariş karşılandığında SKU'nun fiyatı için daha sonraki bir tarihte ikinci bir işlem yapılabilir. Sonraki işlemleri bildirme hakkında daha fazla bilgi için Satın alma işlemine ilişkin sonraki işlemleri bildirme başlıklı makaleyi inceleyin. - İlk harici teklif işlemlerini bildirirken
ExternalOfferDetailssağlamanız gerekir. Bu, sonraki işlemler için gerekli değildir.
Verginin kullanıcının idari bölgesine (ör. eyalet veya il) bağlı olduğu Hindistan'da bir kullanıcıyla işlem yapıyorsanız bu bölgeyi userTaxAddress altında belirtin. Geçerli idari bölgeler için API referans kılavuzundaki önceden tanımlanmış dizeler listesine bakın.
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789
Body
{
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "INR"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "INR"
},
"transactionTime" : "2023-11-01T12:45:00Z",
"recurringTransaction" : {
"externalTransactionToken": "my_token",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
# Tax varies in India based on state, so include that information in
# administrativeArea
"regionCode": "IN"
"administrativeArea": "KERALA"
}
}
Harici teklifler
Bildirilen işlem harici teklif programı kapsamındaysa ve tek seferlik bir işlemse veya yinelenen bir serinin ilk işlemiyse externalOfferDetails alanını ayarlamanız gerekir:
- Uygulama indirme işlemlerini raporlarken
linkTypedeğeriniLINK_TO_APP_DOWNLOADolarak ayarlayın veinstalledAppPackageileinstalledAppCategoryiçin uygun değerleri girin. Ayrıntılar için Uygulama indirme işlemini bildirme başlıklı makaleyi inceleyin. - Dijital içerik teklifi işlemlerini bildirirken
linkTypedeğeriniLINK_TO_DIGITAL_CONTENT_OFFERolarak ayarlayın. - Harici teklif programı aracılığıyla harici bir uygulama yüklendikten sonra, harici uygulamada yapılan işlemleri bildirmeniz gerekir. Bu işlemleri bildirirken, bu işlemleri orijinal uygulama indirme etkinliğine bağlayın:
- Uygulama indirme etkinliğinden
externalTransactionTokendeğerini sağlayın. externalOfferDetailsalanındaappDownloadEventExternalTransactionIddeğerini uygulama indirme etkinliğininexternalTransactionIdolarak ayarlayın.externalOfferDetailsiçindeki diğer alanlar zorunlu değildir.
- Uygulama indirme etkinliğinden
Harici teklifler aracılığıyla indirilen harici bir uygulamada işlem isteği örneği:
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=ABC-DEF-GHI
Body
{
"originalPreTaxAmount" : {
"priceMicros": "100000",
"currency": "EUR"
},
"originalTaxAmount" : {
"priceMicros": "10000",
"currency": "EUR"
},
"transactionTime" : "2025-11-22T12:45:00Z",
"oneTimeTransaction" : {
"externalTransactionToken": my_external_transaction_token_for_link_to_download_event"
},
"userTaxAddress" : {
"regionCode": "DE"
},
"externalOfferDetails" : {
"appDownloadEventExternalTransactionId": "my_external_transaction_id_for_link_to_download_event"
}
}
Farklı işlem türleri için güncellenen Play hizmet ücreti ayrıntılarını, Avrupa Ekonomik Alanı'ndaki (AEA) kullanıcılar için Dış kampanya programında yapılan değişiklikler başlıklı makalede bulabilirsiniz.
Satın alma işlemiyle ilgili sonraki işlemleri bildirme
Bazı durumlarda, aynı harici satın alma işlemiyle ilişkili birden fazla kullanıcı ödemesi olabilir. Örneğin, abonelik yenilemeleri veya ön ödemeli planlara para ekleme işlemleri.
Bu sonraki işlemleri Externaltransactions bölümünde aynı API'yi kullanarak bildirebilirsiniz. Yeni bir satın alma işlemini bildirme başlıklı makalede açıklandığı gibi, sonraki işlemler için externalTransactionToken gerekli değildir. Bunun yerine, her yenileme veya yükleme işlemi için sorgu parametresi olarak yeni bir benzersiz externalTransactionId gönderilir. İlk işlemin kimliği ise initialExternalTransactionId alanına eklenir.
Önceki örneği takip ederek:
- 1. kullanıcının ilk yenilemesi alternatif faturalandırma sisteminde gerçekleşir. İlk işlem kimliği 123-456-789 idi.
- Geliştirici, URL sorgu parametresindeki işlem tekrarını bu yeni işlemin harici işlem kimliği olarak bildirirken
initialExternalTransactionIdalanında ilk işlemin harici işlem kimliğine referans verir.
Örnek istek:
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi
Body
{
"originalPreTaxAmount" : {
"priceMicros": "12634000000",
"currency": "KRW"
},
"originalTaxAmount" : {
"priceMicros": "1263000000",
"currency": "KRW"
},
"transactionTime" : "2022-02-22T12:45:00Z",
"recurringTransaction" : {
"initialExternalTransactionId": "123-456-789",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
"regionCode": "KR"
}
}
Sürüm yükseltme veya düşürme işlemini bildirme
Kullanıcı, alternatif faturalandırma sisteminde bir aboneliğe sahip olduğunda yükseltme veya düşürme işlemini bildirmek için Externaltransactions API'sinde aynı uç noktayı ve işlevi kullanıp yükseltme veya düşürme işlemi için uygulamaya sağlanan externalTransactionToken değerini gönderirsiniz. Bu işlem, yeni bir satın alma işlemini bildirmeye benzer şekilde çalışır.
Uygulama indirme işlemini bildirme
Harici teklifler faturalandırma sisteminde uygulama yükleme işlemini bildirmek için Externaltransactions.createexternaltransaction işlevini çağırıp uygulamaya sağlanan externalTransactionToken değerini göndermeniz gerekir. Bunu sıfır maliyetli, tek seferlik bir işlem olarak bildirin. Bu işlem, ilk işlemi bildirmeye benzer. İstek metnine ExternalOfferDetails eklediğinizden emin olun.
Örnek istek:
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789
Body
{
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "USD"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "USD"
},
"transactionTime" : "2025-12-22T12:45:00Z",
"oneTimeTransaction" : {
"externalTransactionToken": "my_token",
},
"userTaxAddress" : {
"regionCode": "US"
}
"externalOfferDetails" : {
"linkType" : "LINK_TO_APP_DOWNLOAD",
"installedAppPackage" : "my.external.app",
"installedAppCategory" : "APP"
}
}
Alternatif faturalandırma işlemlerinin manuel olarak raporlanmasından geçiş yapma
Otomatik raporlama içermeyen alternatif faturalandırma sunduğunuz sırada başlatılan etkin abonelikleri taşımak için initialExternalTransactionId veya externalTransactionToken belirtmek yerine migratedTransactionProgram alanını kullanarak yeni bir sıfır maliyetli işlem oluşturun. transactionTime değerini, kullanıcının her etkin aboneliğe ilk kaydolduğu zamana ayarlayın. Ardından, bu aboneliklerle ilgili sonraki her işlemi API'ler üzerinden normal şekilde bildirin ve yenileme işlemlerini oluşturmak için daha önce kullanılan initialExternalTransactionId değerini sağlayın.
Abonelik taşındıktan sonra, bu sayfada açıklanan otomatik yöntemlerle bildirildiği sürece abonelikle ilgili sonraki işlemleri manuel olarak bildirmeniz gerekmez.
Abonelikleri taşırken, taşıma işleminin kota kesintisine neden olmadığını doğrulamak için uygulanan kota sınırlarına dikkat edin. Çok sayıda aboneliğin taşınması gerekiyorsa bunları birden fazla güne yayın veya kota artışı isteğinde bulunun.
migratedTransactionProgram alanı yalnızca manuel raporlamadan geçiş yaparken kullanılabilir. Manuel raporlama artık desteklenmediğinde bu özellik kullanımdan kaldırılacaktır.
Örnek istek:
# Note that the externalTransactionId specified here will used to report
# subsequent transactions.
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi
Body
{
# Be sure to set the price to 0 for this transaction since it does not reflect
# an actual subscription renewal.
"originalPreTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
"originalTaxAmount" : {
"priceMicros": "0",
"currency": "KRW"
},
# The transaction time should be set to when the user signed up for this
# subscription.
"transactionTime" : "2022-02-22T12:45:00Z",
"recurringTransaction" : {
"migratedTransactionProgram": "USER_CHOICE_BILLING",
"externalSubscription" {
"subscriptionType": "RECURRING"
}
},
"userTaxAddress" : {
"regionCode": "KR"
}
}
Play iş ortağı programlarının koşulları
Play Medya Oynatma Deneyimi Programı gibi iş ortağı programlarına katılan geliştiriciler, harici işlemleri bildirirken transaction_program_code değerini sağlamalıdır. Uygun bir geliştiriciyseniz bu alanı ayarlama hakkında daha fazla bilgi için İş Geliştirme Yöneticinizle iletişime geçin.
Satın alma işlemlerinde geri ödemeleri Google Play'e bildirme
Google Play'in faturalandırma sistemi dışında kullanıcılara iade edilen işlemleri bildirmek için externaltransactions API'siyle entegrasyon yapın. Play'in hangi işlemin geri ödendiğini doğru şekilde belirleyebilmesi için URL parametreleri kapsamında daha önce bildirilen işlemle ilgili externalTransactionId değerini eklemeniz gerekir.
Abonelik satın alma işlemlerinin geri ödemelerini bildirirken geri ödemesi yapılan aboneliğin belirli yinelenme externalTransactionId değerini referans alın.
Örnek: Bir abonelikte aşağıdaki işlemlerin yapıldığını varsayalım:
Harici işlem kimliği ABC.1234-5678-9012-34567 olan ilk işlem
Harici işlem kimliği ABC.1234-5678-9012-34567..0 olan ilk yinelenen işlem
Harici işlem kimliği ABC.1234-5678-9012-34567..1 olan ikinci yinelenen işlem
Abonelikle ilgili tüm işlemlerin geri ödemesini bildirmek için üç ayrı geri ödeme isteğinde bulunmanız gerekir: biri ilk işlem, ikisi de sonraki işlemler için.
Bu yöntem hem tam geri ödemeleri (tutar, kullanıcının orijinal harici işlemde ödediği tutarla aynıdır) hem de kısmi geri ödemeleri (tutar, kullanıcının orijinal harici işlemde ödediği tutardan daha azdır) kabul eder. Kısmi geri ödemelerde, geri ödenen vergi öncesi tutarı belirtmeniz gerekir.
API kotaları
Externaltransactions API, Google Play Developer API'deki diğer tüm uç noktalar gibi tüm çağrılar için API kotalarına tabidir.
Ayrıca, Externaltransactions API'nin Externaltransactions.createexternaltransaction veya Externaltransactions.refundexternaltransaction çağrıları için dakika başına 1.200 sorgu (QPM) sınırı vardır. Externaltransactions.getexternaltransaction'ye yapılan çağrılar,1.200 QPM sınırına dahil değildir.