@cafebazaar/react-native-poolakey
v3.1.2
Published
ReactNative implementation of CafeBazaar's in-app payment SDK
Downloads
216
Maintainers
Readme
@cafebazaar/react-native-poolakey
ReactNative implementation of CafeBazaar's in-app payment SDK.
Installation
yarn add @cafebazaar/react-native-poolakey
or
npm install @cafebazaar/react-native-poolakey
Usage
Functional Components
import { useBazaar } from '@cafebazaar/react-native-poolakey';
// ...
function MyComponent() {
const bazaar = useBazaar(RSA_KEY);
// ...
const someHandler = async () => {
const purchaseResult = await bazaar.purchaseProduct(productId);
console.log(purchaseResult.purchaseToken);
};
// ...
}
Class Components
import bazaar from '@cafebazaar/react-native-poolakey';
// ...
class MyApp extends React.Component {
componentDidMount() {
bazaar
.connect(YOUR_RSA_KEY)
.catch(handleError); // bazaar is not installed or what?!
}
componentWillUnmount() {
bazaar.disconnect();
}
async someButtonHandler() {
const purchaseResult = await bazaar.purchaseProduct(productId);
console.log(purchaseResult.purchaseToken);
}
}
Complete Example
Please see example folder for a complete example react-native implementation.
API Documentation
connect / disconnect
TLDR: For each connect
call, you need to call disconnect
too.
To use bazaar apis, user needs to have Bazaar app installed on his phone.
In all times, there's a single connection from your app to bazaar, each time
you call connect
we count it internally and you have to call disconnect
the same number of times to be disconnected completely.
Once you are connected, you can call other apis, but you don't need to wait
for connect
promise to be resolved, other apis internally wait for connection
to be established.
Inside functional components, you can use useBazaar
which automatically calls
connect
/disconnect
on mount/unmount hooks.
purchaseProduct(productId: string): Promise<PurchaseResult>
Purchase a product, bazaar starts payment flow automatically.
consumePurchase(purchaseToken: string): Promise<void>
If your product is consumable, you can call consumePurchase
whenever you see fit. To
consume, you need to provide purchaseToken from a previous consumePurchase
call result.
subscribeProduct(productId: string): Promise<PurchaseResult>
Subscribe to a product, bazaar starts payment flow automatically.
getPurchasedProducts(): Promise<PurchaseResult[]>
Get a list of products purchased by current user (logged in inside his bazaar app).
getSubscribedProducts(): Promise<PurchaseResult[]>
Get a list of subscriptions purchased by current user (logged in inside his bazaar app).
queryPurchaseProduct(productId: string): Promise<PurchaseResult>
Get a specific purchase data by productId
querySubscribeProduct(productId: string): Promise<PurchaseResult>
Get a specific subscription data by productId
getInAppSkuDetails(productIds: string[]): Promise<SkuDetails[]>
Get array of in-app sku details for all provided product ids
getSubscriptionSkuDetails(productIds: string[]): Promise<SkuDetails[]>
Get array of subscription sku details for all provided product ids
PurchaseResult
type PurchaseResult = {
orderId: string;
packageName: string;
productId: string;
purchaseTime: Date;
purchaseState: number;
developerPayload: string;
purchaseToken: string;
}
SkuDetails
type SkuDetails = {
sku: string;
type: string;
price: string;
title: Date;
description: number;
}
License
MIT