Conteúdo


Aceite pagamentos on-line no Bluemix usando o API Connect

Um cenário de integração com serviços de pagamento de terceiros

Comments

Com o aparecimento da economia de API, o consumo de serviço ficou mais fácil e mais padronizado do que antes. Aplicativos nativos da nuvem são consumidores típicos de tais serviços por meio de APIs. O pagamento on-line é um exemplo de um serviço que é essencial para que praticamente qualquer aplicativo de e-commerce tenha êxito. Existem várias maneiras de construir aplicativos que aceitem pagamento on-line. Este artigo mostra um exemplo de tal implementação no IBM Bluemix que usa APIs de serviço de pagamento de terceiros. Esta abordagem é baseada no consumo da API, portanto, é fácil para você modificar o código para corresponder às APIs do provedor de serviços de pagamento de sua escolha.

Veja alguns exemplos de como você pode se beneficiar dos conceitos de economia de API para aceitar pagamento on-line por meio de seu aplicativo Bluemix.

Graças ao enorme sucesso do e-commerce, o uso do pagamento on-line agora é uma parte crítica de quase todo ciclo de vendas. Embora ele tenha sido visto originalmente como uma maneira de empresas tradicionais estenderem seu alcance e disponibilizar suas mercadorias e serviços na web, o pagamento on-line também ajudou a introduzir modelos de negócios totalmente novos no mercado. Isto se tornou ainda mais evidente com a difusão da tecnologia móvel, o que levou a interrupções de mercado maiores. Lembra quando as vendas de garagem tradicionais foram substituídas por websites de e-commerce nos quais itens individuais podiam ser comprados e vendidos? Atualmente, isto pode ser feito usando um aplicativo móvel desenvolvido e operado por uma empresa de startup local dentro de sua área.

Em um mundo cheio de possibilidades e modelos de negócios em mutação, o pagamento não deve ser um obstáculo, independentemente do tamanho de seus negócios. A tecnologia da informação evoluiu com o passar dos anos de uma maneira que tornou isto uma realidade, com avanços em áreas como nuvem, mobilidade e economia de API. Vamos explorar a facilidade de combinar esses três em uma única solução que utilize o IBM Bluemix como uma plataforma de desenvolvimento de nuvem para construir aplicativos móveis que aceitem pagamentos on-line usando conceitos e tecnologias da economia de API.

A economia de API

Durante as décadas passadas, a necessidade de expor e consumir funções de negócios levava ao desenvolvimento de inúmeras abordagens de integração à medida que as tecnologias evoluíam. Um aspecto desta evolução é a mudança no foco das funções de negócios comerciais dentro de uma empresa para uma perspectiva mais ampla que envolve entidades externas. Isto permitiu que empresas não somente integrem suas operações com parceiros comerciais e fornecedores, mas também usem uma ampla variedade de serviços disponíveis sem a necessidade de desenvolvê-los ou até mesmo de hospedá-los. Outro resultado igualmente importante desta evolução é a facilidade como ela expõe e consome funções de negócios usando tecnologias que são abertas e diferentes tipos de plataformas. Ela também é importante para proteger o modo como os serviços são acessados e usados e para assegurar que eles possam ser ajustados conforme a necessidade, para tornar qualquer negócio da solução pronto.

A economia de API utiliza tecnologias existentes e técnicas de integração conhecidas para tratar desses e de outros pontos, como suporte eficiente de aplicativos móveis e de nuvem. Na verdade, a economia da API torna possível mesmo para empresas pequenas usar serviços de nível mundial que são oferecidos por outras partes. Isto conduz as empresas para além dos limites de seus ambientes de negócios locais e as ajuda a superar limitações na quantidade de investimento de TI que elas poderiam fazer para implementar tudo o que precisam para obter o sucesso.

Aceitar pagamentos on-line é um exemplo de um serviço que muitos negócios exigem para aproveitar ao máximo os canais on-line, como aplicativos móveis e de nuvem. O Bluemix é uma plataforma ideal para desenvolver e implementar esses aplicativos. Vamos ver alguns exemplos de como você pode se beneficiar dos conceitos da economia de API para aceitar pagamentos on-line por meio de seu aplicativo Bluemix.

Arquitetura da solução

Um benefício importante desta solução é sua capacidade de aceitar mais de um provedor de pagamento sem a necessidade de fazer mudanças no aplicativo consumidor. A solução usa o ecossistema do Bluemix para hospedar a API, que é desenvolvida e hospedada usando o IBM API Connect. A figura a seguir ilustra os diferentes componentes do API Connect e sua capacidade de se integrar com diferentes gateways de pagamento.

API Connect components
API Connect components

