Skip to content

Commit

Permalink
Merge pull request #1610 from RodriSanchez1/fix/transformSubscription…
Browse files Browse the repository at this point in the history
…Transaction

Transform receipt on purchase validator
  • Loading branch information
martinbedouret authored Dec 12, 2023
2 parents 9c30ec6 + 75bd800 commit a478cbe
Showing 1 changed file with 48 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import { connect } from 'react-redux';

import API from '../../api';
import { isAndroid } from '../../cordova-util';
import { isAndroid, isIOS } from '../../cordova-util';

import {
updateIsInFreeCountry,
Expand Down Expand Up @@ -41,7 +41,7 @@ export class SubscriptionProvider extends Component {
const isInFreeCountry = updateIsInFreeCountry();
const isOnTrialPeriod = updateIsOnTrialPeriod();
await updatePlans();
if (isAndroid()) this.configInAppPurchasePlugin();
if (isAndroid() || isIOS()) this.configInAppPurchasePlugin();
if (!isInFreeCountry && !isOnTrialPeriod && !isSubscribed && isLogged) {
showPremiumRequired({ showTryPeriodFinishedMessages: true });
}
Expand All @@ -67,9 +67,54 @@ export class SubscriptionProvider extends Component {
};

configPurchaseValidator = () => {
const transformReceipt = receipt => {
const receiptTransaction = receipt.transaction;
const receiptData = JSON.parse(receipt.transaction.receipt);
const {
packageName,
productId,
purchaseTime,
purchaseState,
purchaseToken,
quantity,
autoRenewing,
acknowledged
} = receiptData;
const transaction = {
className: 'Transaction',
transactionId: receiptTransaction.id,
state: 'approved',
products: receipt.products,
platform: receiptTransaction.type,
nativePurchase: {
orderId: receiptTransaction.id,
packageName: packageName,
productId: productId,
purchaseTime: purchaseTime,
purchaseState: purchaseState,
purchaseToken: purchaseToken,
quantity: quantity,
autoRenewing: autoRenewing,
acknowledged: acknowledged,
productIds: receipt.products.map(product => product.id),
signature: receiptTransaction.signature,
receipt: receiptTransaction.receipt
},
purchaseId: purchaseToken,
purchaseDate: new Date(purchaseTime),
isPending: false,
isAcknowledged: acknowledged,
renewalIntent: 'Renew'
};
return transaction;
};

window.CdvPurchase.store.validator = async function(receipt, callback) {
try {
const transaction = receipt.transactions[0];
const transaction = isIOS()
? receipt.transaction
: transformReceipt(receipt);

const res = await API.postTransaction(transaction);
if (!res.ok) throw res;
callback({
Expand Down

0 comments on commit a478cbe

Please sign in to comment.