@things-factory/integration-marketplace 8.0.0-beta.9 → 8.0.2

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 (318) hide show
  1. package/dist-server/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +14 -14
  3. package/server/controllers/index.ts +9 -0
  4. package/server/controllers/lazada/apis/cancel-store-order.ts +19 -0
  5. package/server/controllers/lazada/apis/create-store-product.ts +55 -0
  6. package/server/controllers/lazada/apis/delete-store-product.ts +16 -0
  7. package/server/controllers/lazada/apis/echo.ts +14 -0
  8. package/server/controllers/lazada/apis/get-store-logistics.ts +21 -0
  9. package/server/controllers/lazada/apis/get-store-order-document.ts +25 -0
  10. package/server/controllers/lazada/apis/get-store-order-item-transaction-details.ts +65 -0
  11. package/server/controllers/lazada/apis/get-store-order-items.ts +179 -0
  12. package/server/controllers/lazada/apis/get-store-order.ts +87 -0
  13. package/server/controllers/lazada/apis/get-store-orders.ts +127 -0
  14. package/server/controllers/lazada/apis/get-store-product-brands.ts +27 -0
  15. package/server/controllers/lazada/apis/get-store-product-categories.ts +14 -0
  16. package/server/controllers/lazada/apis/get-store-product-category-attributes.ts +16 -0
  17. package/server/controllers/lazada/apis/get-store-product.ts +42 -0
  18. package/server/controllers/lazada/apis/get-store-products.ts +84 -0
  19. package/server/controllers/lazada/apis/get-store-refund-orders.ts +52 -0
  20. package/server/controllers/lazada/apis/index.ts +24 -0
  21. package/server/controllers/lazada/apis/set-order-invoice-no.ts +24 -0
  22. package/server/controllers/lazada/apis/set-store-order-status-delivered.ts +17 -0
  23. package/server/controllers/lazada/apis/set-store-order-status-failed-delivery.ts +17 -0
  24. package/server/controllers/lazada/apis/set-store-order-status-packed-by-marketplace.ts +46 -0
  25. package/server/controllers/lazada/apis/set-store-order-status-ready-to-ship.ts +28 -0
  26. package/server/controllers/lazada/apis/update-store-product-stock.ts +29 -0
  27. package/server/controllers/lazada/apis/update-store-product-variation-stock.ts +29 -0
  28. package/server/controllers/lazada/apis/update-store-product.ts +51 -0
  29. package/server/controllers/lazada/client/index.ts +3 -0
  30. package/server/controllers/lazada/client/lazada.ts +142 -0
  31. package/server/controllers/lazada/client/signature.ts +67 -0
  32. package/server/controllers/lazada/client/types.ts +30 -0
  33. package/server/controllers/lazada/client/xml.ts +24 -0
  34. package/server/controllers/lazada/index.ts +8 -0
  35. package/server/controllers/lazada/platform-action.ts +35 -0
  36. package/server/controllers/magento/apis/create-order-comment.ts +32 -0
  37. package/server/controllers/magento/apis/create-order-refund.ts +20 -0
  38. package/server/controllers/magento/apis/create-order-ship.ts +43 -0
  39. package/server/controllers/magento/apis/echo.ts +14 -0
  40. package/server/controllers/magento/apis/get-store-order.ts +15 -0
  41. package/server/controllers/magento/apis/get-store-orders.ts +159 -0
  42. package/server/controllers/magento/apis/get-store-product-categories.ts +43 -0
  43. package/server/controllers/magento/apis/get-store-product-variations.ts +17 -0
  44. package/server/controllers/magento/apis/get-store-product.ts +44 -0
  45. package/server/controllers/magento/apis/get-store-products.ts +120 -0
  46. package/server/controllers/magento/apis/get-store-stock-item.ts +66 -0
  47. package/server/controllers/magento/apis/index.ts +16 -0
  48. package/server/controllers/magento/apis/update-order-status.ts +56 -0
  49. package/server/controllers/magento/apis/update-store-product-price.ts +24 -0
  50. package/server/controllers/magento/apis/update-store-product-stock.ts +42 -0
  51. package/server/controllers/magento/apis/update-store-product-variation-price.ts +24 -0
  52. package/server/controllers/magento/apis/update-store-product-variation-stock.ts +42 -0
  53. package/server/controllers/magento/index.ts +8 -0
  54. package/server/controllers/magento/magento.ts +202 -0
  55. package/server/controllers/magento/platform-action.ts +44 -0
  56. package/server/controllers/shopee/apis/accept-store-order-cancellation.ts +22 -0
  57. package/server/controllers/shopee/apis/cancel-store-order.ts +25 -0
  58. package/server/controllers/shopee/apis/create-store-product-variations.ts +33 -0
  59. package/server/controllers/shopee/apis/create-store-product.ts +57 -0
  60. package/server/controllers/shopee/apis/delete-store-product.ts +19 -0
  61. package/server/controllers/shopee/apis/echo.ts +14 -0
  62. package/server/controllers/shopee/apis/get-address.ts +32 -0
  63. package/server/controllers/shopee/apis/get-branch-list.ts +30 -0
  64. package/server/controllers/shopee/apis/get-logistics-param.ts +71 -0
  65. package/server/controllers/shopee/apis/get-store-logistics.ts +21 -0
  66. package/server/controllers/shopee/apis/get-store-order-document.ts +27 -0
  67. package/server/controllers/shopee/apis/get-store-order-items.ts +47 -0
  68. package/server/controllers/shopee/apis/get-store-order-payout-dates.ts +29 -0
  69. package/server/controllers/shopee/apis/get-store-order-transaction-details.ts +29 -0
  70. package/server/controllers/shopee/apis/get-store-order.ts +136 -0
  71. package/server/controllers/shopee/apis/get-store-orders.ts +39 -0
  72. package/server/controllers/shopee/apis/get-store-product-categories.ts +19 -0
  73. package/server/controllers/shopee/apis/get-store-product-category-attributes.ts +18 -0
  74. package/server/controllers/shopee/apis/get-store-product.ts +84 -0
  75. package/server/controllers/shopee/apis/get-store-products.ts +30 -0
  76. package/server/controllers/shopee/apis/get-store-refund-order-details.ts +41 -0
  77. package/server/controllers/shopee/apis/get-store-refund-orders.ts +47 -0
  78. package/server/controllers/shopee/apis/get-time-slot.ts +25 -0
  79. package/server/controllers/shopee/apis/index.ts +30 -0
  80. package/server/controllers/shopee/apis/init-logistics.ts +39 -0
  81. package/server/controllers/shopee/apis/reject-store-order-cancellation.ts +22 -0
  82. package/server/controllers/shopee/apis/split-order.ts +44 -0
  83. package/server/controllers/shopee/apis/update-store-product-stock.ts +24 -0
  84. package/server/controllers/shopee/apis/update-store-product-variation-stock.ts +21 -0
  85. package/server/controllers/shopee/apis/update-store-product.ts +85 -0
  86. package/server/controllers/shopee/apis2/create-shipping-document.ts +27 -0
  87. package/server/controllers/shopee/apis2/echo.ts +14 -0
  88. package/server/controllers/shopee/apis2/get-logistics-param.ts +66 -0
  89. package/server/controllers/shopee/apis2/get-shipping-document-result.ts +21 -0
  90. package/server/controllers/shopee/apis2/get-store-logistics.ts +23 -0
  91. package/server/controllers/shopee/apis2/get-store-order-by-batch.ts +97 -0
  92. package/server/controllers/shopee/apis2/get-store-order-document.ts +39 -0
  93. package/server/controllers/shopee/apis2/get-store-order-payout-dates.ts +33 -0
  94. package/server/controllers/shopee/apis2/get-store-order-transaction-details.ts +28 -0
  95. package/server/controllers/shopee/apis2/get-store-order.ts +93 -0
  96. package/server/controllers/shopee/apis2/get-store-orders.ts +40 -0
  97. package/server/controllers/shopee/apis2/get-store-product-variations.ts +17 -0
  98. package/server/controllers/shopee/apis2/get-store-product.ts +105 -0
  99. package/server/controllers/shopee/apis2/get-store-products.ts +28 -0
  100. package/server/controllers/shopee/apis2/get-store-refund-order-details.ts +39 -0
  101. package/server/controllers/shopee/apis2/get-store-refund-orders.ts +37 -0
  102. package/server/controllers/shopee/apis2/get-tracking-number.ts +17 -0
  103. package/server/controllers/shopee/apis2/index.ts +20 -0
  104. package/server/controllers/shopee/apis2/init-logistics.ts +39 -0
  105. package/server/controllers/shopee/apis2/update-store-product-stock.ts +26 -0
  106. package/server/controllers/shopee/apis2/update-store-product-variation-stock.ts +28 -0
  107. package/server/controllers/shopee/index.ts +16 -0
  108. package/server/controllers/shopee/platform-action.ts +58 -0
  109. package/server/controllers/shopee/refresh-access-token.ts +78 -0
  110. package/server/controllers/shopee/shopee.ts +191 -0
  111. package/server/controllers/shopify/apis/echo.ts +14 -0
  112. package/server/controllers/shopify/apis/get-airway-bill.ts +17 -0
  113. package/server/controllers/shopify/apis/get-inventory-level.ts +17 -0
  114. package/server/controllers/shopify/apis/get-store-order.ts +172 -0
  115. package/server/controllers/shopify/apis/get-store-orders.ts +290 -0
  116. package/server/controllers/shopify/apis/get-store-product-categories.ts +19 -0
  117. package/server/controllers/shopify/apis/get-store-product-category-attributes.ts +18 -0
  118. package/server/controllers/shopify/apis/get-store-product-variation-stock.ts +17 -0
  119. package/server/controllers/shopify/apis/get-store-products-count.ts +14 -0
  120. package/server/controllers/shopify/apis/get-store-products.ts +177 -0
  121. package/server/controllers/shopify/apis/index.ts +13 -0
  122. package/server/controllers/shopify/apis/set-store-order-status-ready-to-ship.ts +31 -0
  123. package/server/controllers/shopify/apis/update-order-status.ts +32 -0
  124. package/server/controllers/shopify/apis/update-store-product-price.ts +26 -0
  125. package/server/controllers/shopify/apis/update-store-product-stock.ts +20 -0
  126. package/server/controllers/shopify/apis/update-store-product-variation-price.ts +26 -0
  127. package/server/controllers/shopify/apis/update-store-product-variation-stock.ts +20 -0
  128. package/server/controllers/shopify/index.ts +8 -0
  129. package/server/controllers/shopify/platform-action.ts +43 -0
  130. package/server/controllers/shopify/shopify.ts +148 -0
  131. package/server/controllers/store-api/decorators.ts +44 -0
  132. package/server/controllers/store-api/index.ts +209 -0
  133. package/server/controllers/store-api/types.ts +0 -0
  134. package/server/controllers/tiktok/apis/echo.ts +14 -0
  135. package/server/controllers/tiktok/apis/get-store-order-document.ts +26 -0
  136. package/server/controllers/tiktok/apis/get-store-order-package.ts +46 -0
  137. package/server/controllers/tiktok/apis/get-store-order-packages.ts +43 -0
  138. package/server/controllers/tiktok/apis/get-store-order.ts +176 -0
  139. package/server/controllers/tiktok/apis/get-store-orders.ts +55 -0
  140. package/server/controllers/tiktok/apis/get-store-product-attributes.ts +29 -0
  141. package/server/controllers/tiktok/apis/get-store-product-categories.ts +27 -0
  142. package/server/controllers/tiktok/apis/get-store-product.ts +95 -0
  143. package/server/controllers/tiktok/apis/get-store-products.ts +45 -0
  144. package/server/controllers/tiktok/apis/index.ts +13 -0
  145. package/server/controllers/tiktok/apis/update-order-status.ts +24 -0
  146. package/server/controllers/tiktok/apis/update-store-product-variation-price.ts +24 -0
  147. package/server/controllers/tiktok/apis/update-store-product-variation-stock.ts +28 -0
  148. package/server/controllers/tiktok/client/index.ts +2 -0
  149. package/server/controllers/tiktok/client/signature.ts +78 -0
  150. package/server/controllers/tiktok/client/tiktok.ts +150 -0
  151. package/server/controllers/tiktok/client/types.ts +20 -0
  152. package/server/controllers/tiktok/index.ts +8 -0
  153. package/server/controllers/tiktok/platform-action.ts +72 -0
  154. package/server/controllers/woocommerce/apis/create-order-note.ts +17 -0
  155. package/server/controllers/woocommerce/apis/echo.ts +14 -0
  156. package/server/controllers/woocommerce/apis/get-customer-info.ts +18 -0
  157. package/server/controllers/woocommerce/apis/get-store-order.ts +116 -0
  158. package/server/controllers/woocommerce/apis/get-store-orders.ts +190 -0
  159. package/server/controllers/woocommerce/apis/get-store-product-categories.ts +18 -0
  160. package/server/controllers/woocommerce/apis/get-store-product-variations.ts +16 -0
  161. package/server/controllers/woocommerce/apis/get-store-products.ts +135 -0
  162. package/server/controllers/woocommerce/apis/index.ts +19 -0
  163. package/server/controllers/woocommerce/apis/set-store-order-status-ready-to-ship.ts +17 -0
  164. package/server/controllers/woocommerce/apis/update-order-status.ts +40 -0
  165. package/server/controllers/woocommerce/apis/update-product-attribute.ts +20 -0
  166. package/server/controllers/woocommerce/apis/update-store-product-price.ts +20 -0
  167. package/server/controllers/woocommerce/apis/update-store-product-stock.ts +17 -0
  168. package/server/controllers/woocommerce/apis/update-store-product-variant-price.ts +17 -0
  169. package/server/controllers/woocommerce/apis/update-store-product-variant-stock.ts +18 -0
  170. package/server/controllers/woocommerce/apis/update-store-product-variation-price.ts +20 -0
  171. package/server/controllers/woocommerce/apis/update-store-product-variation-stock.ts +20 -0
  172. package/server/controllers/woocommerce/index.ts +8 -0
  173. package/server/controllers/woocommerce/platform-action.ts +48 -0
  174. package/server/controllers/woocommerce/woocommerce.ts +104 -0
  175. package/server/controllers/zalora/apis/echo.ts +14 -0
  176. package/server/controllers/zalora/apis/get-airway-bill.ts +17 -0
  177. package/server/controllers/zalora/apis/get-store-order-items.ts +17 -0
  178. package/server/controllers/zalora/apis/get-store-order.ts +17 -0
  179. package/server/controllers/zalora/apis/get-store-orders.ts +21 -0
  180. package/server/controllers/zalora/apis/get-store-product-categories.ts +20 -0
  181. package/server/controllers/zalora/apis/get-store-product-category-attributes.ts +18 -0
  182. package/server/controllers/zalora/apis/get-store-products.ts +20 -0
  183. package/server/controllers/zalora/apis/index.ts +8 -0
  184. package/server/controllers/zalora/index.ts +8 -0
  185. package/server/controllers/zalora/platform-action.ts +18 -0
  186. package/server/controllers/zalora/zalora/index.ts +70 -0
  187. package/server/controllers/zalora/zalora/signature.ts +37 -0
  188. package/server/controllers/zalora/zalora/xml.ts +24 -0
  189. package/server/engine/connector/index.ts +3 -0
  190. package/server/engine/connector/lazada-connector.ts +49 -0
  191. package/server/engine/connector/marketplace-connector.ts +33 -0
  192. package/server/engine/connector/shopee-connector.ts +46 -0
  193. package/server/engine/index.ts +2 -0
  194. package/server/engine/task/index.ts +4 -0
  195. package/server/engine/task/lazada-get.ts +48 -0
  196. package/server/engine/task/lazada-post.ts +46 -0
  197. package/server/engine/task/marketplace-api.ts +72 -0
  198. package/server/engine/task/shopee-post.ts +51 -0
  199. package/server/entities/index.ts +8 -0
  200. package/server/entities/marketplace-distributor.ts +42 -0
  201. package/server/entities/marketplace-setting.ts +49 -0
  202. package/server/entities/marketplace-store.ts +100 -0
  203. package/server/entities/marketplace-transporter.ts +46 -0
  204. package/server/graphql/constants/index.ts +1 -0
  205. package/server/graphql/constants/store.ts +5 -0
  206. package/server/graphql/index.ts +9 -0
  207. package/server/graphql/resolvers/index.ts +6 -0
  208. package/server/graphql/resolvers/marketplace-distributor/create-marketplace-distributor.ts +15 -0
  209. package/server/graphql/resolvers/marketplace-distributor/delete-marketplace-distributor.ts +13 -0
  210. package/server/graphql/resolvers/marketplace-distributor/delete-marketplace-distributors.ts +18 -0
  211. package/server/graphql/resolvers/marketplace-distributor/index.ts +19 -0
  212. package/server/graphql/resolvers/marketplace-distributor/marketplace-distributor-query.ts +57 -0
  213. package/server/graphql/resolvers/marketplace-distributor/update-marketplace-distributor.ts +22 -0
  214. package/server/graphql/resolvers/marketplace-distributor/update-multiple-marketplace-distributor.ts +49 -0
  215. package/server/graphql/resolvers/marketplace-setting/create-marketplace-setting.ts +16 -0
  216. package/server/graphql/resolvers/marketplace-setting/delete-marketplace-setting.ts +13 -0
  217. package/server/graphql/resolvers/marketplace-setting/delete-marketplace-settings.ts +18 -0
  218. package/server/graphql/resolvers/marketplace-setting/index.ts +19 -0
  219. package/server/graphql/resolvers/marketplace-setting/marketplace-setting-query.ts +56 -0
  220. package/server/graphql/resolvers/marketplace-setting/update-marketplace-setting.ts +32 -0
  221. package/server/graphql/resolvers/marketplace-setting/update-multiple-marketplace-setting.ts +49 -0
  222. package/server/graphql/resolvers/marketplace-store/create-marketplace-store.ts +20 -0
  223. package/server/graphql/resolvers/marketplace-store/delete-marketplace-store.ts +21 -0
  224. package/server/graphql/resolvers/marketplace-store/delete-marketplace-stores.ts +26 -0
  225. package/server/graphql/resolvers/marketplace-store/index.ts +40 -0
  226. package/server/graphql/resolvers/marketplace-store/lazada/deactivate-lazada-store.ts +28 -0
  227. package/server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.ts +61 -0
  228. package/server/graphql/resolvers/marketplace-store/lazada/get-lazada-auth-url.ts +9 -0
  229. package/server/graphql/resolvers/marketplace-store/lazada/index.ts +12 -0
  230. package/server/graphql/resolvers/marketplace-store/magento/activate-magento-store.ts +82 -0
  231. package/server/graphql/resolvers/marketplace-store/magento/deactivate-magento-store.ts +27 -0
  232. package/server/graphql/resolvers/marketplace-store/magento/get-magento-auth-url.ts +12 -0
  233. package/server/graphql/resolvers/marketplace-store/magento/index.ts +12 -0
  234. package/server/graphql/resolvers/marketplace-store/marketplace-store.ts +14 -0
  235. package/server/graphql/resolvers/marketplace-store/marketplace-stores.ts +18 -0
  236. package/server/graphql/resolvers/marketplace-store/shopee/deactivate-shopee-store.ts +28 -0
  237. package/server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.ts +96 -0
  238. package/server/graphql/resolvers/marketplace-store/shopee/get-shopee-auth-url.ts +18 -0
  239. package/server/graphql/resolvers/marketplace-store/shopee/index.ts +13 -0
  240. package/server/graphql/resolvers/marketplace-store/shopify/deactivate-shopify-store.ts +29 -0
  241. package/server/graphql/resolvers/marketplace-store/shopify/get-shopify-auth-url.ts +26 -0
  242. package/server/graphql/resolvers/marketplace-store/shopify/index.ts +11 -0
  243. package/server/graphql/resolvers/marketplace-store/update-marketplace-store.ts +19 -0
  244. package/server/graphql/resolvers/marketplace-store/update-multiple-marketplace-store.ts +46 -0
  245. package/server/graphql/resolvers/marketplace-store/woocommerce/deactivate-woocommerce-store.ts +20 -0
  246. package/server/graphql/resolvers/marketplace-store/woocommerce/get-woocommerce-auth-url.ts +14 -0
  247. package/server/graphql/resolvers/marketplace-store/woocommerce/index.ts +10 -0
  248. package/server/graphql/resolvers/marketplace-store/zalora/deactivate-zalora-store.ts +28 -0
  249. package/server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.ts +55 -0
  250. package/server/graphql/resolvers/marketplace-store/zalora/index.ts +9 -0
  251. package/server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.ts +21 -0
  252. package/server/graphql/resolvers/marketplace-transporter/delete-marketplace-transporter.ts +13 -0
  253. package/server/graphql/resolvers/marketplace-transporter/delete-marketplace-transporters.ts +18 -0
  254. package/server/graphql/resolvers/marketplace-transporter/index.ts +19 -0
  255. package/server/graphql/resolvers/marketplace-transporter/marketplace-transporter-query.ts +60 -0
  256. package/server/graphql/resolvers/marketplace-transporter/update-marketplace-transporter.ts +25 -0
  257. package/server/graphql/resolvers/marketplace-transporter/update-multiple-marketplace-transporter.ts +49 -0
  258. package/server/graphql/resolvers/store-order/accept-store-order-cancellation.ts +9 -0
  259. package/server/graphql/resolvers/store-order/cancel-store-order.ts +8 -0
  260. package/server/graphql/resolvers/store-order/get-store-order-document.ts +8 -0
  261. package/server/graphql/resolvers/store-order/get-store-order-items.ts +8 -0
  262. package/server/graphql/resolvers/store-order/get-store-order.ts +8 -0
  263. package/server/graphql/resolvers/store-order/get-store-orders.ts +13 -0
  264. package/server/graphql/resolvers/store-order/index.ts +23 -0
  265. package/server/graphql/resolvers/store-order/reject-store-order-cancellation.ts +9 -0
  266. package/server/graphql/resolvers/store-order/set-store-order-status-packed-by-marketplace.ts +9 -0
  267. package/server/graphql/resolvers/store-order/set-store-order-status-ready-to-ship.ts +10 -0
  268. package/server/graphql/resolvers/store-product/create-store-product-variations.ts +9 -0
  269. package/server/graphql/resolvers/store-product/create-store-product.ts +8 -0
  270. package/server/graphql/resolvers/store-product/delete-store-product.ts +8 -0
  271. package/server/graphql/resolvers/store-product/get-store-product-brands.ts +14 -0
  272. package/server/graphql/resolvers/store-product/get-store-product-categories.ts +8 -0
  273. package/server/graphql/resolvers/store-product/get-store-product-category-attributes.ts +11 -0
  274. package/server/graphql/resolvers/store-product/get-store-product.ts +8 -0
  275. package/server/graphql/resolvers/store-product/get-store-products.ts +13 -0
  276. package/server/graphql/resolvers/store-product/index.ts +25 -0
  277. package/server/graphql/resolvers/store-product/update-store-product.ts +8 -0
  278. package/server/graphql/types/index.ts +6 -0
  279. package/server/graphql/types/marketplace-distributor/index.ts +26 -0
  280. package/server/graphql/types/marketplace-distributor/marketplace-distributor-list.ts +8 -0
  281. package/server/graphql/types/marketplace-distributor/marketplace-distributor-patch.ts +11 -0
  282. package/server/graphql/types/marketplace-distributor/marketplace-distributor.ts +16 -0
  283. package/server/graphql/types/marketplace-distributor/new-marketplace-distributor.ts +9 -0
  284. package/server/graphql/types/marketplace-setting/index.ts +22 -0
  285. package/server/graphql/types/marketplace-setting/marketplace-setting-list.ts +8 -0
  286. package/server/graphql/types/marketplace-setting/marketplace-setting-patch.ts +12 -0
  287. package/server/graphql/types/marketplace-setting/marketplace-setting.ts +17 -0
  288. package/server/graphql/types/marketplace-setting/new-marketplace-setting.ts +11 -0
  289. package/server/graphql/types/marketplace-store/index.ts +38 -0
  290. package/server/graphql/types/marketplace-store/marketplace-store-list.ts +8 -0
  291. package/server/graphql/types/marketplace-store/marketplace-store-patch.ts +21 -0
  292. package/server/graphql/types/marketplace-store/marketplace-store.ts +28 -0
  293. package/server/graphql/types/marketplace-store/new-marketplace-store.ts +19 -0
  294. package/server/graphql/types/marketplace-transporter/index.ts +24 -0
  295. package/server/graphql/types/marketplace-transporter/marketplace-transporter-list.ts +8 -0
  296. package/server/graphql/types/marketplace-transporter/marketplace-transporter-patch.ts +13 -0
  297. package/server/graphql/types/marketplace-transporter/marketplace-transporter.ts +17 -0
  298. package/server/graphql/types/marketplace-transporter/new-marketplace-transporter.ts +11 -0
  299. package/server/graphql/types/store-order/index.ts +23 -0
  300. package/server/graphql/types/store-order/new-store-order.ts +8 -0
  301. package/server/graphql/types/store-order/store-order-list.ts +8 -0
  302. package/server/graphql/types/store-order/store-order-patch.ts +10 -0
  303. package/server/graphql/types/store-order/store-order.ts +14 -0
  304. package/server/graphql/types/store-product/index.ts +23 -0
  305. package/server/graphql/types/store-product/new-store-product.ts +8 -0
  306. package/server/graphql/types/store-product/store-product-list.ts +8 -0
  307. package/server/graphql/types/store-product/store-product-patch.ts +10 -0
  308. package/server/graphql/types/store-product/store-product.ts +14 -0
  309. package/server/index.ts +9 -0
  310. package/server/migrations/index.ts +9 -0
  311. package/server/routers/magento-private-router.ts +192 -0
  312. package/server/routers/magento-public-router.ts +38 -0
  313. package/server/routers/shopify-install-private-router.ts +95 -0
  314. package/server/routers/shopify-install-public-router.ts +241 -0
  315. package/server/routers/shopify-private-router.ts +78 -0
  316. package/server/routers/shopify-public-router.ts +182 -0
  317. package/server/routers/woocommerce-router.ts +70 -0
  318. package/server/routes.ts +21 -0
