Criar APP do CORE

A plataforma CORE disponibiliza diversas API's (WebAPI e Web) que podem ser utilizadas para criar e customizar diversos cenários, inclusive, podendo ser criado um app nativo, usando alguns contextos da plataforma.

📘

Os tipos de API na plataforma CORE

WebAPI:

  • Exige que as credenciais do admin sejam passadas via Basic no header da requisição

Web:

  • Não exige autenticação
  • Geralmente possui duas versões de end-points, a Full e a Lean
  • A versão Full é o dado bruto vindo diretamente da camada de dados
  • A versão Lean é a versão reduzida do JSON Full podendo ser customizado sob-demanda via admin para suprir necessidades especiais. Também possui parâmetros extras(além dos comuns) para possibilitar que sejam retornados uma partial de um JSON ou HTML quando necessário

Nesse tutorial, vamos abordar alguns cenários que podem ser resolvidos, apenas consumindo as API's nativas da plataforma e que são recomendadas para quem quer desenvolver um m-commerce. Vamos reutilizar diversas ferramentas que já estão prontas na plataforma e podem ser compartilhadas com o APP para garantir um desenvolvimento ágil e seguro .

❗️

Importante

Os cenários de uso que envolvem a área do cliente e o checkout, é orientado que utilize uma Web View para ter a mesma experiência que existe hoje na versão mobile do site e ganhar recursos importantes como: pagamento, cotação de frete, consulta de status e tracking de pedidos e etc...

1. Cliente

Para trabalhar os cenários de cadastro e autenticação, é observar a necessidade de uso dos métodos que podem ser consultados nas seguintes documentações:

:arrow-right: Documentação para os métodos de Cadastro do Cliente

2. Navegação

A plataforma CORE oferece uma série de WEB API's que podem ser usadas para consumir e criar uma experiência para

3. Produto

Exemplo da Model de Produto:

