@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.
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/server/controllers/index.ts +9 -0
- package/server/controllers/lazada/apis/cancel-store-order.ts +19 -0
- package/server/controllers/lazada/apis/create-store-product.ts +55 -0
- package/server/controllers/lazada/apis/delete-store-product.ts +16 -0
- package/server/controllers/lazada/apis/echo.ts +14 -0
- package/server/controllers/lazada/apis/get-store-logistics.ts +21 -0
- package/server/controllers/lazada/apis/get-store-order-document.ts +25 -0
- package/server/controllers/lazada/apis/get-store-order-item-transaction-details.ts +65 -0
- package/server/controllers/lazada/apis/get-store-order-items.ts +179 -0
- package/server/controllers/lazada/apis/get-store-order.ts +87 -0
- package/server/controllers/lazada/apis/get-store-orders.ts +127 -0
- package/server/controllers/lazada/apis/get-store-product-brands.ts +27 -0
- package/server/controllers/lazada/apis/get-store-product-categories.ts +14 -0
- package/server/controllers/lazada/apis/get-store-product-category-attributes.ts +16 -0
- package/server/controllers/lazada/apis/get-store-product.ts +42 -0
- package/server/controllers/lazada/apis/get-store-products.ts +84 -0
- package/server/controllers/lazada/apis/get-store-refund-orders.ts +52 -0
- package/server/controllers/lazada/apis/index.ts +24 -0
- package/server/controllers/lazada/apis/set-order-invoice-no.ts +24 -0
- package/server/controllers/lazada/apis/set-store-order-status-delivered.ts +17 -0
- package/server/controllers/lazada/apis/set-store-order-status-failed-delivery.ts +17 -0
- package/server/controllers/lazada/apis/set-store-order-status-packed-by-marketplace.ts +46 -0
- package/server/controllers/lazada/apis/set-store-order-status-ready-to-ship.ts +28 -0
- package/server/controllers/lazada/apis/update-store-product-stock.ts +29 -0
- package/server/controllers/lazada/apis/update-store-product-variation-stock.ts +29 -0
- package/server/controllers/lazada/apis/update-store-product.ts +51 -0
- package/server/controllers/lazada/client/index.ts +3 -0
- package/server/controllers/lazada/client/lazada.ts +142 -0
- package/server/controllers/lazada/client/signature.ts +67 -0
- package/server/controllers/lazada/client/types.ts +30 -0
- package/server/controllers/lazada/client/xml.ts +24 -0
- package/server/controllers/lazada/index.ts +8 -0
- package/server/controllers/lazada/platform-action.ts +35 -0
- package/server/controllers/magento/apis/create-order-comment.ts +32 -0
- package/server/controllers/magento/apis/create-order-refund.ts +20 -0
- package/server/controllers/magento/apis/create-order-ship.ts +43 -0
- package/server/controllers/magento/apis/echo.ts +14 -0
- package/server/controllers/magento/apis/get-store-order.ts +15 -0
- package/server/controllers/magento/apis/get-store-orders.ts +159 -0
- package/server/controllers/magento/apis/get-store-product-categories.ts +43 -0
- package/server/controllers/magento/apis/get-store-product-variations.ts +17 -0
- package/server/controllers/magento/apis/get-store-product.ts +44 -0
- package/server/controllers/magento/apis/get-store-products.ts +120 -0
- package/server/controllers/magento/apis/get-store-stock-item.ts +66 -0
- package/server/controllers/magento/apis/index.ts +16 -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 +42 -0
- package/server/controllers/magento/apis/update-store-product-variation-price.ts +24 -0
- package/server/controllers/magento/apis/update-store-product-variation-stock.ts +42 -0
- package/server/controllers/magento/index.ts +8 -0
- package/server/controllers/magento/magento.ts +202 -0
- package/server/controllers/magento/platform-action.ts +44 -0
- package/server/controllers/shopee/apis/accept-store-order-cancellation.ts +22 -0
- package/server/controllers/shopee/apis/cancel-store-order.ts +25 -0
- package/server/controllers/shopee/apis/create-store-product-variations.ts +33 -0
- package/server/controllers/shopee/apis/create-store-product.ts +57 -0
- package/server/controllers/shopee/apis/delete-store-product.ts +19 -0
- package/server/controllers/shopee/apis/echo.ts +14 -0
- package/server/controllers/shopee/apis/get-address.ts +32 -0
- package/server/controllers/shopee/apis/get-branch-list.ts +30 -0
- package/server/controllers/shopee/apis/get-logistics-param.ts +71 -0
- package/server/controllers/shopee/apis/get-store-logistics.ts +21 -0
- package/server/controllers/shopee/apis/get-store-order-document.ts +27 -0
- package/server/controllers/shopee/apis/get-store-order-items.ts +47 -0
- package/server/controllers/shopee/apis/get-store-order-payout-dates.ts +29 -0
- package/server/controllers/shopee/apis/get-store-order-transaction-details.ts +29 -0
- package/server/controllers/shopee/apis/get-store-order.ts +136 -0
- package/server/controllers/shopee/apis/get-store-orders.ts +39 -0
- package/server/controllers/shopee/apis/get-store-product-categories.ts +19 -0
- package/server/controllers/shopee/apis/get-store-product-category-attributes.ts +18 -0
- package/server/controllers/shopee/apis/get-store-product.ts +84 -0
- package/server/controllers/shopee/apis/get-store-products.ts +30 -0
- package/server/controllers/shopee/apis/get-store-refund-order-details.ts +41 -0
- package/server/controllers/shopee/apis/get-store-refund-orders.ts +47 -0
- package/server/controllers/shopee/apis/get-time-slot.ts +25 -0
- package/server/controllers/shopee/apis/index.ts +30 -0
- package/server/controllers/shopee/apis/init-logistics.ts +39 -0
- package/server/controllers/shopee/apis/reject-store-order-cancellation.ts +22 -0
- package/server/controllers/shopee/apis/split-order.ts +44 -0
- package/server/controllers/shopee/apis/update-store-product-stock.ts +24 -0
- package/server/controllers/shopee/apis/update-store-product-variation-stock.ts +21 -0
- package/server/controllers/shopee/apis/update-store-product.ts +85 -0
- package/server/controllers/shopee/apis2/create-shipping-document.ts +27 -0
- package/server/controllers/shopee/apis2/echo.ts +14 -0
- package/server/controllers/shopee/apis2/get-logistics-param.ts +66 -0
- package/server/controllers/shopee/apis2/get-shipping-document-result.ts +21 -0
- package/server/controllers/shopee/apis2/get-store-logistics.ts +23 -0
- package/server/controllers/shopee/apis2/get-store-order-by-batch.ts +97 -0
- package/server/controllers/shopee/apis2/get-store-order-document.ts +39 -0
- package/server/controllers/shopee/apis2/get-store-order-payout-dates.ts +33 -0
- package/server/controllers/shopee/apis2/get-store-order-transaction-details.ts +28 -0
- package/server/controllers/shopee/apis2/get-store-order.ts +93 -0
- package/server/controllers/shopee/apis2/get-store-orders.ts +40 -0
- package/server/controllers/shopee/apis2/get-store-product-variations.ts +17 -0
- package/server/controllers/shopee/apis2/get-store-product.ts +105 -0
- package/server/controllers/shopee/apis2/get-store-products.ts +28 -0
- package/server/controllers/shopee/apis2/get-store-refund-order-details.ts +39 -0
- package/server/controllers/shopee/apis2/get-store-refund-orders.ts +37 -0
- package/server/controllers/shopee/apis2/get-tracking-number.ts +17 -0
- package/server/controllers/shopee/apis2/index.ts +20 -0
- package/server/controllers/shopee/apis2/init-logistics.ts +39 -0
- package/server/controllers/shopee/apis2/update-store-product-stock.ts +26 -0
- package/server/controllers/shopee/apis2/update-store-product-variation-stock.ts +28 -0
- package/server/controllers/shopee/index.ts +16 -0
- package/server/controllers/shopee/platform-action.ts +58 -0
- package/server/controllers/shopee/refresh-access-token.ts +78 -0
- package/server/controllers/shopee/shopee.ts +191 -0
- package/server/controllers/shopify/apis/echo.ts +14 -0
- package/server/controllers/shopify/apis/get-airway-bill.ts +17 -0
- package/server/controllers/shopify/apis/get-inventory-level.ts +17 -0
- package/server/controllers/shopify/apis/get-store-order.ts +172 -0
- package/server/controllers/shopify/apis/get-store-orders.ts +290 -0
- package/server/controllers/shopify/apis/get-store-product-categories.ts +19 -0
- package/server/controllers/shopify/apis/get-store-product-category-attributes.ts +18 -0
- package/server/controllers/shopify/apis/get-store-product-variation-stock.ts +17 -0
- package/server/controllers/shopify/apis/get-store-products-count.ts +14 -0
- package/server/controllers/shopify/apis/get-store-products.ts +177 -0
- package/server/controllers/shopify/apis/index.ts +13 -0
- package/server/controllers/shopify/apis/set-store-order-status-ready-to-ship.ts +31 -0
- package/server/controllers/shopify/apis/update-order-status.ts +32 -0
- 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 +20 -0
- package/server/controllers/shopify/index.ts +8 -0
- package/server/controllers/shopify/platform-action.ts +43 -0
- package/server/controllers/shopify/shopify.ts +148 -0
- package/server/controllers/store-api/decorators.ts +44 -0
- package/server/controllers/store-api/index.ts +209 -0
- package/server/controllers/store-api/types.ts +0 -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 +176 -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/create-order-note.ts +17 -0
- package/server/controllers/woocommerce/apis/echo.ts +14 -0
- package/server/controllers/woocommerce/apis/get-customer-info.ts +18 -0
- package/server/controllers/woocommerce/apis/get-store-order.ts +116 -0
- package/server/controllers/woocommerce/apis/get-store-orders.ts +190 -0
- package/server/controllers/woocommerce/apis/get-store-product-categories.ts +18 -0
- package/server/controllers/woocommerce/apis/get-store-product-variations.ts +16 -0
- package/server/controllers/woocommerce/apis/get-store-products.ts +135 -0
- package/server/controllers/woocommerce/apis/index.ts +19 -0
- package/server/controllers/woocommerce/apis/set-store-order-status-ready-to-ship.ts +17 -0
- package/server/controllers/woocommerce/apis/update-order-status.ts +40 -0
- package/server/controllers/woocommerce/apis/update-product-attribute.ts +20 -0
- package/server/controllers/woocommerce/apis/update-store-product-price.ts +20 -0
- package/server/controllers/woocommerce/apis/update-store-product-stock.ts +17 -0
- package/server/controllers/woocommerce/apis/update-store-product-variant-price.ts +17 -0
- package/server/controllers/woocommerce/apis/update-store-product-variant-stock.ts +18 -0
- package/server/controllers/woocommerce/apis/update-store-product-variation-price.ts +20 -0
- package/server/controllers/woocommerce/apis/update-store-product-variation-stock.ts +20 -0
- package/server/controllers/woocommerce/index.ts +8 -0
- package/server/controllers/woocommerce/platform-action.ts +48 -0
- package/server/controllers/woocommerce/woocommerce.ts +104 -0
- package/server/controllers/zalora/apis/echo.ts +14 -0
- package/server/controllers/zalora/apis/get-airway-bill.ts +17 -0
- package/server/controllers/zalora/apis/get-store-order-items.ts +17 -0
- package/server/controllers/zalora/apis/get-store-order.ts +17 -0
- package/server/controllers/zalora/apis/get-store-orders.ts +21 -0
- package/server/controllers/zalora/apis/get-store-product-categories.ts +20 -0
- package/server/controllers/zalora/apis/get-store-product-category-attributes.ts +18 -0
- package/server/controllers/zalora/apis/get-store-products.ts +20 -0
- package/server/controllers/zalora/apis/index.ts +8 -0
- package/server/controllers/zalora/index.ts +8 -0
- package/server/controllers/zalora/platform-action.ts +18 -0
- package/server/controllers/zalora/zalora/index.ts +70 -0
- package/server/controllers/zalora/zalora/signature.ts +37 -0
- package/server/controllers/zalora/zalora/xml.ts +24 -0
- package/server/engine/connector/index.ts +3 -0
- package/server/engine/connector/lazada-connector.ts +49 -0
- package/server/engine/connector/marketplace-connector.ts +33 -0
- package/server/engine/connector/shopee-connector.ts +46 -0
- package/server/engine/index.ts +2 -0
- package/server/engine/task/index.ts +4 -0
- package/server/engine/task/lazada-get.ts +48 -0
- package/server/engine/task/lazada-post.ts +46 -0
- package/server/engine/task/marketplace-api.ts +72 -0
- package/server/engine/task/shopee-post.ts +51 -0
- package/server/entities/index.ts +8 -0
- package/server/entities/marketplace-distributor.ts +42 -0
- package/server/entities/marketplace-setting.ts +49 -0
- package/server/entities/marketplace-store.ts +100 -0
- package/server/entities/marketplace-transporter.ts +46 -0
- package/server/graphql/constants/index.ts +1 -0
- package/server/graphql/constants/store.ts +5 -0
- package/server/graphql/index.ts +9 -0
- package/server/graphql/resolvers/index.ts +6 -0
- package/server/graphql/resolvers/marketplace-distributor/create-marketplace-distributor.ts +15 -0
- package/server/graphql/resolvers/marketplace-distributor/delete-marketplace-distributor.ts +13 -0
- package/server/graphql/resolvers/marketplace-distributor/delete-marketplace-distributors.ts +18 -0
- package/server/graphql/resolvers/marketplace-distributor/index.ts +19 -0
- package/server/graphql/resolvers/marketplace-distributor/marketplace-distributor-query.ts +57 -0
- package/server/graphql/resolvers/marketplace-distributor/update-marketplace-distributor.ts +22 -0
- package/server/graphql/resolvers/marketplace-distributor/update-multiple-marketplace-distributor.ts +49 -0
- package/server/graphql/resolvers/marketplace-setting/create-marketplace-setting.ts +16 -0
- package/server/graphql/resolvers/marketplace-setting/delete-marketplace-setting.ts +13 -0
- package/server/graphql/resolvers/marketplace-setting/delete-marketplace-settings.ts +18 -0
- package/server/graphql/resolvers/marketplace-setting/index.ts +19 -0
- package/server/graphql/resolvers/marketplace-setting/marketplace-setting-query.ts +56 -0
- package/server/graphql/resolvers/marketplace-setting/update-marketplace-setting.ts +32 -0
- package/server/graphql/resolvers/marketplace-setting/update-multiple-marketplace-setting.ts +49 -0
- package/server/graphql/resolvers/marketplace-store/create-marketplace-store.ts +20 -0
- package/server/graphql/resolvers/marketplace-store/delete-marketplace-store.ts +21 -0
- package/server/graphql/resolvers/marketplace-store/delete-marketplace-stores.ts +26 -0
- package/server/graphql/resolvers/marketplace-store/index.ts +40 -0
- package/server/graphql/resolvers/marketplace-store/lazada/deactivate-lazada-store.ts +28 -0
- package/server/graphql/resolvers/marketplace-store/lazada/generate-lazada-access-token.ts +61 -0
- package/server/graphql/resolvers/marketplace-store/lazada/get-lazada-auth-url.ts +9 -0
- package/server/graphql/resolvers/marketplace-store/lazada/index.ts +12 -0
- package/server/graphql/resolvers/marketplace-store/magento/activate-magento-store.ts +82 -0
- package/server/graphql/resolvers/marketplace-store/magento/deactivate-magento-store.ts +27 -0
- package/server/graphql/resolvers/marketplace-store/magento/get-magento-auth-url.ts +12 -0
- package/server/graphql/resolvers/marketplace-store/magento/index.ts +12 -0
- package/server/graphql/resolvers/marketplace-store/marketplace-store.ts +14 -0
- package/server/graphql/resolvers/marketplace-store/marketplace-stores.ts +18 -0
- package/server/graphql/resolvers/marketplace-store/shopee/deactivate-shopee-store.ts +28 -0
- package/server/graphql/resolvers/marketplace-store/shopee/generate-shopee-access-token.ts +96 -0
- package/server/graphql/resolvers/marketplace-store/shopee/get-shopee-auth-url.ts +18 -0
- package/server/graphql/resolvers/marketplace-store/shopee/index.ts +13 -0
- package/server/graphql/resolvers/marketplace-store/shopify/deactivate-shopify-store.ts +29 -0
- package/server/graphql/resolvers/marketplace-store/shopify/get-shopify-auth-url.ts +26 -0
- package/server/graphql/resolvers/marketplace-store/shopify/index.ts +11 -0
- package/server/graphql/resolvers/marketplace-store/update-marketplace-store.ts +19 -0
- package/server/graphql/resolvers/marketplace-store/update-multiple-marketplace-store.ts +46 -0
- package/server/graphql/resolvers/marketplace-store/woocommerce/deactivate-woocommerce-store.ts +20 -0
- package/server/graphql/resolvers/marketplace-store/woocommerce/get-woocommerce-auth-url.ts +14 -0
- package/server/graphql/resolvers/marketplace-store/woocommerce/index.ts +10 -0
- package/server/graphql/resolvers/marketplace-store/zalora/deactivate-zalora-store.ts +28 -0
- package/server/graphql/resolvers/marketplace-store/zalora/generate-zalora-access-token.ts +55 -0
- package/server/graphql/resolvers/marketplace-store/zalora/index.ts +9 -0
- package/server/graphql/resolvers/marketplace-transporter/create-marketplace-transporter.ts +21 -0
- package/server/graphql/resolvers/marketplace-transporter/delete-marketplace-transporter.ts +13 -0
- package/server/graphql/resolvers/marketplace-transporter/delete-marketplace-transporters.ts +18 -0
- package/server/graphql/resolvers/marketplace-transporter/index.ts +19 -0
- package/server/graphql/resolvers/marketplace-transporter/marketplace-transporter-query.ts +60 -0
- package/server/graphql/resolvers/marketplace-transporter/update-marketplace-transporter.ts +25 -0
- package/server/graphql/resolvers/marketplace-transporter/update-multiple-marketplace-transporter.ts +49 -0
- package/server/graphql/resolvers/store-order/accept-store-order-cancellation.ts +9 -0
- package/server/graphql/resolvers/store-order/cancel-store-order.ts +8 -0
- package/server/graphql/resolvers/store-order/get-store-order-document.ts +8 -0
- package/server/graphql/resolvers/store-order/get-store-order-items.ts +8 -0
- package/server/graphql/resolvers/store-order/get-store-order.ts +8 -0
- package/server/graphql/resolvers/store-order/get-store-orders.ts +13 -0
- package/server/graphql/resolvers/store-order/index.ts +23 -0
- package/server/graphql/resolvers/store-order/reject-store-order-cancellation.ts +9 -0
- package/server/graphql/resolvers/store-order/set-store-order-status-packed-by-marketplace.ts +9 -0
- package/server/graphql/resolvers/store-order/set-store-order-status-ready-to-ship.ts +10 -0
- package/server/graphql/resolvers/store-product/create-store-product-variations.ts +9 -0
- package/server/graphql/resolvers/store-product/create-store-product.ts +8 -0
- package/server/graphql/resolvers/store-product/delete-store-product.ts +8 -0
- package/server/graphql/resolvers/store-product/get-store-product-brands.ts +14 -0
- package/server/graphql/resolvers/store-product/get-store-product-categories.ts +8 -0
- package/server/graphql/resolvers/store-product/get-store-product-category-attributes.ts +11 -0
- package/server/graphql/resolvers/store-product/get-store-product.ts +8 -0
- package/server/graphql/resolvers/store-product/get-store-products.ts +13 -0
- package/server/graphql/resolvers/store-product/index.ts +25 -0
- package/server/graphql/resolvers/store-product/update-store-product.ts +8 -0
- package/server/graphql/types/index.ts +6 -0
- package/server/graphql/types/marketplace-distributor/index.ts +26 -0
- package/server/graphql/types/marketplace-distributor/marketplace-distributor-list.ts +8 -0
- package/server/graphql/types/marketplace-distributor/marketplace-distributor-patch.ts +11 -0
- package/server/graphql/types/marketplace-distributor/marketplace-distributor.ts +16 -0
- package/server/graphql/types/marketplace-distributor/new-marketplace-distributor.ts +9 -0
- package/server/graphql/types/marketplace-setting/index.ts +22 -0
- package/server/graphql/types/marketplace-setting/marketplace-setting-list.ts +8 -0
- package/server/graphql/types/marketplace-setting/marketplace-setting-patch.ts +12 -0
- package/server/graphql/types/marketplace-setting/marketplace-setting.ts +17 -0
- package/server/graphql/types/marketplace-setting/new-marketplace-setting.ts +11 -0
- package/server/graphql/types/marketplace-store/index.ts +38 -0
- package/server/graphql/types/marketplace-store/marketplace-store-list.ts +8 -0
- package/server/graphql/types/marketplace-store/marketplace-store-patch.ts +21 -0
- package/server/graphql/types/marketplace-store/marketplace-store.ts +28 -0
- package/server/graphql/types/marketplace-store/new-marketplace-store.ts +19 -0
- package/server/graphql/types/marketplace-transporter/index.ts +24 -0
- package/server/graphql/types/marketplace-transporter/marketplace-transporter-list.ts +8 -0
- package/server/graphql/types/marketplace-transporter/marketplace-transporter-patch.ts +13 -0
- package/server/graphql/types/marketplace-transporter/marketplace-transporter.ts +17 -0
- package/server/graphql/types/marketplace-transporter/new-marketplace-transporter.ts +11 -0
- package/server/graphql/types/store-order/index.ts +23 -0
- package/server/graphql/types/store-order/new-store-order.ts +8 -0
- package/server/graphql/types/store-order/store-order-list.ts +8 -0
- package/server/graphql/types/store-order/store-order-patch.ts +10 -0
- package/server/graphql/types/store-order/store-order.ts +14 -0
- package/server/graphql/types/store-product/index.ts +23 -0
- package/server/graphql/types/store-product/new-store-product.ts +8 -0
- package/server/graphql/types/store-product/store-product-list.ts +8 -0
- package/server/graphql/types/store-product/store-product-patch.ts +10 -0
- package/server/graphql/types/store-product/store-product.ts +14 -0
- package/server/index.ts +9 -0
- package/server/migrations/index.ts +9 -0
- package/server/routers/magento-private-router.ts +192 -0
- package/server/routers/magento-public-router.ts +38 -0
- package/server/routers/shopify-install-private-router.ts +95 -0
- package/server/routers/shopify-install-public-router.ts +241 -0
- package/server/routers/shopify-private-router.ts +78 -0
- package/server/routers/shopify-public-router.ts +182 -0
- package/server/routers/woocommerce-router.ts +70 -0
- 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
|
+
}
|