Skip to content

Latest commit

 

History

History
141 lines (103 loc) · 3.65 KB

MIGRATION_GUIDE_0_2_0.md

File metadata and controls

141 lines (103 loc) · 3.65 KB

Migration Guide from v0.1.x to v0.2.0

Due to changes in the PlayStore API, Candy Check needed to introduce some breaking changes in version 0.2.0.

To adapt your old implementation to these changes, follow the steps below:

Authorization

First we have to change, how our verifier authenticates against the Google API.

Change code like this

# < v0.2.0
config = CandyCheck::PlayStore::Config.new(
  application_name: 'YourApplication',
  application_version: '1.0',
  issuer: 'abcdefg@developer.gserviceaccount.com',
  key_file: 'local/google.p12',
  key_secret: 'notasecret',
  cache_file: 'tmp/candy_check_play_store_cache'
)
verifier = CandyCheck::PlayStore::Verifier.new(config)
verifier.boot!

to

# v0.2.0
authorization = CandyCheck::PlayStore.authorization("/path/to/key.json")
verifier = CandyCheck::PlayStore::Verifier.new(authorization: authorization)

If you're not sure how to get a .json key file, follow this part of the README.

If you need other means of authentication follow this part of the README.

Verifying Purchases

To be more descriptive and consistent with the PlayStore API, the verifier got a new signature and return values have been adapted accordingly.

Verifying Product Purchases

Change all occurences of

# < v0.2.0
verifier.verify("my-package-name", "my product id", "my token")
# => Receipt or VerificationFailure

to

# v0.2.0
verifier.verify_product_purchase(
  package_name: "my-package-name",
  product_id: "my product id",
  token: "my token"
)
# => ProductPurchase or VerificationFailure

NOTE: Take a closer look at the possible return values: CandyCheck::PlayStore::Receipt was moved to CandyCheck::PlayStore::ProductPurchases::ProductPurchase. In case you're matching at the class name of the result, please adapt your code accordingly.

Accessing Raw ProductPurchase Attributes

CandyCheck < 0.2.0 provided the raw ProductPurchase attributes given by the PlayStore API like this:

# < v0.2.0
result = verifier.verify("my-package-name", "my product id", "my token")
result.attributes
# => Hash

To get the same behaviour in CandyCheck 0.2.0, change the code above to:

# v0.2.0
result = verifier.verify_product_purchase(
  package_name: "my-package-name",
  product_id: "my product id",
  token: "my token"
)
result.product_purchase.to_h
# => Hash

The hash key access must be changed from strings in camelCase to symbols in snake_case:

# < 0.2.0
result.attributes["purchaseState"]

# 0.2.0
result.product_purchase.to_h[:purchase_state]

Verifying Subscription Purchases

Change all occurences of

# < v0.2.0
verifier.verify_subscription("my-package-name", "my-subscription-id", "my-token")
# => Subscription or VerificationFailure

to

# v0.2.0
verifier.verify_subscription_purchase(
  package_name: "my-package-name",
  subscription_id: "my-subscription-id",
  token: "my-token"
)
# => SubscriptionPurchase or VerificationFailure

NOTE: Again take a closer look at the possible return values: CandyCheck::PlayStore::Subscription was moved to CandyCheck::PlayStore::SubscriptionPurchases::SubscriptionPurchase. In case you're matching at the class name of the result, please adapt your code accordingly.

Using the CLI

The way the CandyCheck CLI gets used, needed to be changed too.

The old PlayStore command:

# < v0.2.0
$ candy_check play_store PACKAGE PRODUCT_ID TOKEN --issuer=ISSUER --key-file=KEY_FILE

was changed to

# v0.2.0
$ candy_check play_store PACKAGE PRODUCT_ID TOKEN --json-key-file=/path/to/key.json