Exemple de projet qui montre comment intégrer Samsung Pay avec DataTrans
Samsung Pay permet aux commerçants de percevoir les paiements via leur plate-forme de paiement qui relie le portefeuille Samsung Pay et permet aux utilisateurs de s'authentifier via leur appareil mobile. Il permet aux commerçants de recevoir des informations de paiement cryptées qui peuvent être transmises à leur processeur de paiement pour autorisation. Ce guide est destiné aux commerçants qui souhaitent intégrer Samsung Pay avec des Datatrans. Pour plus d'informations sur Samsung Pay Visite: http://www.samsung.com/ch/samsung-pay/
La solution Samsungpay est fabriquée à partir de deux API. Le premier n'est qu'un WebSDK pour déclencher les paiements sur le Web. Le second est une API de serveur à serveur de type repos. Le flux d'application / message est le suivant:
Veuillez noter que ces étapes sont nécessaires pour utiliser l'exemple d'application ainsi que si vous souhaitez utiliser Samsung Pay dans votre environnement productif. Ces étapes nécessitent que vous contactez Samsung.
Accédez à https://us-partner.pay.samsung.com/ et inscrivez-vous. Vous pouvez utiliser ce compte plus tard pour tester sur votre appareil Samsung.
Pour vous assurer que vous ne pouvez décrypter les messages provenant de Samsung, vous devez soumettre un RSE auto-signé pour chaque environnement. Le RSE doit avoir des attributs suivants:
- File extension CSR
- RSA Key Size 2048 bit or higher
- Signature Algorithm: Sha256WithRSAEncryption
Créez un RSE pour votre test et votre environnement de production
De plus, vous devez soumettre votre liste d'adresses IP à Samsung pendant le processus d'intégration. Veuillez nous contacter pour plus d'informations. Soumettez chaque RSE à Samsung. Après avoir vérifié votre compte, les adresses IP et votre CSRS, vous recevrez un service de service et l'accès à leur documentation
Générez votre clé privée
openssl genrsa -out domain.com.key 2048
Générez le RSE avec votre clé privée
openssl req -out CSR.csr -key domain.com.key -new -sha256
Vérifiez votre RSE
openssl req -in CSR.csr -noout -text
L'exemple d'application est une application Spring Boot (https://projects.spring.io/spring-boot/) qui peut être hors de la boîte. Il utilise un tomcat intégré.
$ git clone [email protected]:datatrans/samsungpay-web-sample.git
$ cd samsungpay-web-sample
mvn clean install
Pour décrypter les informations d'identification de paiement envoyées par Samsung, vous devez utiliser votre clé privée au format DER. Voici comment vous le convertissez.
openssl pkcs8 -topk8 -in domain.com.key -outform DER -nocrypt -out rsapriv.der
Faites cela pour chaque clé privée dans chaque environnement. Copiez le fichier sur src/main/resources
Propriété | Description | Déposer |
---|---|---|
server.port | Le port sur lequel le serveur devrait fonctionner | application.properties |
callbackurl | Le rappel utilise Samsung. Assurez-vous que cela est aligné avec votre port de serveur | application.properties |
Merchant.Name | Le nom de votre entreprise. | application.properties |
Merchant. Référence | Ceci est utilisé par Samsung pour afficher les transactions dans l'application Samsungpay | application.properties |
samsung.serviceid | Votre service donné par Samsung | application-dev.properties / application-prod.properties |
datatrans.merterId | Vos Datrans MerchantID | application-dev.properties / application-prod.properties |
Datatrans.sign | Le signe appartenant au marchand | application-dev.properties / application-prod.properties |
Pendant le contact avec Samsung, vous recevrez un exemple d'application Samsung Pay. L'application contiendra des cartes de test, celles-ci ne seront pas facturées par Datatrans mais seront remplacées si un jeton Samsung Pay valide est envoyé comme suit:
Si
cardno = 4242 4242 4242 4242 expm = 12 expy = 18
Consultez src/main/java/ch/datatrans/examples/samsungpay/client/DatatransClient.java
pour voir comment l'autorisation est effectuée.
Exemple de demande:
<? 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 >
Exemple de réponse:
<? 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 >
Un appel réussi renverra l'attribut status="accepted"
de <body>
et trxStatus="response"
de <transaction>
ainsi qu'un nouvel élément <response>
contenant le code-code. Un code de réponse égal à "01" ou "02" indique une transaction autorisée. Elements Aliascc, Expy et Expm ne seront retournés que si le marchand utilise des alias par carte de crédit.
API DATATRANS