<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Herquiloide Hele</title>
    <description>The latest articles on DEV Community by Herquiloide Hele (@herquiloidehele).</description>
    <link>https://dev.to/herquiloidehele</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F189464%2Fa74efa44-cbd5-42b4-8f08-20d8e3965a6b.jpeg</url>
      <title>DEV Community: Herquiloide Hele</title>
      <link>https://dev.to/herquiloidehele</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/herquiloidehele"/>
    <language>en</language>
    <item>
      <title>Como Implementar Pagamentos Por M-Pesa no Shopify</title>
      <dc:creator>Herquiloide Hele</dc:creator>
      <pubDate>Sun, 25 Oct 2020 14:24:36 +0000</pubDate>
      <link>https://dev.to/herquiloidehele/como-implementar-pagamentos-por-m-pesa-no-shopify-4fl</link>
      <guid>https://dev.to/herquiloidehele/como-implementar-pagamentos-por-m-pesa-no-shopify-4fl</guid>
      <description>&lt;p&gt;Hello pessoal, neste artigo irei partilhar um pouco da minha experiência no processo de implementação do método de pagamento M-Pesa numa loja Shopify.&lt;/p&gt;

&lt;p&gt;Para quem não sabe, &lt;a href="https://www.shopify.com/" rel="noopener noreferrer"&gt;Shopify&lt;/a&gt; é uma das maiores plataformas de e-commerce actualmente existentes, e suporta milhares de lojas online ao redor do mundo incluindo Moçambique.&lt;/p&gt;

&lt;p&gt;Há 4 meses precisámos migrar de uma loja &lt;a href="https://woocommerce.com/" rel="noopener noreferrer"&gt;WooCommerce&lt;/a&gt; para &lt;a href="https://www.shopify.com/" rel="noopener noreferrer"&gt;Shopify&lt;/a&gt; porque, depois de algumas análises, percebemos que seria a melhor plataforma de acordo com as necessidades do negócio na altura.&lt;/p&gt;

&lt;p&gt;Após a migração deparámo-nos com uma limitação para o sucesso da loja: &lt;strong&gt;a&lt;/strong&gt; &lt;strong&gt;impossibilidade de adicionar provedores de pagamentos tercerizados não listados.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Em outras palavras, não se pode adicionar provedores de pagamentos customizados para além dos que já estão predefinidos &lt;strong&gt;(cerca de 54 provedores)&lt;/strong&gt;, sendo que actualmente nenhum destes encontra-se disponível para Moçambique.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2APGypcME2glOqdapU81pcQQ.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2APGypcME2glOqdapU81pcQQ.gif" alt="Provedores tercerizados permitidos"&gt;&lt;/a&gt;&lt;em&gt;Provedores tercerizados permitidos&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sendo o &lt;strong&gt;&lt;a href="https://developer.mpesa.vm.co.mz/" rel="noopener noreferrer"&gt;M-Pesa&lt;/a&gt;&lt;/strong&gt; um provedor de pagamento tercerizado que não encontra-se disponível por &lt;em&gt;default&lt;/em&gt; no Shopify até ao momento, tivemos o desafio de encontrar uma forma alternativa para permitir pagamentos usando este provedor, uma vez que muitos dos nossos clientes já estavam habituados com este método na nossa loja antiga.&lt;/p&gt;

&lt;p&gt;E é esse processo que pretendo explicar neste artigo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Definição da estratégia (Front-end)
&lt;/h3&gt;

&lt;p&gt;Antes de mais, temos que ter em conta que o Shopify não permite uma customização da página do Checkout suficiente para implementar essa funcionalidade esta página, assim sendo, a estratégia consistirá em deixar que o utilizador faça encomenda pelo fluxo normal do Shopify.&lt;/p&gt;

&lt;p&gt;E só depois redirecionar o utilizador para uma página de pagamento onde irá efectuar o pagamento. Mas como? Se não podemos customizar a página do checkout!&lt;/p&gt;

&lt;p&gt;Bom, uma vez feita a encomenda, é apresentado para o utilizador a página do &lt;strong&gt;&lt;a href="https://help.shopify.com/en/manual/orders/status-tracking" rel="noopener noreferrer"&gt;status da encomenda&lt;/a&gt;,&lt;/strong&gt; e, é nesta página onde podemos adicionar um botão com uma accão para redirecionar o utilizador para uma página onde concretamente irá efectuar o pagamento.&lt;/p&gt;

&lt;p&gt;Para fazer isso é muito simples, basta seguir os seguintes passos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;No admin do Shopify, clique em &lt;strong&gt;Configurações&lt;/strong&gt; &amp;gt; &lt;strong&gt;Checkout&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Em &lt;strong&gt;Scripts adicionais&lt;/strong&gt;, adicione o trecho de código abaixo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clique em &lt;strong&gt;Salvar&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Algo importante a ser destacado aqui é a URL de redirecionamento, onde passamos o &lt;strong&gt;ID da encomenda (&lt;em&gt;checkout.order_id&lt;/em&gt;)&lt;/strong&gt; que será usado para obter os dados da encomenda e do cliente na página de pagamento.&lt;/p&gt;

