@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.
Files changed (221) hide show
  1. package/client/pages/marketplace-stores.js +8 -0
  2. package/dist-server/controllers/index.js +1 -0
  3. package/dist-server/controllers/index.js.map +1 -1
  4. package/dist-server/controllers/lazada/apis/get-store-orders.js +3 -3
  5. package/dist-server/controllers/lazada/apis/get-store-orders.js.map +1 -1
  6. package/dist-server/controllers/lazada/apis/update-store-product-stock.js +2 -2
  7. package/dist-server/controllers/lazada/apis/update-store-product-stock.js.map +1 -1
  8. package/dist-server/controllers/lazada/apis/update-store-product-variation-stock.js +2 -2
  9. package/dist-server/controllers/lazada/apis/update-store-product-variation-stock.js.map +1 -1
  10. package/dist-server/controllers/magento/apis/get-store-order.js +20 -0
  11. package/dist-server/controllers/magento/apis/get-store-order.js.map +1 -0
  12. package/dist-server/controllers/magento/apis/get-store-orders.js +38 -7
  13. package/dist-server/controllers/magento/apis/get-store-orders.js.map +1 -1
  14. package/dist-server/controllers/magento/apis/get-store-product-categories.js +47 -0
  15. package/dist-server/controllers/magento/apis/get-store-product-categories.js.map +1 -0
  16. package/dist-server/controllers/magento/apis/get-store-products.js +29 -11
  17. package/dist-server/controllers/magento/apis/get-store-products.js.map +1 -1
  18. package/dist-server/controllers/magento/apis/get-store-stock-item.js +1 -1
  19. package/dist-server/controllers/magento/apis/get-store-stock-item.js.map +1 -1
  20. package/dist-server/controllers/magento/apis/index.js +5 -0
  21. package/dist-server/controllers/magento/apis/index.js.map +1 -1
  22. package/dist-server/controllers/magento/apis/update-order-status.js +62 -0
  23. package/dist-server/controllers/magento/apis/update-order-status.js.map +1 -0
  24. package/dist-server/controllers/magento/apis/update-store-product-price.js +28 -0
  25. package/dist-server/controllers/magento/apis/update-store-product-price.js.map +1 -0
  26. package/dist-server/controllers/magento/apis/update-store-product-stock.js +1 -1
  27. package/dist-server/controllers/magento/apis/update-store-product-stock.js.map +1 -1
  28. package/dist-server/controllers/magento/apis/update-store-product-variation-price.js +28 -0
  29. package/dist-server/controllers/magento/apis/update-store-product-variation-price.js.map +1 -0
  30. package/dist-server/controllers/magento/apis/update-store-product-variation-stock.js +1 -1
  31. package/dist-server/controllers/magento/apis/update-store-product-variation-stock.js.map +1 -1
  32. package/dist-server/controllers/magento/magento.js +4 -4
  33. package/dist-server/controllers/magento/magento.js.map +1 -1
  34. package/dist-server/controllers/magento/platform-action.js +1 -0
  35. package/dist-server/controllers/magento/platform-action.js.map +1 -1
  36. package/dist-server/controllers/shopee/apis/get-store-order-payout-dates.js +3 -3
  37. package/dist-server/controllers/shopee/apis/get-store-order-payout-dates.js.map +1 -1
  38. package/dist-server/controllers/shopee/apis/get-store-order.js +8 -2
  39. package/dist-server/controllers/shopee/apis/get-store-order.js.map +1 -1
  40. package/dist-server/controllers/shopee/apis/get-store-orders.js +3 -3
  41. package/dist-server/controllers/shopee/apis/get-store-orders.js.map +1 -1
  42. package/dist-server/controllers/shopify/apis/get-store-orders.js +74 -14
  43. package/dist-server/controllers/shopify/apis/get-store-orders.js.map +1 -1
  44. package/dist-server/controllers/shopify/apis/get-store-product-variation-stock.js +23 -0
  45. package/dist-server/controllers/shopify/apis/get-store-product-variation-stock.js.map +1 -0
  46. package/dist-server/controllers/shopify/apis/get-store-products.js +38 -3
  47. package/dist-server/controllers/shopify/apis/get-store-products.js.map +1 -1
  48. package/dist-server/controllers/shopify/apis/index.js +4 -0
  49. package/dist-server/controllers/shopify/apis/index.js.map +1 -1
  50. package/dist-server/controllers/shopify/apis/set-store-order-status-ready-to-ship.js +3 -2
  51. package/dist-server/controllers/shopify/apis/set-store-order-status-ready-to-ship.js.map +1 -1
  52. package/dist-server/controllers/shopify/apis/update-order-status.js +15 -5
  53. package/dist-server/controllers/shopify/apis/update-order-status.js.map +1 -1
  54. package/dist-server/controllers/shopify/apis/update-store-product-price.js +29 -0
  55. package/dist-server/controllers/shopify/apis/update-store-product-price.js.map +1 -0
  56. package/dist-server/controllers/shopify/apis/update-store-product-stock.js +24 -0
  57. package/dist-server/controllers/shopify/apis/update-store-product-stock.js.map +1 -0
  58. package/dist-server/controllers/shopify/apis/update-store-product-variation-price.js +29 -0
  59. package/dist-server/controllers/shopify/apis/update-store-product-variation-price.js.map +1 -0
  60. package/dist-server/controllers/shopify/apis/update-store-product-variation-stock.js +1 -1
  61. package/dist-server/controllers/shopify/apis/update-store-product-variation-stock.js.map +1 -1
  62. package/dist-server/controllers/shopify/shopify.js +36 -0
  63. package/dist-server/controllers/shopify/shopify.js.map +1 -1
  64. package/dist-server/controllers/store-api/index.js +28 -0
  65. package/dist-server/controllers/store-api/index.js.map +1 -1
  66. package/dist-server/controllers/tiktok/apis/echo.js +19 -0
  67. package/dist-server/controllers/tiktok/apis/echo.js.map +1 -0
  68. package/dist-server/controllers/tiktok/apis/get-store-order-document.js +27 -0
  69. package/dist-server/controllers/tiktok/apis/get-store-order-document.js.map +1 -0
  70. package/dist-server/controllers/tiktok/apis/get-store-order-package.js +47 -0
  71. package/dist-server/controllers/tiktok/apis/get-store-order-package.js.map +1 -0
  72. package/dist-server/controllers/tiktok/apis/get-store-order-packages.js +39 -0
  73. package/dist-server/controllers/tiktok/apis/get-store-order-packages.js.map +1 -0
  74. package/dist-server/controllers/tiktok/apis/get-store-order.js +140 -0
  75. package/dist-server/controllers/tiktok/apis/get-store-order.js.map +1 -0
  76. package/dist-server/controllers/tiktok/apis/get-store-orders.js +49 -0
  77. package/dist-server/controllers/tiktok/apis/get-store-orders.js.map +1 -0
  78. package/dist-server/controllers/tiktok/apis/get-store-product-attributes.js +30 -0
  79. package/dist-server/controllers/tiktok/apis/get-store-product-attributes.js.map +1 -0
  80. package/dist-server/controllers/tiktok/apis/get-store-product-categories.js +28 -0
  81. package/dist-server/controllers/tiktok/apis/get-store-product-categories.js.map +1 -0
  82. package/dist-server/controllers/tiktok/apis/get-store-product.js +91 -0
  83. package/dist-server/controllers/tiktok/apis/get-store-product.js.map +1 -0
  84. package/dist-server/controllers/tiktok/apis/get-store-products.js +41 -0
  85. package/dist-server/controllers/tiktok/apis/get-store-products.js.map +1 -0
  86. package/dist-server/controllers/tiktok/apis/index.js +30 -0
  87. package/dist-server/controllers/tiktok/apis/index.js.map +1 -0
  88. package/dist-server/controllers/tiktok/apis/update-order-status.js +28 -0
  89. package/dist-server/controllers/tiktok/apis/update-order-status.js.map +1 -0
  90. package/dist-server/controllers/tiktok/apis/update-store-product-variation-price.js +28 -0
  91. package/dist-server/controllers/tiktok/apis/update-store-product-variation-price.js.map +1 -0
  92. package/dist-server/controllers/tiktok/apis/update-store-product-variation-stock.js +32 -0
  93. package/dist-server/controllers/tiktok/apis/update-store-product-variation-stock.js.map +1 -0
  94. package/dist-server/controllers/tiktok/client/index.js +19 -0
  95. package/dist-server/controllers/tiktok/client/index.js.map +1 -0
  96. package/dist-server/controllers/tiktok/client/signature.js +63 -0
  97. package/dist-server/controllers/tiktok/client/signature.js.map +1 -0
  98. package/dist-server/controllers/tiktok/client/tiktok.js +109 -0
  99. package/dist-server/controllers/tiktok/client/tiktok.js.map +1 -0
  100. package/dist-server/controllers/tiktok/client/types.js +3 -0
  101. package/dist-server/controllers/tiktok/client/types.js.map +1 -0
  102. package/dist-server/controllers/tiktok/index.js +34 -0
  103. package/dist-server/controllers/tiktok/index.js.map +1 -0
  104. package/dist-server/controllers/tiktok/platform-action.js +53 -0
  105. package/dist-server/controllers/tiktok/platform-action.js.map +1 -0
  106. package/dist-server/controllers/woocommerce/apis/get-customer-info.js +22 -0
  107. package/dist-server/controllers/woocommerce/apis/get-customer-info.js.map +1 -0
  108. package/dist-server/controllers/woocommerce/apis/get-store-orders.js +27 -6
  109. package/dist-server/controllers/woocommerce/apis/get-store-orders.js.map +1 -1
  110. package/dist-server/controllers/woocommerce/apis/get-store-products.js +64 -6
  111. package/dist-server/controllers/woocommerce/apis/get-store-products.js.map +1 -1
  112. package/dist-server/controllers/woocommerce/apis/index.js +1 -0
  113. package/dist-server/controllers/woocommerce/apis/index.js.map +1 -1
  114. package/dist-server/controllers/woocommerce/apis/update-order-status.js +17 -15
  115. package/dist-server/controllers/woocommerce/apis/update-order-status.js.map +1 -1
  116. package/dist-server/controllers/woocommerce/apis/update-product-attribute.js +4 -3
  117. package/dist-server/controllers/woocommerce/apis/update-product-attribute.js.map +1 -1
  118. package/dist-server/controllers/woocommerce/apis/update-store-product-variation-price.js +1 -1
  119. package/dist-server/controllers/woocommerce/apis/update-store-product-variation-price.js.map +1 -1
  120. package/dist-server/entities/marketplace-store.js +4 -0
  121. package/dist-server/entities/marketplace-store.js.map +1 -1
  122. package/dist-server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.js +2 -5
  123. package/dist-server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.js.map +1 -1
  124. package/dist-server/graphql/resolvers/marketplace-store/magento/activate-magento-store.js +2 -2
  125. package/dist-server/graphql/resolvers/marketplace-store/magento/activate-magento-store.js.map +1 -1
  126. package/dist-server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.js +2 -2
  127. package/dist-server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.js.map +1 -1
  128. package/dist-server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.js +2 -5
  129. package/dist-server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.js.map +1 -1
  130. package/dist-server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.js +2 -5
  131. package/dist-server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.js.map +1 -1
  132. package/dist-server/graphql/types/marketplace-store/marketplace-store-patch.js +1 -0
  133. package/dist-server/graphql/types/marketplace-store/marketplace-store-patch.js.map +1 -1
  134. package/dist-server/graphql/types/marketplace-store/marketplace-store.js +1 -0
  135. package/dist-server/graphql/types/marketplace-store/marketplace-store.js.map +1 -1
  136. package/dist-server/graphql/types/marketplace-store/new-marketplace-store.js +1 -0
  137. package/dist-server/graphql/types/marketplace-store/new-marketplace-store.js.map +1 -1
  138. package/dist-server/routers/magento-private-router.js +2 -2
  139. package/dist-server/routers/magento-private-router.js.map +1 -1
  140. package/dist-server/routers/shopify-install-private-router.js +2 -2
  141. package/dist-server/routers/shopify-install-private-router.js.map +1 -1
  142. package/dist-server/routers/shopify-private-router.js +2 -2
  143. package/dist-server/routers/shopify-private-router.js.map +1 -1
  144. package/dist-server/routers/shopify-public-router.js +2 -2
  145. package/dist-server/routers/shopify-public-router.js.map +1 -1
  146. package/dist-server/routers/woocommerce-router.js +2 -2
  147. package/dist-server/routers/woocommerce-router.js.map +1 -1
  148. package/package.json +15 -15
  149. package/server/controllers/index.ts +1 -0
  150. package/server/controllers/lazada/apis/get-store-orders.ts +3 -3
  151. package/server/controllers/lazada/apis/update-store-product-stock.ts +2 -2
  152. package/server/controllers/lazada/apis/update-store-product-variation-stock.ts +2 -2
  153. package/server/controllers/magento/apis/get-store-order.ts +15 -0
  154. package/server/controllers/magento/apis/get-store-orders.ts +40 -7
  155. package/server/controllers/magento/apis/get-store-product-categories.ts +43 -0
  156. package/server/controllers/magento/apis/get-store-products.ts +35 -11
  157. package/server/controllers/magento/apis/get-store-stock-item.ts +1 -1
  158. package/server/controllers/magento/apis/index.ts +5 -0
  159. package/server/controllers/magento/apis/update-order-status.ts +56 -0
  160. package/server/controllers/magento/apis/update-store-product-price.ts +24 -0
  161. package/server/controllers/magento/apis/update-store-product-stock.ts +1 -1
  162. package/server/controllers/magento/apis/update-store-product-variation-price.ts +24 -0
  163. package/server/controllers/magento/apis/update-store-product-variation-stock.ts +1 -1
  164. package/server/controllers/magento/magento.ts +5 -4
  165. package/server/controllers/magento/platform-action.ts +1 -0
  166. package/server/controllers/shopee/apis/get-store-order-payout-dates.ts +3 -3
  167. package/server/controllers/shopee/apis/get-store-order.ts +8 -2
  168. package/server/controllers/shopee/apis/get-store-orders.ts +3 -3
  169. package/server/controllers/shopify/apis/get-store-orders.ts +76 -15
  170. package/server/controllers/shopify/apis/get-store-product-variation-stock.ts +17 -0
  171. package/server/controllers/shopify/apis/get-store-products.ts +38 -3
  172. package/server/controllers/shopify/apis/index.ts +4 -0
  173. package/server/controllers/shopify/apis/set-store-order-status-ready-to-ship.ts +3 -2
  174. package/server/controllers/shopify/apis/update-order-status.ts +17 -5
  175. package/server/controllers/shopify/apis/update-store-product-price.ts +26 -0
  176. package/server/controllers/shopify/apis/update-store-product-stock.ts +20 -0
  177. package/server/controllers/shopify/apis/update-store-product-variation-price.ts +26 -0
  178. package/server/controllers/shopify/apis/update-store-product-variation-stock.ts +1 -1
  179. package/server/controllers/shopify/shopify.ts +41 -0
  180. package/server/controllers/store-api/index.ts +12 -0
  181. package/server/controllers/tiktok/apis/echo.ts +14 -0
  182. package/server/controllers/tiktok/apis/get-store-order-document.ts +26 -0
  183. package/server/controllers/tiktok/apis/get-store-order-package.ts +46 -0
  184. package/server/controllers/tiktok/apis/get-store-order-packages.ts +43 -0
  185. package/server/controllers/tiktok/apis/get-store-order.ts +174 -0
  186. package/server/controllers/tiktok/apis/get-store-orders.ts +55 -0
  187. package/server/controllers/tiktok/apis/get-store-product-attributes.ts +29 -0
  188. package/server/controllers/tiktok/apis/get-store-product-categories.ts +27 -0
  189. package/server/controllers/tiktok/apis/get-store-product.ts +95 -0
  190. package/server/controllers/tiktok/apis/get-store-products.ts +45 -0
  191. package/server/controllers/tiktok/apis/index.ts +13 -0
  192. package/server/controllers/tiktok/apis/update-order-status.ts +24 -0
  193. package/server/controllers/tiktok/apis/update-store-product-variation-price.ts +24 -0
  194. package/server/controllers/tiktok/apis/update-store-product-variation-stock.ts +28 -0
  195. package/server/controllers/tiktok/client/index.ts +2 -0
  196. package/server/controllers/tiktok/client/signature.ts +78 -0
  197. package/server/controllers/tiktok/client/tiktok.ts +150 -0
  198. package/server/controllers/tiktok/client/types.ts +20 -0
  199. package/server/controllers/tiktok/index.ts +8 -0
  200. package/server/controllers/tiktok/platform-action.ts +72 -0
  201. package/server/controllers/woocommerce/apis/get-customer-info.ts +18 -0
  202. package/server/controllers/woocommerce/apis/get-store-orders.ts +40 -6
  203. package/server/controllers/woocommerce/apis/get-store-products.ts +65 -7
  204. package/server/controllers/woocommerce/apis/index.ts +1 -0
  205. package/server/controllers/woocommerce/apis/update-order-status.ts +18 -14
  206. package/server/controllers/woocommerce/apis/update-product-attribute.ts +6 -3
  207. package/server/controllers/woocommerce/apis/update-store-product-variation-price.ts +1 -1
  208. package/server/entities/marketplace-store.ts +3 -0
  209. package/server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.ts +2 -2
  210. package/server/graphql/resolvers/marketplace-store/magento/activate-magento-store.ts +2 -2
  211. package/server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.ts +2 -2
  212. package/server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.ts +2 -2
  213. package/server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.ts +2 -2
  214. package/server/graphql/types/marketplace-store/marketplace-store-patch.ts +1 -0
  215. package/server/graphql/types/marketplace-store/marketplace-store.ts +1 -0
  216. package/server/graphql/types/marketplace-store/new-marketplace-store.ts +1 -0
  217. package/server/routers/magento-private-router.ts +2 -2
  218. package/server/routers/shopify-install-private-router.ts +2 -2
  219. package/server/routers/shopify-private-router.ts +2 -2
  220. package/server/routers/shopify-public-router.ts +2 -2
  221. 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,8 @@
