Projeto de amostra que mostra como integrar a Samsung Pay com os datatrans
O Samsung Pay permite que os comerciantes colete pagamentos por meio de sua plataforma de pagamento que conecta a carteira Samsung Pay e permite que os usuários se autentiquem através de seu dispositivo móvel. Ele permite que os comerciantes recebam informações de pagamento criptografadas que podem ser encaminhadas ao seu processador de pagamento para autorização. Este guia é destinado a comerciantes que gostariam de integrar o Samsung Pay aos Datatrans. Para mais informações sobre a visita de pagamento da Samsung: http://www.samsung.com/ch/samsung-pay/
A solução SamsungPay é feita de duas APIs. O primeiro é apenas um WebSDK para acionar os pagamentos na web. O segundo é uma API de servidor para servidor do tipo Rest. O fluxo de aplicação/ mensagem é o seguinte:
Observe que essas etapas são necessárias para usar o aplicativo de amostra e também se você quiser usar o Samsung Pay em seu ambiente produtivo. Essas etapas exigem que você entre em contato com a Samsung.
Navegue para https://us-partner.pay.samsung.com/ e inscreva-se. Você pode usar esta conta posteriormente para testar no seu dispositivo Samsung.
Para garantir que você possa descriptografar as mensagens provenientes da Samsung, você precisa enviar uma RSE auto -assinada para cada ambiente. A RSE deve ter seguintes atributos:
- File extension CSR
- RSA Key Size 2048 bit or higher
- Signature Algorithm: Sha256WithRSAEncryption
Crie um CSR para o seu ambiente de teste e produção
Além disso, você precisa enviar sua lista de endereços IP para a Samsung durante o processo de integração. Entre em contato para obter mais informações. Envie cada CSR para a Samsung. Depois de verificar sua conta, os endereços IP e seus CSRs, você receberá um ID de serviço e acesso à documentação deles
Gerar sua chave privada
openssl genrsa -out domain.com.key 2048
Gere a RSE com sua chave privada
openssl req -out CSR.csr -key domain.com.key -new -sha256
Verifique sua CSR
openssl req -in CSR.csr -noout -text
O aplicativo de amostra é um aplicativo de inicialização da mola (https://projects.spring.io/spring-boot/) que pode ser executado para fora da caixa. Ele usa um tomcat incorporado.
$ git clone [email protected]:datatrans/samsungpay-web-sample.git
$ cd samsungpay-web-sample
mvn clean install
Para descriptografar as credenciais de pagamento enviadas pela Samsung, você precisa usar sua chave privada no formato Der. Aqui está como você o converte.
openssl pkcs8 -topk8 -in domain.com.key -outform DER -nocrypt -out rsapriv.der
Faça isso para cada chave privada em cada ambiente. Copie o arquivo para src/main/resources
Propriedade | Descrição | Arquivo |
---|---|---|
Server.port | A porta que o servidor deve estar em execução | Application.Properties |
callbackurl | O retorno de chamada que a Samsung usa. Verifique se isso está alinhado com a porta do servidor | Application.Properties |
Merchant.name | Nome da sua empresa. | Application.Properties |
Merchant.Reference | Isso é usado pela Samsung para exibir transações no aplicativo Samsungpay | Application.Properties |
Samsung.ServiceId | Seu serviço dado pela Samsung | Application-dev.properties / Application-prod.properties |
datatrans.merchantId | Seus DataTrans MerchantId | Application-dev.properties / Application-prod.properties |
datatrans.sign | O sinal pertencente ao MerchantId | Application-dev.properties / Application-prod.properties |
Durante o contato com a Samsung, você receberá um amostra do aplicativo Samsung Pay. O aplicativo conterá cartões de teste, eles não serão cobrados pelos datatrans, mas serão substituídos se um token Pay Samsung válido for enviado da seguinte forma:
Se
Cardno = 4242 4242 4242 4242 EXPM = 12 Expy = 18
Confira src/main/java/ch/datatrans/examples/samsungpay/client/DatatransClient.java
para ver como a autorização é feita.
Solicitação de amostra:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< authorizationService version = " 1 " >
< body merchantId = " $merchantId " >
< transaction refno = " $refno " >
< request >
< samsungPayData > <![CDATA[ $token ]]> </ samsungPayData >
< reqtype >NOA</ reqtype >
< transtype >05</ transtype >
< sign >$sign</ sign >
</ request >
</ transaction >
</ body >
</ authorizationService >
Resposta da amostra:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< authorizationService version = " 1 " >
< body merchantId = " $merchantId " status = " accepted " >
< transaction refno = " $refno " trxStatus = " response " >
< request >
< samsungPayData > <![CDATA[ $token ]]> </ samsungPayData >
< reqtype >NOA</ reqtype >
< transtype >05</ transtype >
< sign >$sign</ sign >
</ request >
< response >
< responseCode >01</ responseCode >
< responseMessage >Authorized</ responseMessage >
< uppTransactionId >160823101329060450</ uppTrasactionId >
< authorizationCode >538050451</ authorizationCode >
< acqAuthorizationCode >101538</ acqAuthorizationCode >
< aliasCC >70119122433810042</ aliasCC >
< expy >18</ expy >
< expm >12</ expm >
</ response >
</ transaction >
</ body >
</ authorizationService >
Uma chamada bem -sucedida retornará o status do atributo de <body>
status="accepted"
e <transaction>
trxStatus="response"
bem como um novo elemento <response>
contendo o Responsecode. Um Responsecode igual a "01" ou "02" indica uma transação autorizada. Elementos AliASCC, Expy e EXPM serão devolvidos apenas se o comerciante usar aliases do cartão de crédito.
DataTrans APIs