Os componentes são os seguintes:

  • Gateway de API—Este componente é usado para proteger e substituir qualquer API que esteja hospedada no API Connect. Ele impinge políticas de segurança definidas pelo designer de API.
  • Aplicativo de loopback—É onde a API real é hospedada. Loopback é uma estrutura de StrongLoop desenvolvida no NodeJS que facilita a implementação de APIs.
  • Gerenciador de API—É onde desenvolvedores de aplicativos e designers da API efetuam login para publicar suas APIs para a comunidade ou registrar as APIs para qualquer aplicativo móvel.

Os desenvolvedores de API podem desenvolver vários aplicativos de loopback para acomodar diferentes provedores de serviços de pagamento enquanto expõem APIs consistentes que podem ser chamadas da mesma maneira pelo aplicativo consumidor.

Os desenvolvedores de aplicativos que desenvolvem os aplicativos consumidores localizam essas APIs expostas e as chamam com seus aplicativos.

Explorando serviços de pagamento on-line

Para gateways de pagamento, há uma ampla variedade de provedores de serviços de pagamento que podem ser usados. Os provedores de serviços de pagamento permitem que plataformas e vendedores de e-commerce aceitem pagamentos on-line de seus compradores e alguns oferecem mais do que apenas a capacidade de aceitar pagamentos. Comerciantes e vendedores podem usar qualquer um desses serviços para permitir que seus clientes selecionem o método de pagamento que se adéque às suas necessidades, seja por meio de cartões de crédito ou débito ou por meio de uma conta que eles tenham nos provedores de serviços de pagamento nos quais eles mantêm um saldo ou se conectam a uma conta bancária ou a um cartão de crédito para recarregar esse saldo quando não há fundos suficientes na conta. Existem, atualmente centenas (se não milhares) de provedores de serviços de pagamento no mercado, portanto, escolher um pode ser um pouco confuso—além disso, alguns provedores são mais populares do que outros.

Alguns critérios importantes que os comerciantes devem ter em mente ao escolher um provedor são:

  • Localização—O país do provedor de serviços de pagamento.
  • Recursos oferecidos— O comerciante pode estar apenas buscando uma maneira de aceitar pagamentos, validar métodos de pagamento e coletar dinheiro dos clientes. O comerciante também pode estar buscando outros recursos, como um carrinho de compras.
  • O quão fácil é se integrar com o provedor de serviços de pagamento?—Eles oferecem APIs? Eles requerem um SDK? Quais idiomas estão disponíveis para uso?
  • O quão seguro ele é?—Um dos benefícios de usar um provedor de serviços de pagamento é que ele pode eliminar a complexidade da proteção de pagamentos on-line da lista de pendências do comerciante, no entanto, ele precisa ser confiável e certificado para ser seguro.
  • As taxas que o comerciante precisa pagar—As taxas são por transação ou baseadas em uma assinatura? Existem vários modelos por aí.

Neste tutorial, usamos o PayPal como um exemplo de provedor de serviços de pagamento. O PayPal é um dos provedores de serviços de pagamento mais populares e existe desde 1998. O PayPal contou muito com o redirecionamento da web para sua integração com websites de comerciantes; um comerciante colocava o botão Pagar ou Doar do PayPal em seu site, e os usuários que clicavam nele eram redirecionados ao website do PayPal e, em seguida, retornados ao website do comerciante quando a transação era concluída. Mais recentemente, o PayPal utilizou uma abordagem mais modernizada emitindo um novo mecanismo de integração que usa APIs RESTful. Os desenvolvedores de API agora podem integrar com o PayPal usando APIs gravadas em Java, Node.JS, C#, PHP, Python, Ruby ou cURL. Isto fornece aos comerciantes uma variedade de opções para implementação. Seguiremos essa abordagem e deixaremos o aplicativo de loopback chamar as APIs RESTful do PayPal.

Implementando a solução

Será necessário configurar uma conta de teste para usar o PayPal, pois você não deseja testar seu código em cartões de crédito reais. Efetue login no portal de desenvolvedores do PayPal e, a partir de seu painel, é possível criar uma conta do ambiente de simulação para iniciar o teste. Também é possível usar uma conta existente e permitir que ela seja uma conta do ambiente de simulação. O PayPal, então, fornecerá um crédito e uma conta bancária de teste para iniciar seu desenvolvimento e, o mais importante, um ID de cliente e uma chave secreta do cliente, que são usados para configurar seu aplicativo para que você tenha autorização para chamar suas APIs. Certifique-se de inserir o parâmetro chamado “mode” e fornecer a ele o valor “sandbox”.

Assim que ele for configurado, será possível iniciar a exploração do conjunto extensivo de APIs do PayPal para começar a integração com seus serviços. Neste tutorial, focaremos na API de pagamentos.

