routexpress-bd
Version:
A TypeScript/JavaScript library for integrating Steadfast Pathao REDX delivery services
327 lines (249 loc) • 6.53 kB
Markdown
# RouteXpress-BD
A Node.js library to unify and manage courier services in Bangladesh (Pathao, Steadfast, etc.).
## Features
- Unified API for multiple courier providers (Pathao, Steadfast, etc.)
- Create single or bulk orders
- Fetch order status by consignment ID, invoice, or tracking code
- Manage Pathao tokens, stores, and locations
- Get Steadfast account balance
- Price calculation for Pathao orders
## Installation
Install with npm or pnpm:
```bash
npm install routexpress-bd
# or
pnpm add routexpress-bd
```
## Getting Started
### Import and Initialize
```typescript
import RouteXpress from "routexpress-bd";
const client = new RouteXpress({
steadfast: {
apiKey: "YOUR_STEADFAST_API_KEY",
apiSecret: "YOUR_STEADFAST_API_SECRET",
},
pathao: {
apiKey: "YOUR_PATHAO_API_KEY",
apiSecret: "YOUR_PATHAO_API_SECRET",
username: "YOUR_PATHAO_USERNAME",
password: "YOUR_PATHAO_PASSWORD",
},
});
```
## API Reference & Usage Examples
### 1. Create Order
#### Steadfast
```typescript
const orderData = {
provider: "steadfast",
order_details: {
invoice: "INV90444w0144",
recipient_name: "John Doe",
recipient_phone: "01712344578",
recipient_address: "123 Main Street, Dhaka",
cod_amount: 1000,
},
};
const response = await client.createOrder("steadfast", orderData);
console.log("Steadfast Order Response:", response);
```
#### Pathao
```typescript
const pathaoOrder = {
authToken: "YOUR_PATHAO_AUTH_TOKEN",
store_id: 148430,
merchant_order_id: "ORD123456",
recipient_name: "John Doe",
recipient_phone: "01712325678",
recipient_address: "123 Main Street, Dhaka",
recipient_city: 1,
recipient_zone: 1,
recipient_area: 1,
delivery_type: 48,
item_type: 2,
special_instruction: "Handle with care",
item_quantity: 1,
item_weight: 0.5,
item_description: "Electronics",
amount_to_collect: 1000,
};
const response = await client.createOrder("pathao", pathaoOrder);
console.log("Pathao Order Response:", response);
```
### 2. Create Bulk Order
#### Steadfast
```typescript
const bulkOrderData = {
provider: "steadfast",
orders: [
{
invoice: "INV0094e8981",
recipient_name: "John Doe",
recipient_phone: "01712345678",
recipient_address: "123 Main Street, Dhaka",
cod_amount: 1000,
},
// ...more orders
],
};
const response = await client.createBulkOrder("steadfast", bulkOrderData);
console.log("Bulk Order Response:", response);
```
#### Pathao
```typescript
const bulkOrderDataForPathao = {
authToken: "YOUR_PATHAO_AUTH_TOKEN",
orders: [
{
store_id: 148430,
merchant_order_id: "ORD123456",
recipient_name: "John Doe",
recipient_phone: "01712342578",
recipient_address: "123 Main Street, Dhaka",
recipient_city: 1,
recipient_zone: 1,
recipient_area: 1,
delivery_type: 48,
item_type: 2,
special_instruction: "Handle with care",
item_quantity: 1,
item_weight: 0.5,
item_description: "Electronics",
amount_to_collect: 1000,
},
// ...more orders
],
};
const response = await client.createBulkOrder("pathao", bulkOrderDataForPathao);
console.log("Bulk Order Response:", response);
```
### 3. Get Order Status
#### By Consignment ID
```typescript
const response = await client.getOrderStatus({
provider: "steadfast",
data: { consignment_id: "DT0905255BZNFQ" },
});
const pathaoResponse = await client.getOrderStatus({
provider: "pathao",
data: {
consignment_id: "DT0905255BZNFQ",
authToken: "YOUR_PATHAO_AUTH_TOKEN",
},
});
console.log("Response:", pathaoResponse);
```
#### By Invoice
```typescript
const response = await client.statusByInvoice("INV90444344w0144");
console.log("Response:", response);
```
#### By Tracking Code
```typescript
const response = await client.statusBytrackingcode("88D026EF9");
console.log("Response:", response);
```
### 4. Get Steadfast Balance
```typescript
const response = await client.getSteadFastBalance();
console.log("Response:", response);
```
### 5. Pathao Token Management
#### Create Access Token
```typescript
const response = await client.createPathaoToken();
console.log("Access Token:", response.access_token);
```
#### Refresh Token
```typescript
const accessTokenResponse = await client.createPathaoToken();
const refreshToken = accessTokenResponse.refresh_token;
const response = await client.createPathaoRefreshToken(refreshToken);
console.log("Response:", response);
```
### 6. Pathao Store Management
#### Create Store
```typescript
const authToken = "YOUR_PATHAO_AUTH_TOKEN";
const storeData = {
name: "My StoreDemo1",
contact_name: "John Doe",
contact_number: "01712345678",
secondary_contact: "01787654321",
address: "123 Main Street, Dhaka",
city_id: 1,
zone_id: 1,
area_id: 1,
};
const response = await client.createPathaoStore(authToken, storeData);
console.log("Store Name:", response.store_name);
```
#### Get All Stores
```typescript
const response = await client.getAllPathaoStore(authToken);
console.log("Response:", response);
```
### 7. Pathao Location Data
#### Get Cities
```typescript
const response = await client.getPathaoCity(authToken);
console.log("Response:", response);
```
#### Get Zones
```typescript
const response = await client.getPathaoZone(authToken, city_id);
console.log("Response:", response);
```
#### Get Areas
```typescript
const response = await client.getPathaoArea(authToken, zone_id);
console.log("Response:", response);
```
### 8. Pathao Price Calculation
```typescript
const orderData = {
store_id: 148430,
item_type: 2,
recipient_city: 1,
recipient_zone: 1,
recipient_area: 1,
delivery_type: 48,
item_weight: 5,
item_quantity: 1,
amount_to_collect: 1000,
};
const response = await client.price_plane(authToken, orderData);
console.log("Response:", response);
```
## Error Handling
All methods throw errors on failure. Use try/catch to handle errors:
```typescript
try {
// ...call any client method
} catch (err) {
console.error(err);
}
```
## Best Practices
- Always keep your API keys and tokens secure. Do not hardcode them in production code.
- Use async/await and proper error handling for all API calls.
- Refer to the official documentation of each courier for more details on their specific requirements.
## License
MIT
For more details, see the [test/main.ts](./test/main.ts) file for real usage examples.