https://github.com/cafebazaar/react-native-poolakey
ReactNative In-App Billing SDK for Cafe Bazaar App Store
https://github.com/cafebazaar/react-native-poolakey
Last synced: about 2 months ago
JSON representation
ReactNative In-App Billing SDK for Cafe Bazaar App Store
- Host: GitHub
- URL: https://github.com/cafebazaar/react-native-poolakey
- Owner: cafebazaar
- License: mit
- Created: 2021-04-25T10:23:05.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-21T08:15:05.000Z (about 1 year ago)
- Last Synced: 2025-04-07T11:21:20.118Z (about 2 months ago)
- Language: JavaScript
- Size: 2.29 MB
- Stars: 17
- Watchers: 8
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# @cafebazaar/react-native-poolakey
ReactNative implementation of CafeBazaar's in-app payment SDK.
## Installation
```sh
yarn add @cafebazaar/react-native-poolakey
```
or
```sh
npm install @cafebazaar/react-native-poolakey
```## Usage
### Functional Components
```js
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
```js
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](https://github.com/cafebazaar/react-native-poolakey/tree/main/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
Get array of in-app sku details for all provided product ids### getSubscriptionSkuDetails(productIds: string[]): Promise
Get array of subscription sku details for all provided product ids### PurchaseResult
```typescript
type PurchaseResult = {
orderId: string;
packageName: string;
productId: string;
purchaseTime: Date;
purchaseState: number;
developerPayload: string;
purchaseToken: string;
}
```### SkuDetails
```typescript
type SkuDetails = {
sku: string;
type: string;
price: string;
title: Date;
description: number;
}
```## License
MIT