@@ -0,0 +1,28 @@
1
+ /* https://open.shopee.com/documents/v2/v2.payment.get_escrow_detail?module=97&type=1 */
2
+
3
+ export function getStoreOrderTransactionDetails() {
4
+ return {
5
+ method: 'getV2',
6
+ path: '/payment/get_escrow_detail',
7
+ denormalize(req) {
8
+ var { orderNo } = req
9
+
10
+ return {
11
+ order_sn: orderNo
12
+ }
13
+ },
14
+ normalize(res) {
15
+ var { order_income } = res
16
+ const result = {
17
+ voucherAmount: parseFloat(order_income?.discount_from_voucher_seller) || null,
18
+ shippingRebate: parseFloat(order_income?.shopee_shipping_rebate) || null,
19
+ commissionFee: parseFloat(order_income?.commission_fee) || null,
20
+ serviceFee: parseFloat(order_income?.service_fee) || null,
21
+ transactionFee: parseFloat(order_income?.seller_transaction_fee) || null,
22
+ totalRealeasedAmount: parseFloat(order_income?.escrow_amount) || null,
23
+ voucherCode: order_income?.seller_voucher_code
24
+ }
25
+ return result
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,93 @@
1
+ /* https://open.shopee.com/documents/v2/v2.order.get_order_detail?module=94&type=1 */
2
+
3
+ import { StoreAPI } from '../../store-api'
4
+
5
+ export function getStoreOrder() {
6
+ return {
7
+ path: '/order/get_order_detail',
8
+ method: 'getV2',
9
+ denormalize(req) {
10
+ const { orderNo } = req
11
+
12
+ return {
13
+ order_sn_list: [orderNo],
14
+ response_optional_fields: [
15
+ 'recipient_address',
16
+ 'item_list',
17
+ 'total_amount',
18
+ 'shipping_carrier',
19
+ 'estimated_shipping_fee',
20
+ 'buyer_username',
21
+ 'actual_shipping_fee',
22
+ 'pay_time',
23
+ 'cancel_by',
24
+ 'cancel_reason',
25
+ 'actual_shipping_fee_confirmed'
26
+ ]
27
+ }
28
+ },
29
+ async normalize(res, { store }) {
30
+ let order = res.order_list[0]
31
+ let recipientAddress = order?.recipient_address
32
+ let escrowDetails: any = {}
33
+ let trackingNo = null
34
+ try {
35
+ escrowDetails = await StoreAPI.getStoreOrderTransactionDetails(store, { orderNo: order.order_sn })
36
+ } catch (e) {}
37
+ try {
38
+ trackingNo = await StoreAPI.getTrackingNumber(store, { orderNo: order.order_sn })
39
+ } catch (e) {}
40
+ const result = {
41
+ name: order.order_sn,
42
+ orderNo: order.order_sn,
43
+ docRefNo: order.order_sn,
44
+ status: order.order_status.toLowerCase(),
45
+ orderCreatedAt: new Date(order.create_time * 1000),
46
+ orderUpdatedAt: new Date(order.update_time * 1000),
47
+ totalAmount: order.total_amount,
48
+ cancelBy: order?.cancel_by,
49
+ reason: order?.cancel_reason,
50
+ recipientAddress: recipientAddress ? JSON.stringify(recipientAddress) : null,
51
+ shippingProvider: order.shipping_carrier,
52
+ itemCount: order.item_list.length,
53
+ buyerUsername: order.buyer_username,
54
+ payTime: order?.pay_time ? new Date(order.pay_time * 1000) : null,
55
+ orderItems: order.item_list.map(item => {
56
+ return {
57
+ name: item.item_id,
58
+ variationId: item.model_id == 0 ? item.item_id : item.model_id,
59
+ qty: item.model_quantity_purchased,
60
+ paidPrice: item.model_discounted_price * item.model_quantity_purchased,
61
+ orderNo: order.order_sn,
62
+ promotionType: item?.promotion_type,
63
+ promotionId: item?.promotion_id,
64
+ isWholesale: item.wholesale,
65
+ docRefNo: order.order_sn,
66
+ originalPrice: item.model_quantity_purchased * item.model_original_price,
67
+ discount:
68
+ item.model_quantity_purchased * item.model_original_price -
69
+ item.model_quantity_purchased * item.model_discounted_price
70
+ }
71
+ }),
72
+ orderShipping: {
73
+ address1: recipientAddress?.full_address,
74
+ phone1: recipientAddress?.phone,
75
+ postCode: recipientAddress?.zipcode,
76
+ city: recipientAddress?.city,
77
+ state: recipientAddress?.state,
78
+ country: recipientAddress?.region == 'MY' ? 'Malaysia' : recipientAddress?.region,
79
+ attentionTo: recipientAddress?.name,
80
+ transporter: order?.shipping_carrier,
81
+ shippingFee: parseFloat(order?.estimated_shipping_fee) || null,
82
+ actualShippingFee: order.actual_shipping_fee_confirmed
83
+ ? parseFloat(order?.actual_shipping_fee)
84
+ : parseFloat(order?.estimated_shipping_fee) || null,
85
+ trackingNo
86
+ },
87
+ trackingNo,
88
+ ...escrowDetails
89
+ }
90
+ return result
91
+ }
92
+ }
93
+ }
@@ -0,0 +1,40 @@
1
+ /* https://open.shopee.com/documents/v2/v2.order.get_order_list?module=94&type=1 */
2
+
3
+ import { StoreAPI } from '../../store-api'
4
+
5
+ export function getStoreOrders() {
6
+ return {
7
+ path: '/order/get_order_list',
8
+ method: 'getV2',
9
+ denormalize(req) {
10
+ var { pagination, fromCreatedDate, toCreatedDate, nextCursor } = req || {}
11
+ var { limit = 100 } = pagination || {}
12
+
13
+ var time_from = Math.floor(new Date(fromCreatedDate).getTime() / 1000)
14
+ var time_to = Math.floor(new Date(toCreatedDate).getTime() / 1000)
15
+ var time_range_field = 'create_time' // Available values: create_time, update_time
16
+
17
+ let payload: any = { time_from, time_to, time_range_field, page_size: limit }
18
+
19
+ if (nextCursor) {
20
+ payload.cursor = nextCursor
21
+ }
22
+
23
+ return {
24
+ ...payload
25
+ }
26
+ },
27
+ async normalize(res, { store }) {
28
+ let results = []
29
+ const orderIdList = res.order_list.map(order => {
30
+ return order.order_sn
31
+ })
32
+ while (orderIdList.length > 0) {
33
+ let splicedList = orderIdList.splice(0, orderIdList.length >= 50 ? 50 : orderIdList.length)
34
+ let result = await StoreAPI.getStoreOrderByBatch(store, { orderIdList: splicedList })
35
+ results.push(...result)
36
+ }
37
+ return { results, more: res.more, cursor: res.next_cursor }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,17 @@
1
+ /* https://open.shopee.com/documents/v2/v2.product.get_model_list?module=89&type=1 */
2
+
3
+ export function getStoreProductVariations() {
4
+ return {
5
+ path: '/product/get_model_list',
6
+ method: 'getV2',
7
+ denormalize(req) {
8
+ const { itemId } = req
9
+ return {
10
+ item_id: itemId
11
+ }
12
+ },
13
+ normalize(res) {
14
+ return res
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,105 @@
1
+ /* https://open.shopee.com/documents/v2/v2.product.get_item_base_info?module=89&type=1 */
2
+
3
+ import { StoreAPI } from '../../store-api'
4
+
5
+ export function getStoreProduct() {
6
+ return {
7
+ path: '/product/get_item_base_info',
8
+ method: 'getV2',
9
+ denormalize(req) {
10
+ return {
11
+ item_id_list: req.itemIds
12
+ }
13
+ },
14
+ async normalize(res, { store }) {
15
+ let items = res.item_list
16
+ let results = []
17
+ for (let i = 0; i < items.length; i++) {
18
+ const item = items[i]
19
+ let variations
20
+ if (item.has_model) {
21
+ variations = await StoreAPI.getStoreProductVariations(store, { itemId: item.item_id })
22
+ }
23
+ const result = {
24
+ itemId: item.item_id,
25
+ isku: item?.item_sku,
26
+ weight: item.weight,
27
+ categoryId: item.category_id,
28
+ condition: item.condition,
29
+ marketplaceStatus: item.item_status,
30
+ name: item.item_name,
31
+ description: item.description_info?.extended_description?.field_list?.find(f => f.field_type == 'text')?.text,
32
+ currency: item?.price_info ? item?.price_info[0]?.currency : undefined,
33
+ costPrice: item?.price_info ? item?.price_info[0]?.original_price : undefined,
34
+ sellPrice: item?.price_info ? item?.price_info[0]?.current_price : undefined,
35
+ qty: item?.stock_info_v2?.summary_info?.total_available_stock,
36
+ bufferQty: item?.stock_info_v2?.summary_info?.total_reserved_stock,
37
+ packageLength: item.dimension.package_length,
38
+ packageWidth: item.dimension.package_width,
39
+ packageHeight: item.dimension.package_height,
40
+ daysToShip: item.pre_order.days_to_ship,
41
+ discountId: item.promotion_id,
42
+ isPreOrder: item.pre_order.is_pre_order,
43
+ hasVariation: item.has_model,
44
+ attributes: item?.attribute_list?.map(attribute => {
45
+ return {
46
+ attributeId: attribute.attribute_id,
47
+ name: attribute.original_attribute_name,
48
+ isMandatory: attribute.is_mandatory,
49
+ originalValue: JSON.stringify(
50
+ attribute?.attribute_value_list?.map(v => {
51
+ return v.original_value_name
52
+ })
53
+ ) || ''
54
+ }
55
+ }) || [],
56
+ variations: item.has_model
57
+ ? variations.model.map(variation => {
58
+ return {
59
+ variationId: variation.model_id,
60
+ variationSku: variation.model_sku,
61
+ channelSku: variation.model_sku,
62
+ name: `${item.item_name} - ${
63
+ variations.tier_variation[0].option_list[variation.tier_index[0]].option
64
+ }${
65
+ variations.tier_variation[1]
66
+ ? ' - ' + variations.tier_variation[1].option_list[variation.tier_index[1]].option
67
+ : ''
68
+ }`,
69
+ description: item.description_info?.extended_description?.field_list?.find(
70
+ f => f.field_type == 'text'
71
+ )?.text,
72
+ qty: variation.stock_info_v2.summary_info.total_available_stock,
73
+ bufferQty: variation.stock_info_v2.summary_info.total_reserved_stock,
74
+ costPrice: variation.price_info[0].original_price,
75
+ sellPrice: variation.price_info[0].current_price,
76
+ discountId: variation.promotion_id,
77
+ marketplaceStatus: item.item_status,
78
+ primaryUnitValue: item.weight
79
+ }
80
+ })
81
+ : [
82
+ {
83
+ variationId: item.item_id,
84
+ variationSku: item.item_sku,
85
+ channelSku: item.item_sku,
86
+ name: item.item_name,
87
+ description: item.description_info?.extended_description?.field_list?.find(
88
+ f => f.field_type == 'text'
89
+ )?.text,
90
+ qty: item.stock_info_v2.summary_info.total_available_stock,
91
+ bufferQty: item.stock_info_v2.summary_info.total_reserved_stock,
92
+ costPrice: item.price_info[0].original_price,
93
+ sellPrice: item.price_info[0].current_price,
94
+ discountId: item.promotion_id,
95
+ marketplaceStatus: item.item_status,
96
+ primaryUnitValue: item.weight
97
+ }
98
+ ]
99
+ }
100
+ results.push(result)
101
+ }
102
+ return results
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,28 @@
1
+ /* https://open.shopee.com/documents/v2/v2.product.get_item_list?module=89&type=1 */
2
+
3
+ import { StoreAPI } from '../../store-api'
4
+
5
+ export function getStoreProducts() {
6
+ return {
7
+ path: '/product/get_item_list',
8
+ method: 'getV2',
9
+ denormalize(req) {
10
+ var { pagination } = req || {}
11
+ var { page = 0, limit = 100 } = pagination || {}
12
+
13
+ return {
14
+ offset: page * limit,
15
+ page_size: limit,
16
+ item_status: ['NORMAL']
17
+ }
18
+ },
19
+ async normalize(res, { store }) {
20
+ const itemIds = res.item.map(product => {
21
+ return product.item_id
22
+ })
23
+
24
+ const results = await StoreAPI.getStoreProduct(store, { itemIds })
25
+ return { results, total: res.total_count }
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,39 @@
1
+ /* https://open.shopee.com/documents/v2/v2.returns.get_return_detail?module=102&type=1 */
2
+
3
+ export function getStoreRefundOrderDetails() {
4
+ return {
5
+ path: '/returns/get_return_detail',
6
+ method: 'getV2',
7
+ denormalize(req) {
8
+ var { refundOrderNo } = req
9
+
10
+ return {
11
+ return_sn: refundOrderNo
12
+ }
13
+ },
14
+ async normalize(res) {
15
+ let refundItems = res.items.map(item => {
16
+ let { item_id: name, item_id: orderItemId, item_price: price, amount: qty, variation_id: variationId } = item
17
+ name = name.toString()
18
+ orderItemId = orderItemId.toString()
19
+ return {
20
+ name,
21
+ orderItemId,
22
+ price,
23
+ qty,
24
+ variationId
25
+ }
26
+ })
27
+
28
+ let results = {
29
+ name: res.return_sn.toString(),
30
+ orderNo: res.return_sn.toString(),
31
+ amount: res.refund_amount,
32
+ status: res.status,
33
+ items: refundItems
34
+ }
35
+
36
+ return results
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,37 @@
1
+ /* https://open.shopee.com/documents/v2/v2.returns.get_return_list?module=102&type=1 */
2
+
3
+ import { StoreAPI } from '../../store-api'
4
+
5
+ export function getStoreRefundOrders() {
6
+ return {
7
+ path: '/returns/get_return_list',
8
+ method: 'getV2',
9
+ denormalize(req) {
10
+ var { pagination, fromDate, toDate } = req || {}
11
+ var { page = 0, limit = 100 } = pagination || {}
12
+
13
+ var create_time_from = Math.floor(new Date(fromDate).getTime() / 1000)
14
+ var create_time_to = Math.floor(new Date(toDate).getTime() / 1000)
15
+
16
+ return {
17
+ page_size: limit,
18
+ page_no: page * limit,
19
+ create_time_from,
20
+ create_time_to
21
+ }
22
+ },
23
+ async normalize(res, { store }) {
24
+ let results: any[] = []
25
+
26
+ for (var i = 0; i < res.return?.length; i++) {
27
+ const refundOrder = res.return[i]
28
+ const refundOrderNo = refundOrder.return_sn
29
+
30
+ const result = await StoreAPI.getStoreRefundOrderDetails(store, { refundOrderNo })
31
+
32
+ results.push({ ...result, originalOrderNo: refundOrder.order_sn })
33
+ }
34
+ return { results, more: res.more }
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,17 @@
1
+ /* https://open.shopee.com/documents/v2/v2.logistics.get_tracking_number?module=95&type=1 */
2
+
3
+ export function getTrackingNumber() {
4
+ return {
5
+ path: '/logistics/get_tracking_number',
6
+ method: 'getV2',
7
+ denormalize(req) {
8
+ const { orderNo } = req
9
+ return {
10
+ order_sn: orderNo
11
+ }
12
+ },
13
+ normalize(res) {
14
+ return res?.tracking_number || null
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,20 @@
1
+ export * from './echo'
2
+ export * from './get-store-products'
3
+ export * from './get-store-product'
4
+ export * from './get-store-product-variations'
5
+ export * from './get-store-orders'
6
+ export * from './get-store-order'
7
+ export * from './get-store-order-by-batch'
8
+ export * from './get-store-order-transaction-details'
9
+ export * from './update-store-product-stock'
10
+ export * from './update-store-product-variation-stock'
11
+ export * from './get-store-order-payout-dates'
12
+ export * from './get-store-refund-orders'
13
+ export * from './get-store-refund-order-details'
14
+ export * from './get-store-logistics'
15
+ export * from './get-logistics-param'
16
+ export * from './get-tracking-number'
17
+ export * from './init-logistics'
18
+ export * from './create-shipping-document'
19
+ export * from './get-shipping-document-result'
20
+ export * from './get-store-order-document'
@@ -0,0 +1,39 @@
1
+ /* https://open.shopee.com/documents?module=3&type=1&id=389 */
2
+
3
+ export function initLogistics() {
4
+ return {
5
+ path: '/logistics/ship_order',
6
+ method: 'postV2',
7
+ denormalize(req) {
8
+ var { orderNo: order_sn, deliveryType } = req
9
+ let pickup = {}
10
+ let dropoff = {}
11
+ let non_integrated = {}
12
+ let args = {}
13
+
14
+ if (deliveryType?.pickup) {
15
+ var { addressId, pickupTimeId: pickup_time_id } = deliveryType.pickup
16
+ var address_id = parseInt(addressId)
17
+ pickup = { address_id, pickup_time_id }
18
+ args = { order_sn, pickup: { ...pickup } }
19
+ }
20
+
21
+ if (deliveryType?.non_integrated) {
22
+ var { trackingNo: tracking_number } = deliveryType.non_integrated
23
+ non_integrated = { tracking_number }
24
+ args = { order_sn, non_integrated: { tracking_number } }
25
+ }
26
+
27
+ if (deliveryType?.dropoff) {
28
+ var { branchId: branch_id } = deliveryType.dropoff
29
+ dropoff = { branch_id }
30
+ args = { order_sn, dropoff: { ...dropoff } }
31
+ }
32
+
33
+ return args
34
+ },
35
+ normalize(res) {
36
+ return res
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,26 @@
1
+ /* https://open.shopee.com/documents/v2/v2.product.update_stock?module=89&type=1 */
2
+
3
+ export function updateStoreProductStock() {
4
+ return {
5
+ path: '/product/update_stock',
6
+ method: 'postV2',
7
+ denormalize(req) {
8
+ let data = req[0]
9
+ return {
10
+ item_id: parseInt(data.itemId),
11
+ stock_list: [
12
+ {
13
+ seller_stock: [
14
+ {
15
+ stock: data.qty
16
+ }
17
+ ]
18
+ }
19
+ ]
20
+ }
21
+ },
22
+ normalize(res) {
23
+ return res
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,28 @@
1
+ /* https://open.shopee.com/documents/v2/v2.product.update_stock?module=89&type=1 */
2
+
3
+
4
+ export function updateStoreProductVariationStock() {
5
+ return {
6
+ path: '/product/update_stock',
7
+ method: 'postV2',
8
+ denormalize(req) {
9
+ let data = req[0]
10
+ return {
11
+ item_id: parseInt(data.itemId),
12
+ stock_list: [
13
+ {
14
+ model_id: parseInt(data.variationId),
15
+ seller_stock: [
16
+ {
17
+ stock: data.qty
18
+ }
19
+ ]
20
+ }
21
+ ]
22
+ }
23
+ },
24
+ normalize(res) {
25
+ return res
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,16 @@
1
+ export * from './shopee'
2
+
3
+ import { config } from '@things-factory/env'
4
+ import { StoreAPI } from '../store-api'
5
+ import { action, actionV2 } from './platform-action'
6
+ import * as APIS from './apis'
7
+ import * as APISV2 from './apis2'
8
+
9
+ const shopeeConfig = config.get('marketplaceIntegrationShopee', {})
10
+ const { v2 } = shopeeConfig
11
+
12
+ if (v2) {
13
+ StoreAPI.registerPlatform('shopee', actionV2, APISV2)
14
+ } else {
15
+ StoreAPI.registerPlatform('shopee', action, APIS)
16
+ }
@@ -0,0 +1,58 @@
1
+ import { Shopee } from './shopee'
2
+
3
+ import { config } from '@things-factory/env'
4
+ import { refreshAccessToken } from './refresh-access-token'
5
+ const shopeeConfig = config.get('marketplaceIntegrationShopee', {})
6
+ const { partnerId, partnerKey, isUAT } = shopeeConfig
7
+
8
+ export const actionV2 = async ({ store, path, request, method = 'post' }) => {
9
+ let response = await _action({ store, path, request, method })
10
+ if (response.error) {
11
+ if (response.error == 'error_auth') {
12
+ try {
13
+ const { accessToken } = await refreshAccessToken(store.id, store.storeId, store.refreshToken, store.accessToken)
14
+ store = {
15
+ ...store,
16
+ accessToken
17
+ }
18
+ response = await _action({ store, path, request, method })
19
+ } catch (e) {
20
+ throw e
21
+ }
22
+ } else {
23
+ throw response
24
+ }
25
+ }
26
+ return response.response || response
27
+ }
28
+
29
+ const _action = async ({ store, path, request, method = 'post' }) => {
30
+ const client = new Shopee({
31
+ isUAT: isUAT,
32
+ shopid: Number(store.storeId),
33
+ partner_id: partnerId,
34
+ partner_key: partnerKey,
35
+ access_token: store.accessToken
36
+ })
37
+
38
+ var response = await client[method](path, request)
39
+
40
+ return response
41
+ }
42
+
43
+ export const action = async ({ store, path, request }) => {
44
+ const client = new Shopee({
45
+ isUAT: isUAT,
46
+ shopid: Number(store.storeId),
47
+ partner_id: partnerId,
48
+ partner_key: partnerKey,
49
+ access_token: store.accessToken
50
+ })
51
+
52
+ var response = await client.post(path, request)
53
+ if (response.error) {
54
+ throw response
55
+ }
56
+
57
+ return response
58
+ }
@@ -0,0 +1,78 @@
1
+ import crypto from 'crypto'
2
+ import fetch from 'node-fetch'
3
+ import { createQueryBuilder } from 'typeorm'
4
+
5
+ import { config, logger } from '@things-factory/env'
6
+ import { getRepository } from '@things-factory/shell'
7
+
8
+ import { MarketplaceStore } from '../../entities'
9
+
10
+ const shopeeConfig = config.get('marketplaceIntegrationShopee', {})
11
+ const { partnerId, partnerKey, isUAT } = shopeeConfig
12
+ const refreshPath = '/auth/access_token/get'
13
+
14
+ export const refreshAccessToken = async (store_uuid, shop_id, refresh_token, old_access_token) => {
15
+ let marketplaceStore: MarketplaceStore = await getRepository(MarketplaceStore)
16
+ .createQueryBuilder('ms')
17
+ .where('ms.id = :id', { id: store_uuid })
18
+ .getOne()
19
+
20
+ if (old_access_token != marketplaceStore.accessToken) {
21
+ return {
22
+ accessToken: marketplaceStore.accessToken
23
+ }
24
+ }
25
+
26
+ const timestamp = Math.floor(Date.now() / 1000)
27
+ const sign = crypto
28
+ .createHmac('sha256', partnerKey)
29
+ .update(partnerId + '/api/v2' + refreshPath + timestamp)
30
+ .digest('hex')
31
+
32
+ const auth = {
33
+ partner_id: partnerId,
34
+ sign: sign,
35
+ timestamp: timestamp
36
+ }
37
+
38
+ const qs = Object.entries(auth)
39
+ .map(([k, v]) => `${k}=${encodeURIComponent(String(v))}`)
40
+ .join('&')
41
+
42
+ const data = {
43
+ refresh_token: refresh_token,
44
+ partner_id: partnerId,
45
+ shop_id: parseInt(shop_id)
46
+ }
47
+
48
+ const jsondata = JSON.stringify(data)
49
+
50
+ const response = await fetch(`${getAuthUrl()}?${qs}`, {
51
+ method: 'post',
52
+ body: jsondata
53
+ })
54
+
55
+ if (!response.ok) {
56
+ throw 'Failed to get response to refresh Shopee access token'
57
+ }
58
+
59
+ const result = await response.json()
60
+
61
+ if (result.error) {
62
+ logger.error(`Failed to refresh Shopee token: ${result.error} - shop ID (${shop_id})`)
63
+ throw result.error
64
+ }
65
+
66
+ const tokens = {
67
+ accessToken: result.access_token, // expires in 4 hours
68
+ refreshToken: result.refresh_token // expires in 30 days
69
+ }
70
+
71
+ await createQueryBuilder().update(MarketplaceStore).set(tokens).where('id = :id', { id: store_uuid }).execute()
72
+
73
+ return tokens
74
+ }
75
+
76
+ function getAuthUrl() {
77
+ return `https://partner${isUAT ? '.test-stable' : ''}.shopeemobile.com/api/v2${refreshPath}`
78
+ }