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:
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
.
To be more descriptive and consistent with the PlayStore API, the verifier got a new signature and return values have been adapted accordingly.
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.
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]
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.
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