Implementação de um Sistema de Comércio Eletrônico com Mini Programa do WeChat

Configuração do Ambiente de Desenvolvimento

Para iniciar o desenvolvimento de um mini programa do WeChat, é necessário configurar corretamente o ambiente. O processo envolve a instalação da ferramenta oficial de desenvolvimento e a criação de um projeto.

Instalação da Ferramenta de Desenvolvimento WeChat

A ferramenta de desenvolvimento WeChat é um ambiente integrado (IDE) fornecido oficialmente. Pode ser baixada na plataforma pública do WeChat (https://mp.weixin.qq.com/). Após o login, acesse a seção "Ferramentas de Desenvolvimento" no menu "Desenvolvimento" para obter o instalador compatível com seu sistema operacional.

Criação de um Projeto

Após a instalação, abra a ferramenta e selecione "Criar Projeto". É necessário fornecer um AppID válido, que pode ser obtido registrando um mini programa na plataforma pública. Preencha os detalhes do projeto, como nome e diretório local, para gerar a estrutura inicial de arquivos.

Análise da Estrutura do Código Fonte

Um projeto de mini programa possui uma organização de arquivos específica que define sua estrutura, estilo, lógica e configuração.

Componentes de uma Página

Cada tela é composta por quatro tipos de arquivo:

  • .wxml: Define a estrutura do markup, semelhante ao HTML.
  • .wxss: Contém regras de estilo, seguindo a sintaxe do CSS.
  • .js: Gerencia a lógica e interatividade da página.
  • .json: Configura opções específicas da página, como título da barra de navegação.

Exemplo de Estrutura de Página

// página-exemplo.js
Pagina({
  dados: {
    listaProdutos: [
      { identificador: 101, titulo: 'Notebook', valor: 3500 },
      { identificador: 102, titulo: 'Mouse', valor: 89 }
    ]
  }
});

<view class="conteiner">
  <block wx:for="{{listaProdutos}}" wx:key="identificador">
    <view class="item-produto">
      <text>{{item.titulo}}</text>
      <text>R$ {{item.valor}}</text>
    </view>
  </block>
</view>
/* página-exemplo.wxss */
.conteiner {
  display: flex;
  flex-direction: column;
}
.item-produto {
  margin-bottom: \(|);
}

Configuração Global e Modularização

O arquivo app.json define configurações globais, como rotas de páginas e aparência da janela. A modularização permite a reutilização de código através dos métodos module.exports e require().

// utilitarios.js
function formatarMoeda(valor) {
  return 'R$ ' + valor.toFixed(2);
}
module.exports = { formatarMoeda };

Desenvolvimento das Funcionalidades Principais

Exibição de Catálogo de Produtos

A renderização eficiente de uma lista de produtos é crucial. Utilize a diretiva wx:for para iterar sobre os dados.

<view class="grade-produtos">
  <view class="cartao-produto" wx:for="{{estoque}}" wx:key="sku">
    <image src="{{item.imagemUrl}}"></image>
    <view class="detalhes">
      <text class="nome">{{item.nome}}</text>
      <text class="preco">{{formatarPreco(item.preco)}}</text>
    </view>
  </view>
</view>

Gerenciamento do Carrinho de Compras

O carrinho pode ser gerenciado utilizando o armazenamento local do mini programa para persistência de dados entre sessões.

// gerenciadorCarrinho.js
const armazenamento = require('./armazenamentoLocal');

class GerenciadorCarrinho {
  constructor() {
    this.itens = armazenamento.recuperar('carrinho') || [];
  }

  adicionarItem(produto, quantidade = 1) {
    const itemExistente = this.itens.find(i => i.id === produto.id);
    if (itemExistente) {
      itemExistente.quantidade += quantidade;
    } else {
      this.itens.push({ ...produto, quantidade });
    }
    this.sincronizarArmazenamento();
  }

  sincronizarArmazenamento() {
    armazenamento.gravar('carrinho', this.itens);
  }
}

Processamento de Pedidos e Integração com Pagamento

A criação de um pedido consolida os itens do carrinho e inicia o fluxo de pagamento. A integração com a API de pagamanto do WeChat (wx.requestPayment) é necessária para finalizar a transação.

// servicoPedido.js
async function criarPedido(itensCarrinho, enderecoEntrega) {
  const resposta = await wx.solicitacao({
    url: 'https://api.loja.com/pedidos',
    method: 'POST',
    dados: { itens: itensCarrinho, endereco: enderecoEntrega }
  });
  return resposta.dados; // Contém parâmetros para wx.solicitacaoPagamento
}

function iniciarPagamento(infoPagamento) {
  wx.solicitacaoPagamento({
    ...infoPagamento,
    success(res) { console.log('Pagamento concluído:', res); },
    fail(erro) { console.error('Falha no pagamento:', erro); }
  });
}

Padrão de Arquitetura MVVM e Gerenciamento de Estado

O desenvolvimento de mini programas beneficia-se da adoção do padrão Model-View-ViewModel (MVVM), que promove a separação entre a lógica de negócio e a interface do usuário.

Vinculação de Dados Reativa

O sistema de dados do mini programa (Page.data e o método setData) atua como um mecanismo de vinculação reativa simplificado. Alterações nos dados refletem-se automaticamente na view.

Pagina({
  dados: { contador: 0 },
  incrementar() {
    this.setData({ contador: this.dados.contador + 1 });
  }
});

Estratégias para Estados Compartilhados

Para estados globais (ex.: informações do usuário logado), pode-se utilizar o objeto global App ou implementar um geranciador de estado centralizado.

// app.js
App({
  estadoGlobal: {
    usuario: null,
    tokenSessao: ''
  }
});

// Em qualquer página
const app = getApp();
console.log(app.estadoGlobal.usuario);

Utilização das APIs do WeChat

As APIs fornecidas pela plataforma permitem acessar capacidades do dispositivo e serviços do WeChat.

Solicitações de Rede

A API wx.solicitacao é usada para comunicação HTTP. É essencial tratar erros de rede e respostas não bem-sucedidas.

wx.solicitacao({
  url: 'https://api.exemplo.com/dados',
  method: 'GET',
  success(resposta) { /* processar dados */ },
  fail(erro) { /* lidar com falha de rede */ },
  complete() { /* executar independente do resultado */ }
});

APIs de Mídia e Permissões

APIs como wx.escolherImagem para galeria/câmera ou wx.getLocation para geolocalização requerem que o usuário conceda permisões. O fluxo deve verificar o estado da autorização antes da chamada.

// Verificar e solicitar permissão para localização
wx.verificarConfiguracao({
  withSubKey: true,
  success(res) {
    if (res.authSetting['scope.userLocation'] !== true) {
      wx.autorizar({ scope: 'scope.userLocation' });
    } else {
      wx.obterLocalizacao({ type: 'wgs84' });
    }
  }
});

Tags: WeChat Mini Program WXML WXSS javascript Desenvolvimento Front-end

Publicado em 9-12 01:38