dooboolab-community / react-native-iap

In App Purchase module for React Native!

Home Page:https://react-native-iap.dooboolab.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to decode base64 result.latest_receipt returned by validateReceiptIos ?

lc3t35 opened this issue · comments

Version of react-native-iap

1.2.1

Platforms you faced the error (IOS or Android or both?)

iOS
I was digging into validateReceiptIos to get more information on subscriptions status, I did this

RNIap.validateReceiptIos({
        'receipt-data': purchase.transactionReceipt,
        'password': "****",
      }, false, 54).then(result => {
        console.log("DEBUG pending_renewal_info ", result.pending_renewal_info);
        console.log("DEBUG lastest_receipt ", result.latest_receipt)
      });

result.latest_receipt is a base64 encoded json, does someone know the best way to convert it to readable json ?

Ref links :
https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html
https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ReceiptFields.html#//apple_ref/doc/uid/TP40010573-CH106-SW1

I've noticed an error in isTest param, if isTest is true, it should run as sandbox

export const validateReceiptIos = async (receiptBody, isTest, RNVersion) => {
  if (Platform.OS === 'ios') {
const URL = !isTest ? 'https://sandbox.itunes.apple.com/verifyReceipt' : 'https://buy.itunes.apple.com/verifyReceipt';

should be

export const validateReceiptIos = async (receiptBody, isTest, RNVersion) => {
  if (Platform.OS === 'ios') {
const URL = isTest ? 'https://sandbox.itunes.apple.com/verifyReceipt' : 'https://buy.itunes.apple.com/verifyReceipt';
commented

@lc3t35 Thank you for your correction. Could you give us a PR so that you can be the contributor? Or do you just want me to do this?

@dooboolab please, I think it's easier for just 1 character changed that you do this ;) Otherwise for the question, do you have some idea ?

commented

@lc3t35 I've just fixed it and publisehd to 1.2.3.

Thank you @dooboolab , any idea for decoding base64 encoded json receipt ?

commented

@lc3t35 Haven't had idea yet. I've just use this to verify that the purchase is not malformed. Could you share if you find any news?

@dooboolab I think there is a problem with the receipt I get, I've tried with another receipt such this one shown here j3k0/cordova-plugin-purchase#215 which decodes well.
Did Apple change something ?
Here is my receipt :

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

It seems that I can get renewal.auto_renew_status ("0" or "1") from

RNIap.validateReceiptIos({
        'receipt-data': purchase.transactionReceipt,
        'password': "*****",
      }, false, 54).then(result => {
        _.each(result.pending_renewal_info, function (renewal) {
          console.log("DEBUG pending_renewal_info ", renewal.auto_renew_product_id, renewal.auto_renew_status);
        });
        // console.log("DEBUG lastest_receipt ", result.latest_receipt);
      });

Is this enough to know if the user has cancelled his subscription, in this case renewal.auto_renew_status is "0" (i.e. not automatically renewable) ?
No -> voltrue2/in-app-purchase#150

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1

@lc3t35
For decode this base64 (from subscriptions), you will need to send it to apple server. Like described in https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

I was trying to copy the base64 from console while I was debugging my app and trying to make the call to Apple end-point, but it looks like the chrome was truncating the receipt, since I was always getting "invalid receipt" from Apple server.

After I sent the base64 receipt data to my local server and made the call to apple, I finally decoded the receipt.

commented

Related #237

After calling RNIap.validateReceiptIos I see the object with these keys: ['environment', 'latest_receipt', 'latest_receipt_info', 'pending_renewal_info', 'receipt', 'status']. Then why does one need to decode latest_receipt?