How to use expo-in-app-purchases - 10 common examples

To help you get started, we’ve selected a few expo-in-app-purchases examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github expo / expo / apps / expo-payments / App.js View on Github external
/*
      These item entries are created in App Store Connect and Google Play Console respectively.
      If you want to add more or edit their attributes you can do so there.
    */
    const items = Platform.select({
      ios: [
        'dev.expo.products.premium',
        'dev.expo.payments.updates',
        'dev.expo.payments.adfree',
        'dev.expo.payments.gold',
      ],
      android: ['gas', 'premium', 'gold_yearly', 'gold_monthly'],
    });

    // Get product details
    const { responseCode, results } = await getProductsAsync(items);
    if (responseCode === IAPResponseCode.OK) {
      this.setState({ items: results, history: history.results });
    }

    // Set purchase listener
    setPurchaseListener(({ responseCode, results, errorCode }) => {
      if (responseCode === IAPResponseCode.OK) {
        for (const purchase of results) {
          console.log(`Successfully purchased ${purchase.productId}`);
          if (!purchase.acknowledged) {
            finishTransactionAsync(purchase, true);
          }
        }
      } else if (responseCode === IAPResponseCode.USER_CANCELED) {
        console.log('User canceled');
      } else {
github expo / expo / apps / expo-payments / App.js View on Github external
'dev.expo.products.premium',
        'dev.expo.payments.updates',
        'dev.expo.payments.adfree',
        'dev.expo.payments.gold',
      ],
      android: ['gas', 'premium', 'gold_yearly', 'gold_monthly'],
    });

    // Get product details
    const { responseCode, results } = await getProductsAsync(items);
    if (responseCode === IAPResponseCode.OK) {
      this.setState({ items: results, history: history.results });
    }

    // Set purchase listener
    setPurchaseListener(({ responseCode, results, errorCode }) => {
      if (responseCode === IAPResponseCode.OK) {
        for (const purchase of results) {
          console.log(`Successfully purchased ${purchase.productId}`);
          if (!purchase.acknowledged) {
            finishTransactionAsync(purchase, true);
          }
        }
      } else if (responseCode === IAPResponseCode.USER_CANCELED) {
        console.log('User canceled');
      } else {
        console.warn(
          `Something went wrong with the purchase. Received response code ${responseCode} and errorCode ${errorCode}`
        );
      }
    });
  }
github expo / expo / apps / expo-payments / App.js View on Github external
async componentDidMount() {
    // This method must be called first to initialize listeners and billing client
    const history = await connectAsync();

    /*
      These item entries are created in App Store Connect and Google Play Console respectively.
      If you want to add more or edit their attributes you can do so there.
    */
    const items = Platform.select({
      ios: [
        'dev.expo.products.premium',
        'dev.expo.payments.updates',
        'dev.expo.payments.adfree',
        'dev.expo.payments.gold',
      ],
      android: ['gas', 'premium', 'gold_yearly', 'gold_monthly'],
    });

    // Get product details
github expo / expo / apps / expo-payments / App.js View on Github external
setPurchaseListener(({ responseCode, results, errorCode }) => {
      if (responseCode === IAPResponseCode.OK) {
        for (const purchase of results) {
          console.log(`Successfully purchased ${purchase.productId}`);
          if (!purchase.acknowledged) {
            finishTransactionAsync(purchase, true);
          }
        }
      } else if (responseCode === IAPResponseCode.USER_CANCELED) {
        console.log('User canceled');
      } else {
        console.warn(
          `Something went wrong with the purchase. Received response code ${responseCode} and errorCode ${errorCode}`
        );
      }
    });
  }
github expo / expo / apps / expo-payments / App.js View on Github external
setPurchaseListener(({ responseCode, results, errorCode }) => {
      if (responseCode === IAPResponseCode.OK) {
        for (const purchase of results) {
          console.log(`Successfully purchased ${purchase.productId}`);
          if (!purchase.acknowledged) {
            finishTransactionAsync(purchase, true);
          }
        }
      } else if (responseCode === IAPResponseCode.USER_CANCELED) {
        console.log('User canceled');
      } else {
        console.warn(
          `Something went wrong with the purchase. Received response code ${responseCode} and errorCode ${errorCode}`
        );
      }
    });
  }
github expo / expo / apps / expo-payments / App.js View on Github external
setPurchaseListener(({ responseCode, results, errorCode }) => {
      if (responseCode === IAPResponseCode.OK) {
        for (const purchase of results) {
          console.log(`Successfully purchased ${purchase.productId}`);
          if (!purchase.acknowledged) {
            finishTransactionAsync(purchase, true);
          }
        }
      } else if (responseCode === IAPResponseCode.USER_CANCELED) {
        console.log('User canceled');
      } else {
        console.warn(
          `Something went wrong with the purchase. Received response code ${responseCode} and errorCode ${errorCode}`
        );
      }
    });
  }
github expo / expo / apps / expo-payments / App.js View on Github external
async queryPurchaseHistory() {
    const { responseCode, results } = await getPurchaseHistoryAsync(true);
    if (responseCode === IAPResponseCode.OK) {
      this.setState({ history: results });
    }
  }
github expo / expo / apps / expo-payments / App.js View on Github external
async queryPurchaseHistory() {
    const { responseCode, results } = await getPurchaseHistoryAsync(true);
    if (responseCode === IAPResponseCode.OK) {
      this.setState({ history: results });
    }
  }
github expo / expo / apps / expo-payments / App.js View on Github external
async componentWillUnmount() {
    await disconnectAsync();
  }
github expo / expo / apps / expo-payments / App.js View on Github external
async getBillingResult() {
    const responseCode = await getBillingResponseCodeAsync();
    this.setState({ responseCode });
  }