Uma maneira muito simples de chamar o pagamento é usar o PayPal sem o login, o que permite que você inclua recursos de pagamento rapidamente em seu website. Para fazer isso, é possível usar o método paypal.creditCard.create . Este método requer que você configure a autorização usando o ID do cliente e o segredo do cliente, que você obteve quando configurou sua conta do ambiente de simulação; ele também requer um objeto de dados que contenha as informações do cartão de crédito, informações sobre o comprador e informações sobre a transação. A seguir há um objeto de dados de amostra no formato JSON que pode ser usado para teste:

var create_payment_json = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card": {
"type": "visa",
"number": "4417119669820331",
"expire_month": "6",
"expire_year": "2025",
"cvv2": "860",
"first_name": "Buyer",
"last_name": "Buyer",
"billing_address": {
"line1": "2211 North First Street",
"city": "San Jose",
"state": "CA",
"postal_code": "95131",
"country_code": "US"
}
}
}]
},
"transactions": [{
"amount": {
"total": "10",
"currency": "USD",
"details": {
"subtotal": "7",
"tax": "1",
"shipping": "2"
}
},
"description": "Description here."
}]
};

 O PayPal e a maioria dos sistemas de pagamento fornecem SDKs auxiliares para facilitar a chamada dessas APIs. Usando o API Connect para expor sua API, é possível empregar a estrutura de loopback, que usa qualquer SDK disponível. O uso do API Connect permite definir mecanismos de segurança diferentes daqueles impostos pelo serviço de backend.

Construa sua API

Agora você está pronto para construir o aplicativo de loopback que chama as APIs do PayPal seguindo essas etapas:

  1. Crie um diretório com o nome da API (como "apicPaymentApi").
  2. Vá para a pasta recém-criada: cd apicPaymentApi.
  3. Digite apic loopback -n apicPaymentApi.
  4. Siga o assistente e digite os atributos a seguir:Attributes
    Attributes
  5. Em seguida, execute o console do API Connect. Para isto, digite o seguinte (enquanto permanece no mesmo diretório): apic eidt. Isto ativará o console.
  6. Efetue login usando seu ID do Bluemix.
  7. Você verá a API recém-criada e o produto criado em sua tela de boas-vindas: newly created                             API
    newly created API
  8. Clique em Modelos.
  9. Clique em Incluir.
  10. Crie o modelo de pagamento conforme mostrado abaixo (nós minimizamos os atributos para simplicidade): Payment model
    Payment model
  11. Ao criar o modelo, as operações também serão criadas para executar operações Create Read Update Delete (CRUD) neste modelo.
  12. Clique em APIs.
  13. Clique na API recém-criada ("apicPaymentApi").
  14. Na área de janela à esquerda, clique em Segurança.
  15. Desmarque clientSecretHeader. Uncheck clientSecretHeader
    Uncheck clientSecretHeader
  16. Clique na guia Propriedades na área de janela à esquerda.
  17. Inclua uma nova propriedade denominada “TARGET_HOST” e modifique o host para que seja sua máquina local. TARGET_HOST property
    TARGET_HOST property
  18. Nos caminhos, navegue para “/payments/replaceOrCreate” (todas as outras operações podem ser removidas). path /payments/replaceOrCreate
    path /payments/replaceOrCreate
  19. Ajuste os parâmetros da operação de postagem para aceitar o modelo de “pagamento”. Post operation parameters
    Post operation parameters
  20. Remova qualquer parâmetro adicional.
  21. Agora você está pronto para criar um método remoto que permita que o código customizado seja executado de acordo com um determinado verbo e caminho.
  22. Navegue para <pathto project>/apicPaymentApi/common/models/payment.js.
  23. Assegure-se de que você tenha o SDK de pagamento do PayPal dentro dos módulos do nó, conforme mostrado aqui: PayPal payment SDK within node modules
    PayPal payment SDK within node modules
  24. Isto pode ser feito incluindo “paypal-rest-sdk” na seção de dependências do arquivo package.json, conforme mostrado aqui:
    "dependencies": {
        "compression": "^1.0.3",
        "cors": "^2.5.2",
        "helmet": "^1.3.0",
        "loopback-boot": "^2.6.5",
        "serve-favicon": "^2.0.1",
        "strong-error-handler": "^1.0.1",
        "loopback-datasource-juggler": "^2.39.0",
        "paypal-rest-sdk": "^1.6.9",
        "loopback": "^2.22.0"
      },
  25. Navegue para common/models/payment.js.
  26. Inclua o código customizado a ser executado quando a API for chamada em um caminho específico com um verbo específico. Eis o código necessário para chamar o pagamento do PayPal usando um cartão de crédito:
    'use strict';
    var paypal = require('paypal-rest-sdk');
    module.exports = function(payment) {
      payment.createpayment= function(data,cb)
      {
        console.log(data);
        paypal.configure({
            'mode': 'sandbox', //sandbox or live
            'client_id': 'clientid',
            'client_secret':’<clientsecret>'
        });
    var result = paypal.payment.create(data, function (error, payment) {
        if (error) {
    		console.log("Error");
            cb(null,payment);
    
            //throw error;
        } else {
            console.log("Create Payment Response");
            console.log(payment);
            cb(null,payment);
        }
    });
    
      };
      payment.remoteMethod('createpayment',{
        accepts: {
            arg: 'data',
            type: 'object',
            http: { source: 'body' }
          },
        returns: { arg:'status',type: 'object' },
        http: { verb: 'post', 'path': '/replaceOrCreate' }
      })
    
    
    };
  27. Agora você está pronto para testar. No terminal apic, digite apic start. Se não houver nenhum erro, você verá algo semelhante ao seguinte, o que indica que sua API está em execução: apic terminal output
    apic terminal output

