Open1
Play Storeでの定期購入をバックエンド(Railsサーバー)でacknowledgeする
Cloud Pub/Subから送られてくるデータをデコードする
Cloud Pub/Subから送られてくるデータ
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
base64でエンコードされたdataをデコードすると、その中のsubscriptionNotification に以下のようになる。
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"subscriptionNotification":
{
"version":"1.0",
"notificationType":4,
"purchaseToken":"PURCHASE_TOKEN",
"subscriptionId":"monthly001"
}
}
デコードは以下のコードでできる
class Api::V1::GoogleServerNotificationsController < ActionController::API
def create
decoded_data = Base64.decode64(params[:message][:data])
json_data = JSON.parse(decoded_data)
head :ok
end
end
acknowlegeする
gem 'google-apis-androidpublisher_v3'
client = Google::Apis::AndroidpublisherV3::AndroidPublisherService.new.tap do |client|
client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
# 動作確認のためにサービスアカウントの鍵をローカルに置いている
json_key_io: Rails.root.join('service-account.json'),
scope: CREDENTIAL_ACCESS_SCOPE
)
end
client.acknowledge_purchase_subscription(package_name, subscription_id, purchase_token)
APIドキュメント
サブスクリプションを取得する
gem 'google-apis-androidpublisher_v3'
client = Google::Apis::AndroidpublisherV3::AndroidPublisherService.new.tap do |client|
client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
# 動作確認のためにサービスアカウントの鍵をローカルに置いている
json_key_io: Rails.root.join('service-account.json'),
scope: CREDENTIAL_ACCESS_SCOPE
)
end
client.get_purchase_subscriptionsv2(package_name, purchase_token)
実装の参考
Google Play IAB(In-App Billing) 〜Railsでのサーバサイド対応のすべて〜
RailsでGoogle Playのアプリ内課金の購入ステータスを取得する
Androidアプリ内購入、パート 5: サーバーサイドでの購入の検証 > 定期購入の承認
Simple REST client for version V3 of the Google Play Android Developer API