@wiqotech/nestjs-digiflazz
Version:
NestJS Digiflazz SDK Module
224 lines (195 loc) • 6.51 kB
Markdown
# NestJS Digiflazz
<a href="https://www.npmjs.com/package/@wiqotech/nestjs-digiflazz" target="_blank"><img src="https://img.shields.io/npm/v/@wiqotech/nestjs-digiflazz.svg" alt="NPM Version" /></a>
<a href="https://www.npmjs.com/package/@wiqotech/nestjs-digiflazz" target="_blank"><img src="https://img.shields.io/npm/l/@wiqotech/nestjs-digiflazz.svg" alt="Package License" /></a>
<a href="https://www.npmjs.com/package/@wiqotech/nestjs-digiflazz" target="_blank"><img src="https://img.shields.io/npm/dm/@wiqotech/nestjs-digiflazz.svg" alt="NPM Downloads" /></a>
## Description
Digiflazz API Wrapper for Nest JS, with this package you can easily integrate your Nest JS application with Digiflazz Marketplace Digital. Using [zod](https://github.com/colinhacks/zod) for schema validation so you can import the schema and use it for validation in your application.
## Status
### Under Development
This package is still under development, so there are still many features that are not available yet. Will be stable on version 1.0.0
## Table of Contents
- [Setup & Installation](#setup--installation)
- [Installation](#installation)
<!-- - [Module Import](#module-import)
- [Inject Service](#inject-service)
- [Transaction](#transaction)
- [Charge Transaction](#charge-transaction)
- [Check Transaction Status](#check-transaction-status)
- [Expire Transaction](#expire-transaction)
- [Subscription](#subscription)
- [Create Subscription](#create-subscription)
- [Get Subscription](#get-subscription)
- [Disable Subscription](#disable-subscription)
- [Enable Subscription](#enable-subscription)
- [Update Subscription](#update-subscription)
- [References](#references)
- [Support](#support)
- [Stay in touch](#stay-in-touch)
- [License](#license) -->
# Setup & Installation
## Installation
**Using NPM**
```bash
$ npm i --save @wiqotech/nestjs-digiflazz
```
**Using Yarn**
```bash
$ yarn add @wiqotech/nestjs-digiflazz
```
---
<!--
## Module Import
```typescript
import { Module } from '@nestjs/common';
import { MidtransModule } from '@ruraim/nestjs-midtrans';
// using register method
@Module({
imports: [
MidtransModule.register({
clientKey: 'client-key',
serverKey: 'server-key',
merchantId: 'merchant-id',
sandbox: true, // default: false,
isGlobal: true // default: false, register module globally
})
],
})
// using registerAsync with dependencies
@Module({
imports: [
MidtransModule.registerAsync({
useFactory: (config: ConfigService) => ({
clientKey: config.get<string>('MIDTRANS_CLIENT_KEY'),
serverKey: config.get<string>('MIDTRANS_SERVER_KEY'),
merchantId: config.get<string>('MIDTRANS_MERCHANT_ID'),
sandbox: config.get<string>('MIDTRANS_MODE') === 'sandbox',
}),
// using ConfigService from @nestjs/config to get .env value
inject: [ConfigService],
imports: [ConfigModule],
isGlobal: true // default: false, register module globally
})
],
})
export class AppModule {}
```
---
## Inject Service
```typescript
import { MidtransService } from '@ruraim/nestjs-midtrans';
@Injectable()
export class AppService {
constructor(
private readonly midtransService: MidtransService
) {}
}
```
# Transaction
## Charge Transaction
You can refer to [Midtrans - Charge Transaction](https://docs.midtrans.com/reference/charge-transactions-1) for more information about the payload or see [Charge Schema](src/midtrans/dto/Charge.ts) file in the source code.
```typescript
const result = await this.midtransService.charge({
payment_type: 'bank_transfer',
transaction_details: {
order_id: 'ORDER-ID-123',
gross_amount: 200000
},
customer_details: {
email: 'customer@gmail.com',
first_name: 'John Doe',
phone: '081234567890'
},
item_details: [
{
id: 'Item1',
price: 100000,
quantity: 1,
name: 'Item 1'
},
{
id: 'Item2',
price: 50000,
quantity: 2,
name: 'Item 2'
}
],
bank_transfer: {
bank: 'bca'
}
})
console.log(result)
```
---
## Check Transaction Status
```typescript
const result = await this.midtransService.getStatus('ORDER-ID-123')
console.log(result)
```
---
## Expire Transaction
```typescript
const result = await this.midtransService.expireTransaction('ORDER-ID-123')
console.log(result)
```
# Subscription
## Create Subscription
You can refer to [Midtrans - Create Subscription](https://docs.midtrans.com/reference/create-subscription) for more information about the payload or see [Create Subscription Schema](src/midtrans/dto/subscription/Subscription.ts) file in the source code.
```typescript
const result = await this.midtransService.createSubscription({
name: 'Langganan bulanan',
amount: 10000,
currency: 'IDR',
payment_type: 'credit_card',
schedule: {
interval: 1,
interval_unit: 'month',
max_interval: 12,
start_time: '2023-07-15 00:00:00'
},
token: 'dummy_credit_card_token',
})
console.log(result)
```
---
## Get Subscription
```typescript
const result = await this.midtransService.getSubscription('SUBSCRIPTION-ID-123')
console.log(result)
```
---
## Disable Subscription
```typescript
const result = await this.midtransService.disableSubscription('SUBSCRIPTION-ID-123')
console.log(result)
```
---
## Enable Subscription
```typescript
const result = await this.midtransService.enableSubscription('SUBSCRIPTION-ID-123')
console.log(result)
```
---
## Update Subscription
```typescript
const result = await this.midtransService.updateSubscription('4b9273ae-8bfa-4400-94fe-ba4b2b4af70f', {
name: 'Langganan bulanan',
amount: 50000,
currency: 'IDR',
token: 'dummy_credit_card_token'
})
console.log(result)
```
# References
- [Midtrans Official Documentation](https://docs.midtrans.com/)
- [Nest JS Official Documentation](https://docs.nestjs.com/)
# Support
If you like this package, you can support me by:
- Star this repository
- Contribute to this repository
- [Donate via Trakteer](https://trakteer.id/ruraim)
# Stay in touch
If you have any question, feel free to contact me on:
- [WhatsApp](https://wa.me/087748833087)
- [Telegram](https://t.me/ruraim)
# License
[MIT licensed](LICENSE). -->