"Model": {
    "AllowOnlyAdditionalPurchase": false,
    "Associations": [
      
    ],
    "Availability": "I",
    "AvailabilityText": "Em estoque",
    "Backorderable": false,
    "BrandID": 15,
    "BrandName": "5 Estrelas",
    "BrandUrl": "5-estrelas",
    "CatalogItemBehavior": "Default",
    "CatalogItemTypeID": 6,
    "Condition": "",
    "CurrentSkuID": 0,
    "Descriptions": [
      {
        "Alias": "LongDescription",
        "Color": null,
        "GroupName": null,
        "ImagePath": null,
        "Name": "Descrição longa ",
        "Order": 0,
        "PropertyMetadataID": 24,
        "PropertyPath": "",
        "Reference": null,
        "Title": "Quod detracto sententiae eam ut.",
        "ValueAlias": ""
      },
      {
        "Alias": "Specifications",
        "Color": null,
        "GroupName": null,
        "ImagePath": null,
        "Name": "Medidas",
        "Order": 0,
        "PropertyMetadataID": 61,
        "PropertyPath": "",
        "Reference": null,
        "Title": "Lorem ipsum dolor sit amet",
        "ValueAlias": ""
      },
      {
        "Alias": "IncludeItems",
        "Color": null,
        "GroupName": null,
        "ImagePath": null,
        "Name": "Itens Incluso",
        "Order": 0,
        "PropertyMetadataID": 62,
        "PropertyPath": "",
        "Reference": null,
        "Title": "Ex tibique assentior vix.",
        "ValueAlias": ""
      }
    ],
    "DisplayCondition": false,
    "DisplayPrice": "Y",
    "DisplayStockQuantity": true,
    "Edit": null,
    "EstimatedReorderDate": null,
    "ExtendedMetadatas": [
      
    ],
    "Flags": [
      
    ],
    "FreeItems": [
      
    ],
    "HasCurrentSkuID": false,
    "HasEstimatedReorderDate": false,
    "HasFreeItemsPromotionValue": false,
    "IntegrationID": "",
    "IsDeliverable": true,
    "IsFreeShipping": false,
    "IsGiftCertificate": false,
    "IsInventoryAvailable": true,
    "IsNew": false,
    "IsPromotion": false,
    "IsPurchasable": true,
    "IsUndeliverable": false,
    "IsUponRequest": false,
    "Items": [
      {
        "Availability": "I",
        "AvailabilityText": "Em estoque",
        "Backorderable": false,
        "BundleAdjustType": "None",
        "BundleAdjustValue": 0.0,
        "BundleGroup": null,
        "BundleHierarchyPrice": null,
        "BundleKitDiscount": "Percent",
        "BundleKitDiscountValue": 0.0,
        "BundlePriceType": "Fixed",
        "BundleQuantity": 1,
        "BundleType": "AllProducts",
        "BuyBox": null,
        "CatalogItemBehavior": "Default",
        "CatalogItemTypeID": 6,
        "ComposeMinPrice": false,
        "Depth": 0.0,
        "Edit": null,
        "EstimatedReorderDate": null,
        "ExtendedMetadatas": [
          
        ],
        "HandlingDays": 1,
        "IsPromotion": false,
        "IsPurchasable": true,
        "Items": [
          {
            "Availability": "I",
            "AvailabilityText": "Em estoque",
            "Backorderable": false,
            "CatalogItemBehavior": "Default",
            "CatalogItemTypeID": 5,
            "ComposeMinPrice": true,
            "Depth": 1.000,
            "Edit": null,
            "EstimatedReorderDate": null,
            "ExtendedMetadatas": [
              
            ],
            "IsPromotion": false,
            "IsPurchasable": true,
            "Items": [
              
            ],
            "ListPrice": 50.000,
            "LoyaltyProgramPoints": [
              
            ],
            "MaximumQtyAllowed": 0.0,
            "MinimumQtyAllowed": 0.0,
            "Name": "Camera Fotográfica Canon",
            "Options": [
              
            ],
            "Order": 1,
            "OutOfStockFrom": null,
            "OutOfStockHandlingDays": 20,
            "OutOfStockTo": null,
            "Preorderable": false,
            "PreorderDate": "2018-10-18T00:00:00-03:00",
            "PriceDescription": " \t \t\t<strong class='sale-price'>\t<em class='prefix'>Por </em><span itemprop='price'>R$ 50,00</span></strong> \t     ",
            "ProductID": 984995,
            "ProductLevel": 1,
            "ProductPath": "/6.984994/5.984995/",
            "ProductTypeID": 6,
            "PromotionFrom": null,
            "PromotionPrice": 50.000,
            "PromotionTo": null,
            "ReplenishmentStatus": "Normal",
            "RetailPrice": 50.000,
            "SKU": "1400",
            "SKUOptions": [
              
            ],
            "StockBalance": 8.00,
            "Tax": 0.0,
            "TaxationAmount": 0.0,
            "UPC": null,
            "UrlFriendly": "?pp=/",
            "UrlHelper": {
              
            },
            "VariationLevel": 1,
            "VariationPath": "/",
            "Weight": 1.000,
            "Width": 1.000
          }
      }
  }

*O exemplo que foi exposto nesse documento é uma versão menor do que é retornado na URL de consulta para os detalhes do produto.

4. Carrinho

Para criar a experiência de uso e manipulação dos itens no carrinho de uma loja, a plataforma CORE disponibiliza uma WebAPI completa, onde todos os métodos podem ser consultados aqui:

:arrow-right: Métodos para criação e manipulação do carrinho

5. Checkout

Para criar a experiência de checkout, é indicado que seja utilizado uma Web View do Easycheckout, para que o usuário consiga cotar o frete usando o micro-serviço de Delivery do CORE e também efetuar pagamento utilizando os meios já configurados na loja.

🚧

Easycheckout com Web View

Para abrir o Easycheckout com os itens do carrinho que o cliente selecionou, é necessário recuperar a sessão dele, no web view do checkout, utilizando o método:

/web-api/v1/Shopping/Basket/CheckoutRedirect

Este método é acessível somente através do verbo POST e deve receber os seguintes parâmetros no request .

{
"BasketID": ,
"SessionID": "<ID da Sessão>",
"ShopperTicketID": ""
}

5. Painel do Cliente

Para criar a experiência de uso do painel do cliente, é indicado que seja utilizado uma Web View do site atual, para que o usuário consiga consultar os pedidos, tendo os mesmos recursos que existem no site atualmente.

🚧

Painel do Cliente com Web View

Para manter a sessão do cliente "viva", na navegação do painel do cliente dentro do app, pode ser utilizado os métodos para gestão da sessão do cliente, como por exemplo, o /Profile/Account/KeepAlive, que tem como objetivo manter a sessão do cliente viva na navegação.


Did this page help you?