1
+ export * from './client'
2
+
3
+ import { StoreAPI } from '../store-api'
4
+
5
+ import { action } from './platform-action'
6
+ import * as APIS from './apis'
7
+
8
+ StoreAPI.registerPlatform('tiktok', action, APIS)
@@ -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, fromDate, toDate } = req || {}
11
+ var { pagination, fromCreatedDate, toCreatedDate } = req || {}
10
12
  var { page = 0, limit = 100 } = pagination || {}
11
13
 
12
- var after = new Date(fromDate).toISOString()
13
- var before = new Date(toDate).toISOString()
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 { id: name, product_id, variation_id, quantity: qty, price } = item
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
- attributes: [],
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.price),
69
+ costPrice: product.price === '' ? null : parseFloat(product.regular_price),
50
70
  sellPrice: product.sale_price === '' ? null : parseFloat(product.sale_price),
51
- attributes: product.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.price),
99
+ costPrice: variant.price === '' ? null : parseFloat(variant.regular_price),
65
100
  sellPrice: variant.sale_price === '' ? null : parseFloat(variant.sale_price),
66
- attributes: variant.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/attributes/{attributeId}',
7
+ path: '/products/{itemId}/variations/{variantId}',
8
8
  denormalize(req) {
9
- var { name, attributeId } = req || {}
10
9
 
11
- return { resource: { attributeId: attributeId }, payload: { name } }
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 uuid from 'uuid/v4'
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 = uuid()
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 uuid from 'uuid/v4'
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 = uuid()
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 uuid from 'uuid/v4'
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 = uuid()
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 uuid from 'uuid/v4'
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 = uuid()
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 uuid from 'uuid/v4'
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: uuid().toString(),
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),
@@ -14,6 +14,7 @@ export const MarketplaceStorePatch = gql`
14
14
  countryCode: String
15
15
  webhookKey: String
16
16
  eTrax: Boolean
17
+ reserveEnabled: Boolean
17
18
  distributor: String
18
19
  cuFlag: String
19
20
  }
@@ -18,6 +18,7 @@ export const MarketplaceStore = gql`
18
18
  isAutoUpdateShipment: Boolean
19
19
  isOwnTransport: Boolean
20
20
  eTrax: Boolean
21
+ reserveEnabled: Boolean
21
22
  distributor: String
22
23
  updater: User
23
24
  creator: User
@@ -11,6 +11,7 @@ export const NewMarketplaceStore = gql`
11
11
  storeURL: String
12
12
  webhookKey: String
13
13
  eTrax: Boolean
14
+ reserveEnabled: Boolean
14
15
  isAutoUpdateStockQty: Boolean
15
16
  isAutoUpdateShipment: Boolean
16
17
  distributor: String