@things-factory/integration-marketplace 5.0.0-alpha.5 → 5.0.0-alpha.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/pages/marketplace-stores.js +8 -0
- package/dist-server/controllers/index.js +1 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/lazada/apis/get-store-orders.js +3 -3
- package/dist-server/controllers/lazada/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/lazada/apis/update-store-product-stock.js +2 -2
- package/dist-server/controllers/lazada/apis/update-store-product-stock.js.map +1 -1
- package/dist-server/controllers/lazada/apis/update-store-product-variation-stock.js +2 -2
- package/dist-server/controllers/lazada/apis/update-store-product-variation-stock.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-order.js +20 -0
- package/dist-server/controllers/magento/apis/get-store-order.js.map +1 -0
- package/dist-server/controllers/magento/apis/get-store-orders.js +38 -7
- package/dist-server/controllers/magento/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-product-categories.js +47 -0
- package/dist-server/controllers/magento/apis/get-store-product-categories.js.map +1 -0
- package/dist-server/controllers/magento/apis/get-store-products.js +29 -11
- package/dist-server/controllers/magento/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/magento/apis/get-store-stock-item.js +1 -1
- package/dist-server/controllers/magento/apis/get-store-stock-item.js.map +1 -1
- package/dist-server/controllers/magento/apis/index.js +5 -0
- package/dist-server/controllers/magento/apis/index.js.map +1 -1
- package/dist-server/controllers/magento/apis/update-order-status.js +62 -0
- package/dist-server/controllers/magento/apis/update-order-status.js.map +1 -0
- package/dist-server/controllers/magento/apis/update-store-product-price.js +28 -0
- package/dist-server/controllers/magento/apis/update-store-product-price.js.map +1 -0
- package/dist-server/controllers/magento/apis/update-store-product-stock.js +1 -1
- package/dist-server/controllers/magento/apis/update-store-product-stock.js.map +1 -1
- package/dist-server/controllers/magento/apis/update-store-product-variation-price.js +28 -0
- package/dist-server/controllers/magento/apis/update-store-product-variation-price.js.map +1 -0
- package/dist-server/controllers/magento/apis/update-store-product-variation-stock.js +1 -1
- package/dist-server/controllers/magento/apis/update-store-product-variation-stock.js.map +1 -1
- package/dist-server/controllers/magento/magento.js +4 -4
- package/dist-server/controllers/magento/magento.js.map +1 -1
- package/dist-server/controllers/magento/platform-action.js +1 -0
- package/dist-server/controllers/magento/platform-action.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-order-payout-dates.js +3 -3
- package/dist-server/controllers/shopee/apis/get-store-order-payout-dates.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-order.js +8 -2
- package/dist-server/controllers/shopee/apis/get-store-order.js.map +1 -1
- package/dist-server/controllers/shopee/apis/get-store-orders.js +3 -3
- package/dist-server/controllers/shopee/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/shopify/apis/get-store-orders.js +74 -14
- package/dist-server/controllers/shopify/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/shopify/apis/get-store-product-variation-stock.js +23 -0
- package/dist-server/controllers/shopify/apis/get-store-product-variation-stock.js.map +1 -0
- package/dist-server/controllers/shopify/apis/get-store-products.js +38 -3
- package/dist-server/controllers/shopify/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/shopify/apis/index.js +4 -0
- package/dist-server/controllers/shopify/apis/index.js.map +1 -1
- package/dist-server/controllers/shopify/apis/set-store-order-status-ready-to-ship.js +3 -2
- package/dist-server/controllers/shopify/apis/set-store-order-status-ready-to-ship.js.map +1 -1
- package/dist-server/controllers/shopify/apis/update-order-status.js +15 -5
- package/dist-server/controllers/shopify/apis/update-order-status.js.map +1 -1
- package/dist-server/controllers/shopify/apis/update-store-product-price.js +29 -0
- package/dist-server/controllers/shopify/apis/update-store-product-price.js.map +1 -0
- package/dist-server/controllers/shopify/apis/update-store-product-stock.js +24 -0
- package/dist-server/controllers/shopify/apis/update-store-product-stock.js.map +1 -0
- package/dist-server/controllers/shopify/apis/update-store-product-variation-price.js +29 -0
- package/dist-server/controllers/shopify/apis/update-store-product-variation-price.js.map +1 -0
- package/dist-server/controllers/shopify/apis/update-store-product-variation-stock.js +1 -1
- package/dist-server/controllers/shopify/apis/update-store-product-variation-stock.js.map +1 -1
- package/dist-server/controllers/shopify/shopify.js +36 -0
- package/dist-server/controllers/shopify/shopify.js.map +1 -1
- package/dist-server/controllers/store-api/index.js +28 -0
- package/dist-server/controllers/store-api/index.js.map +1 -1
- package/dist-server/controllers/tiktok/apis/echo.js +19 -0
- package/dist-server/controllers/tiktok/apis/echo.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-order-document.js +27 -0
- package/dist-server/controllers/tiktok/apis/get-store-order-document.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-order-package.js +47 -0
- package/dist-server/controllers/tiktok/apis/get-store-order-package.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-order-packages.js +39 -0
- package/dist-server/controllers/tiktok/apis/get-store-order-packages.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-order.js +140 -0
- package/dist-server/controllers/tiktok/apis/get-store-order.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-orders.js +49 -0
- package/dist-server/controllers/tiktok/apis/get-store-orders.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-product-attributes.js +30 -0
- package/dist-server/controllers/tiktok/apis/get-store-product-attributes.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-product-categories.js +28 -0
- package/dist-server/controllers/tiktok/apis/get-store-product-categories.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-product.js +91 -0
- package/dist-server/controllers/tiktok/apis/get-store-product.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/get-store-products.js +41 -0
- package/dist-server/controllers/tiktok/apis/get-store-products.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/index.js +30 -0
- package/dist-server/controllers/tiktok/apis/index.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/update-order-status.js +28 -0
- package/dist-server/controllers/tiktok/apis/update-order-status.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/update-store-product-variation-price.js +28 -0
- package/dist-server/controllers/tiktok/apis/update-store-product-variation-price.js.map +1 -0
- package/dist-server/controllers/tiktok/apis/update-store-product-variation-stock.js +32 -0
- package/dist-server/controllers/tiktok/apis/update-store-product-variation-stock.js.map +1 -0
- package/dist-server/controllers/tiktok/client/index.js +19 -0
- package/dist-server/controllers/tiktok/client/index.js.map +1 -0
- package/dist-server/controllers/tiktok/client/signature.js +63 -0
- package/dist-server/controllers/tiktok/client/signature.js.map +1 -0
- package/dist-server/controllers/tiktok/client/tiktok.js +109 -0
- package/dist-server/controllers/tiktok/client/tiktok.js.map +1 -0
- package/dist-server/controllers/tiktok/client/types.js +3 -0
- package/dist-server/controllers/tiktok/client/types.js.map +1 -0
- package/dist-server/controllers/tiktok/index.js +34 -0
- package/dist-server/controllers/tiktok/index.js.map +1 -0
- package/dist-server/controllers/tiktok/platform-action.js +53 -0
- package/dist-server/controllers/tiktok/platform-action.js.map +1 -0
- package/dist-server/controllers/woocommerce/apis/get-customer-info.js +22 -0
- package/dist-server/controllers/woocommerce/apis/get-customer-info.js.map +1 -0
- package/dist-server/controllers/woocommerce/apis/get-store-orders.js +27 -6
- package/dist-server/controllers/woocommerce/apis/get-store-orders.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/get-store-products.js +64 -6
- package/dist-server/controllers/woocommerce/apis/get-store-products.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/index.js +1 -0
- package/dist-server/controllers/woocommerce/apis/index.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/update-order-status.js +17 -15
- package/dist-server/controllers/woocommerce/apis/update-order-status.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/update-product-attribute.js +4 -3
- package/dist-server/controllers/woocommerce/apis/update-product-attribute.js.map +1 -1
- package/dist-server/controllers/woocommerce/apis/update-store-product-variation-price.js +1 -1
- package/dist-server/controllers/woocommerce/apis/update-store-product-variation-price.js.map +1 -1
- package/dist-server/entities/marketplace-store.js +4 -0
- package/dist-server/entities/marketplace-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.js +2 -5
- package/dist-server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/magento/activate-magento-store.js +2 -2
- package/dist-server/graphql/resolvers/marketplace-store/magento/activate-magento-store.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.js +2 -2
- package/dist-server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.js +2 -5
- package/dist-server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.js.map +1 -1
- package/dist-server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.js +2 -5
- package/dist-server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.js.map +1 -1
- package/dist-server/graphql/types/marketplace-store/marketplace-store-patch.js +1 -0
- package/dist-server/graphql/types/marketplace-store/marketplace-store-patch.js.map +1 -1
- package/dist-server/graphql/types/marketplace-store/marketplace-store.js +1 -0
- package/dist-server/graphql/types/marketplace-store/marketplace-store.js.map +1 -1
- package/dist-server/graphql/types/marketplace-store/new-marketplace-store.js +1 -0
- package/dist-server/graphql/types/marketplace-store/new-marketplace-store.js.map +1 -1
- package/dist-server/routers/magento-private-router.js +2 -2
- package/dist-server/routers/magento-private-router.js.map +1 -1
- package/dist-server/routers/shopify-install-private-router.js +2 -2
- package/dist-server/routers/shopify-install-private-router.js.map +1 -1
- package/dist-server/routers/shopify-private-router.js +2 -2
- package/dist-server/routers/shopify-private-router.js.map +1 -1
- package/dist-server/routers/shopify-public-router.js +2 -2
- package/dist-server/routers/shopify-public-router.js.map +1 -1
- package/dist-server/routers/woocommerce-router.js +2 -2
- package/dist-server/routers/woocommerce-router.js.map +1 -1
- package/package.json +15 -15
- package/server/controllers/index.ts +1 -0
- package/server/controllers/lazada/apis/get-store-orders.ts +3 -3
- package/server/controllers/lazada/apis/update-store-product-stock.ts +2 -2
- package/server/controllers/lazada/apis/update-store-product-variation-stock.ts +2 -2
- package/server/controllers/magento/apis/get-store-order.ts +15 -0
- package/server/controllers/magento/apis/get-store-orders.ts +40 -7
- package/server/controllers/magento/apis/get-store-product-categories.ts +43 -0
- package/server/controllers/magento/apis/get-store-products.ts +35 -11
- package/server/controllers/magento/apis/get-store-stock-item.ts +1 -1
- package/server/controllers/magento/apis/index.ts +5 -0
- package/server/controllers/magento/apis/update-order-status.ts +56 -0
- package/server/controllers/magento/apis/update-store-product-price.ts +24 -0
- package/server/controllers/magento/apis/update-store-product-stock.ts +1 -1
- package/server/controllers/magento/apis/update-store-product-variation-price.ts +24 -0
- package/server/controllers/magento/apis/update-store-product-variation-stock.ts +1 -1
- package/server/controllers/magento/magento.ts +5 -4
- package/server/controllers/magento/platform-action.ts +1 -0
- package/server/controllers/shopee/apis/get-store-order-payout-dates.ts +3 -3
- package/server/controllers/shopee/apis/get-store-order.ts +8 -2
- package/server/controllers/shopee/apis/get-store-orders.ts +3 -3
- package/server/controllers/shopify/apis/get-store-orders.ts +76 -15
- package/server/controllers/shopify/apis/get-store-product-variation-stock.ts +17 -0
- package/server/controllers/shopify/apis/get-store-products.ts +38 -3
- package/server/controllers/shopify/apis/index.ts +4 -0
- package/server/controllers/shopify/apis/set-store-order-status-ready-to-ship.ts +3 -2
- package/server/controllers/shopify/apis/update-order-status.ts +17 -5
- package/server/controllers/shopify/apis/update-store-product-price.ts +26 -0
- package/server/controllers/shopify/apis/update-store-product-stock.ts +20 -0
- package/server/controllers/shopify/apis/update-store-product-variation-price.ts +26 -0
- package/server/controllers/shopify/apis/update-store-product-variation-stock.ts +1 -1
- package/server/controllers/shopify/shopify.ts +41 -0
- package/server/controllers/store-api/index.ts +12 -0
- package/server/controllers/tiktok/apis/echo.ts +14 -0
- package/server/controllers/tiktok/apis/get-store-order-document.ts +26 -0
- package/server/controllers/tiktok/apis/get-store-order-package.ts +46 -0
- package/server/controllers/tiktok/apis/get-store-order-packages.ts +43 -0
- package/server/controllers/tiktok/apis/get-store-order.ts +174 -0
- package/server/controllers/tiktok/apis/get-store-orders.ts +55 -0
- package/server/controllers/tiktok/apis/get-store-product-attributes.ts +29 -0
- package/server/controllers/tiktok/apis/get-store-product-categories.ts +27 -0
- package/server/controllers/tiktok/apis/get-store-product.ts +95 -0
- package/server/controllers/tiktok/apis/get-store-products.ts +45 -0
- package/server/controllers/tiktok/apis/index.ts +13 -0
- package/server/controllers/tiktok/apis/update-order-status.ts +24 -0
- package/server/controllers/tiktok/apis/update-store-product-variation-price.ts +24 -0
- package/server/controllers/tiktok/apis/update-store-product-variation-stock.ts +28 -0
- package/server/controllers/tiktok/client/index.ts +2 -0
- package/server/controllers/tiktok/client/signature.ts +78 -0
- package/server/controllers/tiktok/client/tiktok.ts +150 -0
- package/server/controllers/tiktok/client/types.ts +20 -0
- package/server/controllers/tiktok/index.ts +8 -0
- package/server/controllers/tiktok/platform-action.ts +72 -0
- package/server/controllers/woocommerce/apis/get-customer-info.ts +18 -0
- package/server/controllers/woocommerce/apis/get-store-orders.ts +40 -6
- package/server/controllers/woocommerce/apis/get-store-products.ts +65 -7
- package/server/controllers/woocommerce/apis/index.ts +1 -0
- package/server/controllers/woocommerce/apis/update-order-status.ts +18 -14
- package/server/controllers/woocommerce/apis/update-product-attribute.ts +6 -3
- package/server/controllers/woocommerce/apis/update-store-product-variation-price.ts +1 -1
- package/server/entities/marketplace-store.ts +3 -0
- package/server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.ts +2 -2
- package/server/graphql/resolvers/marketplace-store/magento/activate-magento-store.ts +2 -2
- package/server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.ts +2 -2
- package/server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.ts +2 -2
- package/server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.ts +2 -2
- package/server/graphql/types/marketplace-store/marketplace-store-patch.ts +1 -0
- package/server/graphql/types/marketplace-store/marketplace-store.ts +1 -0
- package/server/graphql/types/marketplace-store/new-marketplace-store.ts +1 -0
- package/server/routers/magento-private-router.ts +2 -2
- package/server/routers/shopify-install-private-router.ts +2 -2
- package/server/routers/shopify-private-router.ts +2 -2
- package/server/routers/shopify-public-router.ts +2 -2
- package/server/routers/woocommerce-router.ts +2 -2
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import fetch from 'node-fetch'
|
|
2
|
+
|
|
3
|
+
import { makePublicRequestParameters } from './signature'
|
|
4
|
+
import { Parameter } from './types'
|
|
5
|
+
|
|
6
|
+
const debug = require('debug')('things-factory:integration-marketplace:tiktok')
|
|
7
|
+
|
|
8
|
+
export type TiktokConfig = {
|
|
9
|
+
appKey: string
|
|
10
|
+
appSecret: string
|
|
11
|
+
accessToken: string
|
|
12
|
+
channelShopId: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class Tiktok {
|
|
16
|
+
private config: TiktokConfig
|
|
17
|
+
|
|
18
|
+
constructor(config: TiktokConfig) {
|
|
19
|
+
this.config = {
|
|
20
|
+
...config
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getBaseURL() {
|
|
25
|
+
return `https://open-api.tiktokglobalshop.com`
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @summary Get Method
|
|
30
|
+
* @description Using v3 API, map the consumer_key, consumer_secret to the endpoint path.
|
|
31
|
+
* X-WP-Total is to get the total items from the response
|
|
32
|
+
*/
|
|
33
|
+
async get(path: string, params: Parameter) {
|
|
34
|
+
const { appKey, appSecret, accessToken, channelShopId } = this.config
|
|
35
|
+
|
|
36
|
+
const qs = Object.entries({
|
|
37
|
+
...params,
|
|
38
|
+
...makePublicRequestParameters(appKey, appSecret, path, accessToken, channelShopId, params)
|
|
39
|
+
})
|
|
40
|
+
.map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`)
|
|
41
|
+
.join('&')
|
|
42
|
+
|
|
43
|
+
const endpoint = `${this.getBaseURL()}${path}?${qs ? qs : ''}`
|
|
44
|
+
debug('endpoint', endpoint)
|
|
45
|
+
|
|
46
|
+
const response = await fetch(endpoint, {
|
|
47
|
+
headers: {
|
|
48
|
+
'Content-Type': 'application/json'
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
var result: any = {}
|
|
53
|
+
const resResult: any = await response.json()
|
|
54
|
+
|
|
55
|
+
debug('response result', resResult)
|
|
56
|
+
|
|
57
|
+
return resResult
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async post(path: string, data: any = {}) {
|
|
61
|
+
const { appKey, appSecret, accessToken, channelShopId } = this.config
|
|
62
|
+
|
|
63
|
+
debug('data', data)
|
|
64
|
+
|
|
65
|
+
const jsondata = JSON.stringify(data)
|
|
66
|
+
|
|
67
|
+
const { app_key, timestamp, access_token, sign, shop_id } = makePublicRequestParameters(
|
|
68
|
+
appKey,
|
|
69
|
+
appSecret,
|
|
70
|
+
path,
|
|
71
|
+
accessToken,
|
|
72
|
+
channelShopId
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
const qs = Object.entries({
|
|
76
|
+
app_key,
|
|
77
|
+
timestamp,
|
|
78
|
+
access_token,
|
|
79
|
+
sign,
|
|
80
|
+
shop_id
|
|
81
|
+
})
|
|
82
|
+
.map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`)
|
|
83
|
+
.join('&')
|
|
84
|
+
|
|
85
|
+
const endpoint = `${this.getBaseURL()}${path}?${qs ? '&' + qs : ''}`
|
|
86
|
+
const response = await fetch(endpoint, {
|
|
87
|
+
method: 'post',
|
|
88
|
+
headers: {
|
|
89
|
+
'Content-Type': 'application/json'
|
|
90
|
+
},
|
|
91
|
+
body: jsondata
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
if (response.ok) {
|
|
95
|
+
let result = await response.json()
|
|
96
|
+
result.requiredDocument = true
|
|
97
|
+
return result
|
|
98
|
+
} else {
|
|
99
|
+
const result = await response.json()
|
|
100
|
+
throw new Error(`(${result.code}) ${result.message}`)
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async put(path: string, data: any = {}) {
|
|
105
|
+
const { appKey, appSecret, accessToken, channelShopId } = this.config
|
|
106
|
+
|
|
107
|
+
debug('data', data)
|
|
108
|
+
|
|
109
|
+
const jsondata = JSON.stringify(data)
|
|
110
|
+
|
|
111
|
+
const { app_key, timestamp, access_token, sign, shop_id } = makePublicRequestParameters(
|
|
112
|
+
appKey,
|
|
113
|
+
appSecret,
|
|
114
|
+
path,
|
|
115
|
+
accessToken,
|
|
116
|
+
channelShopId
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
const qs = Object.entries({
|
|
120
|
+
app_key,
|
|
121
|
+
timestamp,
|
|
122
|
+
access_token,
|
|
123
|
+
sign,
|
|
124
|
+
shop_id
|
|
125
|
+
})
|
|
126
|
+
.map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`)
|
|
127
|
+
.join('&')
|
|
128
|
+
|
|
129
|
+
const endpoint = `${this.getBaseURL()}${path}?${qs ? '&' + qs : ''}`
|
|
130
|
+
const response = await fetch(endpoint, {
|
|
131
|
+
method: 'put',
|
|
132
|
+
headers: {
|
|
133
|
+
'Content-Type': 'application/json'
|
|
134
|
+
},
|
|
135
|
+
body: jsondata
|
|
136
|
+
})
|
|
137
|
+
|
|
138
|
+
if (response.ok) {
|
|
139
|
+
const result = await response.json()
|
|
140
|
+
if (result?.code == 0) {
|
|
141
|
+
return result
|
|
142
|
+
} else {
|
|
143
|
+
throw new Error(`(${result.code}) ${result.message}`)
|
|
144
|
+
}
|
|
145
|
+
} else {
|
|
146
|
+
const result = await response.json()
|
|
147
|
+
throw new Error(`(${result.code}) ${result.message}`)
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type Parameter = {
|
|
2
|
+
[key: string]: any
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Tiktok Open Platform Public Request Parameters
|
|
7
|
+
* @typedef PublicRequestParameters
|
|
8
|
+
* @property {string} timestamp :mandatory
|
|
9
|
+
* @property {string} app_key :mandatory
|
|
10
|
+
* @property {string} access_token :mandatory
|
|
11
|
+
* @property {string} shop_id :mandatory
|
|
12
|
+
* @property {string} sign :mandatory
|
|
13
|
+
*/
|
|
14
|
+
export interface PublicRequestParameters {
|
|
15
|
+
timestamp: string
|
|
16
|
+
app_key: string
|
|
17
|
+
access_token: string
|
|
18
|
+
sign: string
|
|
19
|
+
shop_id?: string
|
|
20
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { createPayloadLog } from '@things-factory/integration-base'
|
|
2
|
+
|
|
3
|
+
import { Tiktok } from './client/tiktok'
|
|
4
|
+
|
|
5
|
+
function substitute(path, obj) {
|
|
6
|
+
var props = []
|
|
7
|
+
var re = /{([^}]+)}/g
|
|
8
|
+
var text
|
|
9
|
+
|
|
10
|
+
while ((text = re.exec(path))) {
|
|
11
|
+
props.push(text[1])
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
var result = path
|
|
15
|
+
props.forEach(prop => {
|
|
16
|
+
let value = obj[prop.trim()]
|
|
17
|
+
result = result.replace(`{${prop}}`, value === undefined ? '' : value)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
return result
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @summary Building Path Method and Payload
|
|
25
|
+
* @description After denormalise of data is done,
|
|
26
|
+
* platform API method will be called with its path and payload,
|
|
27
|
+
* this section is to build path and substitution of the resource in url as well as the payload for body request.
|
|
28
|
+
* Every Tiktok API call requires consumer_key, consumer_secret, access_token.
|
|
29
|
+
* consumer_key, consumer_secret, access_token are retrieved from tokencraft
|
|
30
|
+
* to avoid permission error from TikTok.
|
|
31
|
+
*/
|
|
32
|
+
export const action = async ({ store, method = 'get', path, request }) => {
|
|
33
|
+
const client = new Tiktok({
|
|
34
|
+
appKey: store.accessKey || '5p6q6g',
|
|
35
|
+
appSecret: store.accessSecret || 'c30cf452265ab418514bb81fa49fc333aecbf081',
|
|
36
|
+
accessToken: store.accessToken,
|
|
37
|
+
channelShopId: store.channelShopId
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
const { resource = {}, payload = {}, requiredAPICall = true } = request
|
|
41
|
+
|
|
42
|
+
let response: any
|
|
43
|
+
if (requiredAPICall) {
|
|
44
|
+
path = substitute(path, resource)
|
|
45
|
+
|
|
46
|
+
response = await client[method](path, payload)
|
|
47
|
+
} else {
|
|
48
|
+
response = { code: 0, message: 'Success' }
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (response.code != 0) {
|
|
52
|
+
createPayloadLog(
|
|
53
|
+
store.channelShopId,
|
|
54
|
+
path,
|
|
55
|
+
request,
|
|
56
|
+
response,
|
|
57
|
+
request?.context ? request.context : { state: { domain: null } }
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
throw response
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
createPayloadLog(
|
|
64
|
+
store.channelShopId,
|
|
65
|
+
path,
|
|
66
|
+
request,
|
|
67
|
+
response,
|
|
68
|
+
request?.context ? request.context : { state: { domain: null } }
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
return response
|
|
72
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript#retrieve-a-customer */
|
|
2
|
+
/* /wp-json/wc/v3/customers/<id> */
|
|
3
|
+
|
|
4
|
+
export function getCustomerInfo() {
|
|
5
|
+
return {
|
|
6
|
+
method: 'get',
|
|
7
|
+
path: '/customers/{id}',
|
|
8
|
+
denormalize(req) {
|
|
9
|
+
var { id } = req
|
|
10
|
+
return {
|
|
11
|
+
resource: { id }
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
normalize(res) {
|
|
15
|
+
return res.items
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/* https://woocommerce.github.io/woocommerce-rest-api-docs/?javascript#list-all-orders */
|
|
2
2
|
/* /wp-json/wc/v3/orders */
|
|
3
3
|
|
|
4
|
+
import { StoreAPI } from '../../store-api'
|
|
5
|
+
|
|
4
6
|
export function getStoreOrders() {
|
|
5
7
|
return {
|
|
6
8
|
method: 'get',
|
|
7
9
|
path: '/orders',
|
|
8
10
|
denormalize(req) {
|
|
9
|
-
var { pagination,
|
|
11
|
+
var { pagination, fromCreatedDate, toCreatedDate } = req || {}
|
|
10
12
|
var { page = 0, limit = 100 } = pagination || {}
|
|
11
13
|
|
|
12
|
-
var after = new Date(
|
|
13
|
-
var before = new Date(
|
|
14
|
+
var after = new Date(fromCreatedDate).toISOString()
|
|
15
|
+
var before = new Date(toCreatedDate).toISOString()
|
|
14
16
|
/* Must include only create_time or update_time in the request. */
|
|
15
17
|
// var update_time_from = lastOneDay
|
|
16
18
|
// var update_time_to = now
|
|
@@ -39,6 +41,17 @@ export function getStoreOrders() {
|
|
|
39
41
|
for (var i = 0; i < orders.length; i++) {
|
|
40
42
|
const order = orders[i]
|
|
41
43
|
|
|
44
|
+
var firstName: any
|
|
45
|
+
var lastName: any
|
|
46
|
+
if (order.customer_id != 0) {
|
|
47
|
+
var customerInfo = await StoreAPI.getCustomerInfo(store, { id: order.customer_id })
|
|
48
|
+
|
|
49
|
+
firstName = customerInfo.first_name
|
|
50
|
+
lastName = customerInfo.last_name
|
|
51
|
+
} else {
|
|
52
|
+
firstName = 'GUEST'
|
|
53
|
+
}
|
|
54
|
+
|
|
42
55
|
const {
|
|
43
56
|
id: name,
|
|
44
57
|
number: orderNo,
|
|
@@ -59,7 +72,18 @@ export function getStoreOrders() {
|
|
|
59
72
|
var orderUpdatedAt = new Date(date_modified_gmt)
|
|
60
73
|
|
|
61
74
|
let orderItems = line_items.map(item => {
|
|
62
|
-
var {
|
|
75
|
+
var {
|
|
76
|
+
id: name,
|
|
77
|
+
product_id,
|
|
78
|
+
variation_id,
|
|
79
|
+
quantity: qty,
|
|
80
|
+
price,
|
|
81
|
+
subtotal,
|
|
82
|
+
subtotal_tax: subtotalTax,
|
|
83
|
+
total,
|
|
84
|
+
total_tax: totalTax,
|
|
85
|
+
originalPrice: subtotal
|
|
86
|
+
} = item
|
|
63
87
|
|
|
64
88
|
return {
|
|
65
89
|
name,
|
|
@@ -69,7 +93,12 @@ export function getStoreOrders() {
|
|
|
69
93
|
orderNo,
|
|
70
94
|
docRefNo,
|
|
71
95
|
paymentMethod,
|
|
72
|
-
discountValue
|
|
96
|
+
discountValue,
|
|
97
|
+
subtotal,
|
|
98
|
+
subtotalTax,
|
|
99
|
+
total,
|
|
100
|
+
totalTax,
|
|
101
|
+
originalPrice: subtotal
|
|
73
102
|
}
|
|
74
103
|
})
|
|
75
104
|
|
|
@@ -135,7 +164,12 @@ export function getStoreOrders() {
|
|
|
135
164
|
totalAmount,
|
|
136
165
|
itemCount: line_items.length,
|
|
137
166
|
orderItems,
|
|
138
|
-
orderShipping
|
|
167
|
+
orderShipping,
|
|
168
|
+
billing,
|
|
169
|
+
shipping,
|
|
170
|
+
firstName,
|
|
171
|
+
lastName,
|
|
172
|
+
isSOF: true
|
|
139
173
|
})
|
|
140
174
|
}
|
|
141
175
|
|
|
@@ -17,8 +17,6 @@ export function getStoreProducts() {
|
|
|
17
17
|
return { payload }
|
|
18
18
|
},
|
|
19
19
|
async normalize(res, { store }) {
|
|
20
|
-
// return res.products
|
|
21
|
-
|
|
22
20
|
const { items, totalItems: totalProducts } = res
|
|
23
21
|
|
|
24
22
|
let results: any[] = []
|
|
@@ -34,7 +32,29 @@ export function getStoreProducts() {
|
|
|
34
32
|
description: product.description,
|
|
35
33
|
hasVariation: product.variations.length > 0 ? true : false,
|
|
36
34
|
categoryId: product?.categories.length > 0 ? product.categories[0].id : null,
|
|
37
|
-
|
|
35
|
+
images: product.images.map(image => {
|
|
36
|
+
return image.src
|
|
37
|
+
}),
|
|
38
|
+
attributes:
|
|
39
|
+
product?.attributes?.map(attribute => {
|
|
40
|
+
return {
|
|
41
|
+
attributeId: attribute.id,
|
|
42
|
+
name: attribute.name,
|
|
43
|
+
originalValue: attribute.options,
|
|
44
|
+
native_attribute_id: attribute.id,
|
|
45
|
+
attribute_key: attribute.name,
|
|
46
|
+
values: attribute.options
|
|
47
|
+
}
|
|
48
|
+
}) || [],
|
|
49
|
+
sellercraftAttributes: [
|
|
50
|
+
{
|
|
51
|
+
native_attribute_id: 'description',
|
|
52
|
+
attribute_key: 'description',
|
|
53
|
+
display_name: 'Description',
|
|
54
|
+
values: [product.description]
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
isVerified: product.purchasable,
|
|
38
58
|
variations:
|
|
39
59
|
productVariations.length === 0
|
|
40
60
|
? [
|
|
@@ -46,9 +66,24 @@ export function getStoreProducts() {
|
|
|
46
66
|
qty: product.manage_stock === true ? parseFloat(product.stock_quantity) : null,
|
|
47
67
|
primaryUnit: 'N/A',
|
|
48
68
|
primaryUnitValue: product.weight === '' ? null : parseFloat(product.weight),
|
|
49
|
-
costPrice: product.price === '' ? null : parseFloat(product.
|
|
69
|
+
costPrice: product.price === '' ? null : parseFloat(product.regular_price),
|
|
50
70
|
sellPrice: product.sale_price === '' ? null : parseFloat(product.sale_price),
|
|
51
|
-
attributes:
|
|
71
|
+
attributes:
|
|
72
|
+
product?.attributes?.map(attribute => {
|
|
73
|
+
return {
|
|
74
|
+
attributeId: attribute.id,
|
|
75
|
+
name: attribute.name,
|
|
76
|
+
originalValue: attribute.options,
|
|
77
|
+
native_attribute_id: attribute.id,
|
|
78
|
+
attribute_key: attribute.name,
|
|
79
|
+
values: attribute.options
|
|
80
|
+
}
|
|
81
|
+
}) || [],
|
|
82
|
+
isEnabled: product.purchasable,
|
|
83
|
+
length: product.dimensions.length * 10,
|
|
84
|
+
width: product.dimensions.width * 10,
|
|
85
|
+
height: product.dimensions.height * 10,
|
|
86
|
+
weight: product.weight * 1000
|
|
52
87
|
}
|
|
53
88
|
]
|
|
54
89
|
: productVariations.map(variant => {
|
|
@@ -61,9 +96,32 @@ export function getStoreProducts() {
|
|
|
61
96
|
qty: variant.manage_stock === true ? parseFloat(variant.stock_quantity) : null,
|
|
62
97
|
primaryUnit: 'N/A',
|
|
63
98
|
primaryUnitValue: variant.weight === '' ? null : parseFloat(variant.weight),
|
|
64
|
-
costPrice: variant.price === '' ? null : parseFloat(variant.
|
|
99
|
+
costPrice: variant.price === '' ? null : parseFloat(variant.regular_price),
|
|
65
100
|
sellPrice: variant.sale_price === '' ? null : parseFloat(variant.sale_price),
|
|
66
|
-
attributes:
|
|
101
|
+
attributes:
|
|
102
|
+
variant?.attributes?.map(attribute => {
|
|
103
|
+
return {
|
|
104
|
+
attributeId: attribute.id,
|
|
105
|
+
name: attribute.name,
|
|
106
|
+
originalValue: attribute.options,
|
|
107
|
+
native_attribute_id: attribute.id,
|
|
108
|
+
attribute_key: attribute.name,
|
|
109
|
+
values: [attribute.option]
|
|
110
|
+
}
|
|
111
|
+
}) || [],
|
|
112
|
+
sellercraftAttributes: variant?.attributes?.map(attribute => {
|
|
113
|
+
return {
|
|
114
|
+
native_attribute_id: attribute.name,
|
|
115
|
+
attribute_key: attribute.name,
|
|
116
|
+
display_name: attribute.name,
|
|
117
|
+
values: [attribute.option]
|
|
118
|
+
}
|
|
119
|
+
}) || [],
|
|
120
|
+
isEnabled: variant.purchasable,
|
|
121
|
+
length: variant.dimensions.length * 10,
|
|
122
|
+
width: variant.dimensions.width * 10,
|
|
123
|
+
height: variant.dimensions.height * 10,
|
|
124
|
+
weight: variant.weight * 1000
|
|
67
125
|
}
|
|
68
126
|
})
|
|
69
127
|
}
|
|
@@ -15,4 +15,5 @@ export * from './get-store-order'
|
|
|
15
15
|
export * from './update-store-product-price'
|
|
16
16
|
export * from './update-store-product-variant-stock'
|
|
17
17
|
export * from './update-store-product-variant-price'
|
|
18
|
+
export * from './get-customer-info'
|
|
18
19
|
export * from './set-store-order-status-ready-to-ship'
|
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
|
|
4
4
|
import { StoreAPI } from '../../store-api'
|
|
5
5
|
|
|
6
|
+
const ORDER_STATUS = {
|
|
7
|
+
PAYMENT_PENDING: 'pending',
|
|
8
|
+
PROCESSING: 'processing',
|
|
9
|
+
PACKED: 'processing',
|
|
10
|
+
READY_TO_SHIP: 'processing',
|
|
11
|
+
SHIPPED: 'processing',
|
|
12
|
+
CONFIRMED: 'processing',
|
|
13
|
+
DELIVERED: 'completed',
|
|
14
|
+
CLOSED: 'completed',
|
|
15
|
+
CANCELLED: 'cancelled',
|
|
16
|
+
REFUND_COMPLETE: 'refunded',
|
|
17
|
+
RETURN_COMPLETE: 'refunded',
|
|
18
|
+
REVERSE_SHIPMENT_FAILED: 'failed',
|
|
19
|
+
SHIPMENT_LOST_OR_DAMAGED: 'failed',
|
|
20
|
+
PAYMENT_PENDING_TIMEOUT: 'failed'
|
|
21
|
+
}
|
|
22
|
+
|
|
6
23
|
export function updateOrderStatus(req) {
|
|
7
24
|
return {
|
|
8
25
|
method: 'put',
|
|
@@ -12,20 +29,7 @@ export function updateOrderStatus(req) {
|
|
|
12
29
|
|
|
13
30
|
const order = await StoreAPI.getStoreOrder(store, { orderId })
|
|
14
31
|
|
|
15
|
-
let orderStatus = status
|
|
16
|
-
if (orderStatus == 'PACKED') {
|
|
17
|
-
if (order.status == 'pending') {
|
|
18
|
-
orderStatus = 'on-hold'
|
|
19
|
-
} else {
|
|
20
|
-
orderStatus = order.status
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
if (orderStatus == 'READY_TO_SHIP') {
|
|
24
|
-
orderStatus = 'completed'
|
|
25
|
-
}
|
|
26
|
-
if (orderStatus == 'CANCELLED') {
|
|
27
|
-
orderStatus = 'cancelled'
|
|
28
|
-
}
|
|
32
|
+
let orderStatus = ORDER_STATUS[`${status}`] || order.status
|
|
29
33
|
|
|
30
34
|
return { resource: { orderId: orderId }, payload: { status: orderStatus } }
|
|
31
35
|
},
|
|
@@ -4,11 +4,14 @@
|
|
|
4
4
|
export function updateProductAttribute(req) {
|
|
5
5
|
return {
|
|
6
6
|
method: 'put',
|
|
7
|
-
path: '/products/
|
|
7
|
+
path: '/products/{itemId}/variations/{variantId}',
|
|
8
8
|
denormalize(req) {
|
|
9
|
-
var { name, attributeId } = req || {}
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
var { productSku, itemId, variant } = req || {}
|
|
11
|
+
|
|
12
|
+
const data = variant.attributes
|
|
13
|
+
|
|
14
|
+
return { resource: { itemId, variantId: variant.native_variant_id }, payload: { attributes: data } }
|
|
12
15
|
},
|
|
13
16
|
normalize(res) {
|
|
14
17
|
return res
|
|
@@ -10,7 +10,7 @@ export function updateStoreProductVariationPrice(req) {
|
|
|
10
10
|
|
|
11
11
|
return {
|
|
12
12
|
resource: { itemId: parseInt(productId), variantId: parseInt(variationId) },
|
|
13
|
-
payload: { regular_price: costPrice?.toString(), sale_price: sellPrice?.toString() }
|
|
13
|
+
payload: { regular_price: costPrice?.toString(), sale_price: sellPrice?.toString(), on_sale: costPrice != sellPrice ? true : false }
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
normalize(res) {
|
|
@@ -80,6 +80,9 @@ export class MarketplaceStore {
|
|
|
80
80
|
@Column({ default: false })
|
|
81
81
|
isOwnTransport: Boolean
|
|
82
82
|
|
|
83
|
+
@Column({ default: false })
|
|
84
|
+
reserveEnabled: Boolean
|
|
85
|
+
|
|
83
86
|
@OneToMany(type => MarketplaceDistributor, marketplaceDistributor => marketplaceDistributor.marketplaceStore)
|
|
84
87
|
marketplaceDistributors: MarketplaceDistributor[]
|
|
85
88
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
2
2
|
|
|
3
3
|
import { config } from '@things-factory/env'
|
|
4
4
|
|
|
@@ -42,7 +42,7 @@ export const generateLazadaAccessToken = {
|
|
|
42
42
|
|
|
43
43
|
if (!foundMarketplaceSetting) {
|
|
44
44
|
const marketplaceSetting = new MarketplaceSetting()
|
|
45
|
-
marketplaceSetting.name =
|
|
45
|
+
marketplaceSetting.name = uuidv4()
|
|
46
46
|
marketplaceSetting.marketplaceStore = marketplaceStore
|
|
47
47
|
marketplaceSetting.value = '100'
|
|
48
48
|
marketplaceSetting.category = category
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import fetch from 'node-fetch'
|
|
2
|
-
import
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
3
3
|
|
|
4
4
|
import { MarketplaceSetting, MarketplaceStore } from '../../../../entities'
|
|
5
5
|
import { STORE_STATUS } from '../../../constants'
|
|
@@ -65,7 +65,7 @@ export const activateMagentoStore = {
|
|
|
65
65
|
|
|
66
66
|
if (!foundMarketplaceSetting) {
|
|
67
67
|
const marketplaceSetting = new MarketplaceSetting()
|
|
68
|
-
marketplaceSetting.name =
|
|
68
|
+
marketplaceSetting.name = uuidv4()
|
|
69
69
|
marketplaceSetting.marketplaceStore = marketplaceStore
|
|
70
70
|
marketplaceSetting.value = '100'
|
|
71
71
|
marketplaceSetting.category = category
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import crypto from 'crypto'
|
|
2
2
|
import Debug from 'debug'
|
|
3
3
|
import fetch from 'node-fetch'
|
|
4
|
-
import
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
5
5
|
|
|
6
6
|
import { config } from '@things-factory/env'
|
|
7
7
|
|
|
@@ -77,7 +77,7 @@ export const generateShopeeAccessToken = {
|
|
|
77
77
|
|
|
78
78
|
if (!foundMarketplaceSetting) {
|
|
79
79
|
const marketplaceSetting = new MarketplaceSetting()
|
|
80
|
-
marketplaceSetting.name =
|
|
80
|
+
marketplaceSetting.name = uuidv4()
|
|
81
81
|
marketplaceSetting.marketplaceStore = marketplaceStore
|
|
82
82
|
marketplaceSetting.value = '100'
|
|
83
83
|
marketplaceSetting.category = category
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
2
2
|
|
|
3
3
|
import { MarketplaceSetting, MarketplaceStore } from '../../../../entities'
|
|
4
4
|
import { STORE_STATUS } from '../../../constants'
|
|
@@ -36,7 +36,7 @@ export const generateZaloraAccessToken = {
|
|
|
36
36
|
|
|
37
37
|
if (!foundMarketplaceSetting) {
|
|
38
38
|
const marketplaceSetting = new MarketplaceSetting()
|
|
39
|
-
marketplaceSetting.name =
|
|
39
|
+
marketplaceSetting.name = uuidv4()
|
|
40
40
|
marketplaceSetting.marketplaceStore = marketplaceStore
|
|
41
41
|
marketplaceSetting.value = '100'
|
|
42
42
|
marketplaceSetting.category = category
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CourierService } from '@things-factory/integration-lmd'
|
|
2
|
-
import
|
|
2
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
3
3
|
import { MarketplaceStore, MarketplaceTransporter } from '../../../entities'
|
|
4
4
|
|
|
5
5
|
export const createMarketplaceTransporter = {
|
|
@@ -7,7 +7,7 @@ export const createMarketplaceTransporter = {
|
|
|
7
7
|
const { domain, user, tx } = context.state
|
|
8
8
|
|
|
9
9
|
return await tx.getRepository(MarketplaceTransporter).save({
|
|
10
|
-
name:
|
|
10
|
+
name: uuidv4().toString(),
|
|
11
11
|
marketplaceStore: await tx.getRepository(MarketplaceStore).findOne(marketplaceStoreId),
|
|
12
12
|
deliveryTransporter: await tx.getRepository(CourierService).findOne(deliveryTransporter),
|
|
13
13
|
pickupTransporter: await tx.getRepository(CourierService).findOne(deliveryTransporter),
|