Teste sua solução

Há várias ferramentas capazes de chamar um serviço REST. Para este artigo, decidimos usar a UI SOAP.

  1. Abra a UI SOAP.
  2. Crie um novo projeto REST.
  3. Para o URI, digite https://localhost:4001/api/payments/replaceOrCreate conforme mostrado aqui: Create a new REST project
    Create a new REST project
  4. Mude o método para “POST": Change method to POST
    Change method to POST
  5. Coloque a mensagem a seguir na carga útil:
    {
            "intent": "sale",
            "payer": {
                "payment_method": "credit_card",
                "funding_instruments": [{
                    "credit_card": {
                        "type": "visa",
                        "number": "1234123412341234",
                        "expire_month": "04",
                        "expire_year": "2021",
                        "cvv2": "874",
                        "first_name": "Joe",
                        "last_name": "Shopper",
                        "billing_address": {
                            "line1": "4605 106a St NW",
                            "city": "Edmonton",
                            "state": "AB",
                            "postal_code": "T6H5H1",
                            "country_code": "CA"
                        }
                    }
                }]
            },
            "transactions": [{
                "amount": {
                    "total": "7",
                    "currency": "CAD",
                    "details": {
                        "subtotal": "5",
                        "tax": "1",
                        "shipping": "1"
                    }
                },
                "description": "This is the payment transaction description."
            }]
        }
  6. Inclua “X-IBM-Client-Secret” como um cabeçalho: X-IBM-Client-Secret
    X-IBM-Client-Secret
  7. Envie a solicitação para a API. A resposta bem-sucedida deve ser semelhante a esta: Click Run
    Click Run

Agora que você possui uma API ativa em sua máquina local, é hora de implementar no Bluemix.

Implemente sua solução no Bluemix

  1. Como você implementará no Bluemix, terá a capacidade de utilizar o Gateway do DataPower, que aprimora a segurança e o desempenho de sua API. Dentro de seu Designer de API, clique em Montar e, em seguida, escolha as políticas do Gateway do DataPower e clique em Salvar. Select                             DataPower Gateway policies
    Select DataPower Gateway policies
  2. Não entraremos em detalhes sobre como criar sua instância do API Connect no Bluemix (é possível localizar essas informações aqui. Assumiremos que você criou um aplicativo e um catálogo e tem seu portal de desenvolvimento em execução.
  3. Ajuste o catálogo e o aplicativo de sua API executando os comandos a seguir:
    apic config:set catalog=apic-catalog://us.apiconnect.ibmcloud.com/orgs/mohabelhcaibmcom-dev/catalogs/dwstore
    apic config:set app=apic-app://us.apiconnect.ibmcloud.com/orgs/mohabelhcaibmcom-dev/apps/apicPaymentApi

    Os valores são obtidos ao criar o aplicativo e o catálogo em sua instância do Bluemix.
  4. A etapa final é publicar sea API. Em seu console do API Designer, clique em Publicar.
  5. Escolha o destino que acabou de criar. Choose your target
    Choose your target
  6. Escolha as opções a seguir: Choose publish options
    Choose publish options
  7. Para verificar se a API foi implementada corretamente, efetue login no Portal do Desenvolvedor. Você deverá ver a confirmação a seguir: Deployment confirmation
    Deployment confirmation

Conclusão

Neste artigo, mostramos como usar o API Connect para implementar uma API que use os gateways de pagamento que estão disponíveis atualmente. Usamos o PayPal SDK como nosso provedor de pagamento. Esta solução funciona com outros gateways de pagamento, que expõem APIs que são consumíveis por meio de serviços da web ou serviços REST. Esta solução pode suportar vários provedores ao mesmo tempo e fornece mais opções para consumir aplicativos enquanto mantém uma maneira consistente de chamá-los usando APIs.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing
ArticleID=1041602
ArticleTitle=Aceite pagamentos on-line no Bluemix usando o API Connect
publish-date=12262016