shopifymo
Version:
- Module get product information, customer, order history. - Get customer information by token and authenticate through email login, password
65 lines (56 loc) • 2.09 kB
text/typescript
import { DataType, Session, Shopify } from "@shopify/shopify-api";
import { ConfigShopifyMo, OrderStatus } from "./types";
export default class AdminRestApi {
shopifyApi: Shopify
session: Session
constructor(shopifyApi: Shopify, config: ConfigShopifyMo) {
this.shopifyApi = shopifyApi
const sessionId = this.shopifyApi.session.getOfflineId(config.domain)
this.session = new Session({
id: sessionId,
shop: config.domain,
state: 'state',
isOnline: false,
accessToken: config.adminApiAccessToken
});
}
findCustomer = async (customer_id: number | string, fields?: unknown) => {
try {
let customer = await this.shopifyApi.rest.Customer.find({
session: this.session,
id: customer_id
})
return customer
} catch (error: any) {
console.log('findCustomer ' + error.toString());
}
return null
}
findOrderOnCustomer = async (customer_id: number | string, status: OrderStatus = 'any') => {
try {
let ordersHistory: any = await this.shopifyApi.rest.Customer.orders({
session: this.session,
id: customer_id,
status
});
return ordersHistory
} catch (error: any) {
console.log('findCustomerOrder ' + error.toString());
}
return null
}
getStorefrontAccessToken = async () => {
const client = new this.shopifyApi.clients.Rest({ session: this.session })
const storefrontTokenResponse: any = await client.post({
path: 'storefront_access_tokens',
type: DataType.JSON,
data: {
storefront_access_token: {
title: 'This is my test access token',
},
},
});
const storefrontAccessToken = storefrontTokenResponse.body['storefront_access_token']['access_token'];
return storefrontAccessToken
}
}