&lt;p&gt;A partir deste momento podemos &lt;a href="https://shopify.dev/tutorials/customize-theme-create-alternate-templates" rel="noopener noreferrer"&gt;criar uma página customizada&lt;/a&gt; com os elementos necessários para efectuar um pagamento. Tomemos como exemplo a página abaixo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2032%2F1%2AdaAAectpuM7E6zYf0AatRg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2032%2F1%2AdaAAectpuM7E6zYf0AatRg.png" alt="Página customizada para efectuar pagamentos"&gt;&lt;/a&gt;&lt;em&gt;Página customizada para efectuar pagamentos&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Muito bem, já temos o básico referente a parte do front-end, resta-nos estruturar o back-end que irá interagir com API do M-Pesa.&lt;/p&gt;

&lt;h3&gt;
  
  
  Denifinição da estratégia (Back-end)
&lt;/h3&gt;

&lt;p&gt;É sabido que a partir da dashboard da nossa loja só temos acesso a camada do front-end (edição dos ficheiros do tema do website — HTML, CSS e JavaScript).&lt;/p&gt;

&lt;p&gt;Tendo em conta que para comunicarmo-nos com a API do M-Pesa precisaríamos de armazenar as chaves de acesso em algum lugar, certamente que não seria uma boa ideia usar esta camada para tal.&lt;/p&gt;

&lt;p&gt;Assim sendo, precisamos de uma camada em que possamos fazer isso e muito mais com a devida segurança. De forma geral podemos definir a arquitectura abaixo como base.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3840%2F1%2AhXIpC7HC7S8gf3_RMnJOMw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3840%2F1%2AhXIpC7HC7S8gf3_RMnJOMw.jpeg" alt="Arquitectura Shopify — Mpesa"&gt;&lt;/a&gt;&lt;em&gt;Arquitectura Shopify — Mpesa&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Okay, vamos lá entender a função e a interação entre os elementos que compõem a arquitectura acima:&lt;/p&gt;

&lt;p&gt;Em primeira instância temos a nossa loja online, que a partir da página de pagamentos interage com um Back-end para obter informações da encomenda e iniciar uma acção de pagamento.&lt;/p&gt;

&lt;p&gt;No nosso back-end temos um microsserviço desenvolvido em &lt;strong&gt;&lt;a href="https://nodejs.org/en/" rel="noopener noreferrer"&gt;Node.Js&lt;/a&gt;&lt;/strong&gt; especialmente para tratar da questão dos pagamentos. É nesta componente onde temos todos os dados de configuração e a lógica para realizar e validar os pagamentos.&lt;/p&gt;

&lt;p&gt;Este Microsserviço comunica-se primeiramente com a &lt;a href="https://shopify.dev/docs/admin-api/rest/reference" rel="noopener noreferrer"&gt;API do Shopify&lt;/a&gt; para obter informações da encomenda dado um determinado &lt;strong&gt;ID&lt;/strong&gt;, informações essas que são retornadas para nossa página de pagamentos na loja online.&lt;/p&gt;

&lt;p&gt;Em seguida, o cliente inicia uma acção de pagamento introduzindo o seu número de telefone. O nosso microsserviço recebe esta informação e interage com a &lt;a href="https://developer.mpesa.vm.co.mz/" rel="noopener noreferrer"&gt;API do Mpesa&lt;/a&gt; para efectivar o pagamento.&lt;/p&gt;

&lt;p&gt;A partir deste momento, resta-nos apenas marcar a encomenda como paga ou não dependendo da resposta que obtemos. Mas, infelizmente, não podemos fazer isso a partir da API do Shopify, uma vez que não é permitido alterar o estado do pagamento de uma encomenda que tenha sido iniciada pelo cliente.&lt;/p&gt;

&lt;p&gt;Com isso, uma alternativa seria a de salvar os dados do pagamento em alguma base de dados, neste caso podemos usar o &lt;a href="https://www.mongodb.com/" rel="noopener noreferrer"&gt;MongoDB Atlas&lt;/a&gt; — uma cloud Database. Onde podemos armazenar o histórico de pagamentos das encomendas.&lt;/p&gt;

&lt;p&gt;Foi desta forma que tornou-se possível a implementação pagamentos por M-Pesa numa loja Shopify. &lt;strong&gt;Thank You.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="https://www.payments.co.mz/" rel="noopener noreferrer"&gt;https://www.payments.co.mz/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mpesa</category>
      <category>shopify</category>
      <category>vodacom</category>
      <category>node</category>
    </item>
  </channel>
</rss>
