A plataforma CORE disponibiliza diversas APIs (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 APIs nativas da plataforma e 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

Nos 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.


Cliente

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

Documentação para os métodos de Cadastro do Cliente 

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 


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 exposto nesse documento é *uma versão menor do que é retornado na URL de consulta para os detalhes do produto.

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:

Métodos para criação e manipulação do carrinho

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": ""
}

Painel do Cliente

Para criar a experiência de uso do painel do cliente, é indicado que seja utilizada 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, podem ser utilizados 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.

  • Sem rótulos