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: 8 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 5 years ago)
- Default Branch: main
- Last Pushed: 2024-03-21T08:15:05.000Z (over 2 years ago)
- Last Synced: 2025-10-03T14:23:09.792Z (9 months ago)
- Language: JavaScript
- Size: 2.29 MB
- Stars: 17
- Watchers: 8
- Forks: 7
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
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