From 64694c2b5fcf42dbbf412d7d39e2a99e04a73250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20C=C3=A9lio?= Date: Wed, 21 Oct 2020 23:59:02 +0000 Subject: [PATCH] feat: add checkout function Closes #64 --- src/MelhorEnvio/index.ts | 9 +++++++++ src/types.ts | 21 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/MelhorEnvio/index.ts b/src/MelhorEnvio/index.ts index ed62cd4..d6eb7d7 100644 --- a/src/MelhorEnvio/index.ts +++ b/src/MelhorEnvio/index.ts @@ -139,6 +139,15 @@ class MelhorEnvio { ): Promise { return this.fetch('/api/v2/me/cart', 'POST', {}, data); } + + public async checkout(data: Request.Shipment.Checkout) { + return this.fetch( + '/api/v2/me/shipment/checkout', + 'POST', + {}, + data + ); + } } export default MelhorEnvio; diff --git a/src/types.ts b/src/types.ts index 0e2305f..78d4dc1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -135,9 +135,13 @@ export namespace Response { export type Calculate | string | null> = T extends string ? CalculateItem : CalculateItem[]; + /** - * **Nota: entre os dados retornados constará o id da etiqueta. Este id deverá ser salvo em vias de realizar futuras interações para esta etiqueta, como o momento da compra da etiqueta (checkout).** + * Após feita a requisição, será retornado, entre outros dados, uma url de redirecionamento para concluir o pagamento junto ao gateway. */ + export interface Checkout { + id: string; + } } export interface Cart { id: string; @@ -157,6 +161,21 @@ export namespace Request { ownHand: boolean; insuranceValue: number; } + /** + * - Para poder realizar a compra da etiqueta, o usuário deverá ter na carteira do Melhor Envio o saldo necessário para tal compra. + * - Deverá ser respeitado o limite de envios disponível no momento da compra. + */ + interface CheckoutBase { + orders: string[]; + } + interface CheckoutWithGateway extends CheckoutBase { + gateway: 'moip' | 'mercado-pago' | 'picpay' | 'pagseguro'; + /** + * URL de redirecionamento para retorno após o pagamento + */ + redirect: string; + } + export type Checkout = CheckoutBase | CheckoutWithGateway; } type CartProducts = Array<{