[JAVA] Une histoire qui a eu du mal avec l'introduction de Web Apple Pay

Une histoire qui a eu du mal avec l'introduction de Web Apple Pay

introduction

Bonjour. Voici T.K. de Navitime Japan Travel Development.

Récemment, de nombreuses applications de paiement sans numéraire sont apparues. Par conséquent, afin de viser un site facile à utiliser pour les utilisateurs En plus des cartes de crédit, nous augmentons les paiements sur le Web.

Parmi les paiements supplémentaires, je voudrais parler de l'introduction difficile d'Apple Pay.

Public cible

Gamme non couverte

table des matières

Mode de communication menant au paiement

Tout d'abord, la première chose avec laquelle j'ai eu du mal a été le mode de communication menant au paiement. Comme la société de crédit, je pensais que ce serait complété en communiquant avec une entreprise. Cependant, avec des méthodes de paiement telles que Apple Pay, il est nécessaire d'établir une communication entre la société Apple Pay et l'agence de paiement.

applepay-certificate.png

Paramètres de SandBox

Viennent ensuite les paramètres SandBox. Apple Pay est utilisé en associant une carte de crédit à l'iPhone. Cependant, il est dangereux de lier votre propre carte de crédit au moment du développement.

C'est pourquoi Apple a une carte de crédit pour la vérification. Veuillez vous référer à ici lors du développement.

Points à craindre

Inscrivez-vous avec Apple Developer

Une authentification entre Apple et l'agent de paiement est requise pour accéder au serveur Apple Pay. La méthode d'enregistrement peut différer légèrement selon l'agence de paiement. Notez s'il vous plaît.

Avec le renouvellement du site Apple, c'est la partie la plus ennuyeuse. Cette inscription peut être divisée en cinq.

  1. Ajouter MerchantId
  2. Enregistrez le fichier CSR
  3. Enregistrement des domaines marchands
  4. Enregistrement du certificat d'identité de commerçant Apple Pay
  5. Création de fichier P12

Ajouter MerchantId

Créez un identifiant de marchand sur Apple Developer (https://developer.apple.com/account/). Si l'identifiant du marchand est fourni par l'agence de paiement, veuillez l'enregistrer. En enregistrant cela, vous pouvez déterminer les informations d'entreprise qu'Apple a réglées.

  1. Transition vers «Certificats, identifiants et profils / identifiants / identifiants de marchand» dans Apple Developer
  2. Appuyez sur "+" dans Identifiants, sélectionnez "Identifiants marchands" et enregistrez merchantId dans Identifier.

Points à craindre

Enregistrer le fichier CSR

Enregistrez le fichier CSR de l'agence de paiement dans Apple Developer pour associer l'agence de paiement à Apple.

  1. Enregistrez le fichier CSR du MerchantId créé par Apple Developer car il a été fourni par l'agence de paiement dans le "Certificat de traitement des paiements Apple Pay".
  2. Téléchargez "apple_pay.cer" à partir de 1 et enregistrez-le auprès de l'agence de paiement.

Points à craindre

Enregistrement des domaines marchands

Enregistrez le domaine du site sur lequel vous souhaitez déployer les paiements Apple Pay. Si vous possédez plusieurs domaines, vous devez vous inscrire dans chaque domaine.

  1. Enregistrez votre domaine dans "Merchant Domains" sous Apple Developer (https://developer.apple.com/account/).
  2. Après l'enregistrement, vous pouvez télécharger "apple-developer-merchantid-domain-association.txt". Placez-le sur le site du domaine enregistré. Cette fois, il sera placé sous "hoge".
  3. Dans les paramètres Apache, définissez ce qui suit et cliquez sur "/.well-known/apple-developer-merchantid-domain-association.txt", le contenu de "apple-developer-merchantid-domain-association.txt" Est affiché.
RewriteRule ^/.well-known/apple-developer-merchantid-domain-association.txt /hoge/apple-developer-merchantid-domain-association.txt [L]
  1. Cliquez sur Vérifier pour terminer l'authentification. Si vous vous inscrivez une fois, il est valable 2 ans.

point

Enregistrement d'un certificat d'identité de commerçant Apple Pay

Il s'agit de la dernière inscription sur le site Apple.

  1. À l'aide du fichier "apple_pay.cer" précédemment créé, créez un fichier "CertificateSigningRequest.certSigningRequest" avec accès par clé. (Référence)
  2. Enregistrez le fichier "CertificateSigningRequest.certSigningRequest" créé dans le "Certificat d'identité du commerçant Apple Pay" du développeur Apple.
  3. Après l'enregistrement, vous pouvez télécharger "merchant_id.cer".

Création de fichier P12

Le fichier P12 est utilisé pour l'authentification du client pendant le développement. Créez "ApplePayMerchantIdentity.p12" à partir de "merchant_id.cer" avec un accès par porte-clés (Reference)

développement de

Le développement a été fait en référence à GitHub de ici. Vous pouvez obtenir un jeton en utilisant ApplePay.js fourni par Apple.

En développement, je m'inquiétais de l'authentification client avec java. "Apple_pay_conf.php, apple_pay_comm.php" décrit sur le site GitHub est décrit en php, et je n'ai pas pu trouver beaucoup de sites de référence pour introduire Apple Pay en java.

Le pem utilisé dans php ne peut pas être utilisé pour l'authentification client en Java. Alors, utilisez le fichier p12 que vous avez créé précédemment.

Si vous créez Java en vous référant au site ici, l'authentification passera et vous pourrez utiliser le token d'Apple Pay.

Vous pourrez effectuer des paiements Apple Pay en utilisant l'API de l'agence de paiement pour ce jeton.

Autres points qui m'inquiétaient

Version JDK

Je peux obtenir les informations de réponse au moment de l'authentification du client Java. Pour une raison quelconque, le phénomène selon lequel seul un certain environnement n'est pas affiché s'est produit.

Quand j'ai vérifié la différence, c'était à cause de la différence de JDK. Si cela ne fonctionne pas, essayez d'augmenter la version JDK.

Sites qui ont introduit Apple Pay

Cette fois, nous avons introduit Apple Pay sur la page SP de LCC et des hôtels. J'espère que vous pourrez vous y référer. https://travel.navitime.co.jp/ja/booking/?reserveType=lcc&cid=qiita.article https://travel.navitime.co.jp/ja/booking/hotel?cid=qiita.article

Résumé

Merci d'avoir lu le long texte jusqu'au bout. L'introduction d'Apple Pay a pris beaucoup de temps pour l'enregistrement et l'authentification. J'espère que de nombreuses personnes seront en mesure d'introduire le paiement en douceur dans cet article.

Recommended Posts

Une histoire qui a eu du mal avec l'introduction de Web Apple Pay
L'histoire de la création d'un proxy inverse avec ProxyServlet
Une histoire remplie des bases de Spring Boot (résolu)
L'histoire du refactoring avec un assistant personnel pour la première fois dans une application Rails
Une histoire que j'ai eu du mal à défier le pro de la concurrence avec Java
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
L'histoire de rendre possible la construction d'un projet qui a été construit par Maven avec Ant
Une histoire à laquelle j'étais accro à deux reprises avec le paramètre de démarrage automatique de Tomcat 8 sur CentOS 8
Je voulais écrire un processus équivalent à une instruction while avec l'API Java 8 Stream
L'histoire du réglage de l'application Android avec libGDX
Une histoire sur la création d'un Builder qui hérite du Builder
[Jackson] Une histoire sur la conversion de la valeur de retour du type BigDecimal avec un sérialiseur personnalisé.
Ecrire un test en mettant en œuvre l'histoire de M. Nabeats dans le monde avec du rubis
[Spring Boot] L'histoire selon laquelle le bean de la classe avec l'annotation ConfigurationProperties n'a pas été trouvé
Représentez graphiquement les informations du capteur de Raspberry Pi et préparez un environnement qui peut être vérifié avec un navigateur Web
À peu près le flux de développement d'applications Web avec Rails.
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
L'histoire du transfert d'un conteneur Docker vers le registre de packages GitHub et Docker Hub avec des actions GitHub
L'histoire de la création d'une version Java du serveur Minecraft avec GCP (et également de la création d'une liste blanche)
Une histoire qui a fini par prendre une pause lors de l'utilisation de la liste liée avec une sensation de légèreté
La première application WEB avec Spring Boot-Making a Pomodoro timer-
Vérifier le fonctionnement de deux rôles avec une application de chat
Une histoire à laquelle j'étais accro avec toString () d'Interface qui était proxy avec JdkDynamicAopProxy
Expliquez les mérites du modèle d'État avec le jugement de notation du film
Un programme qui compte le nombre de mots dans une liste
Introduction de la bibliothèque ff4j qui réalise le basculement de fonctionnalités avec Spring Boot
Trouvez le nombre de jours dans un mois avec Kotlin
[Trading automatique de Bitcoin] Histoire de fonctionnement avec Docker d'AWS, avec notification ON / OFF et ligne avec 1 TAP d'Apple Watch en déplacement
Une histoire bloquée avec NotSerializableException
Une histoire qui m'a fait regretter quand une "NotReadablePropertyException" s'est produite pendant le développement de l'application Spring Boot.
L'histoire selon laquelle un modèle n'est pas une "représentation correcte du monde réel" / la nécessité d'un contexte borné
Représentez graphiquement les informations du capteur de Raspberry Pi en Java et vérifiez-les avec un navigateur Web
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Essayez d'imiter l'idée d'un tableau à deux dimensions avec un tableau à une dimension
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
L'histoire selon laquelle la sortie standard change également fatalement le comportement du programme
L'histoire de toString () commençant par le passage d'un tableau à System.out.println
L'histoire que Tomcat a souffert d'une erreur de timeout dans Eclipse
L'histoire de la création d'un jeu d'Othello de type communication avec Scala.
[Illustration] Recherche de la somme des pièces avec une fonction récursive [Ruby]
L'histoire que j'ai eu du mal parce que je ne pouvais pas faire "Rails db: migrate".
Faisons un custom_cop qui souligne le tremblement du nom
Trois raisons de frustration avant la sortie des services Web
L'histoire selon laquelle les performances de traitement d'ARM d'Open JDK étaient faibles
Une histoire qui résout le problème que REMOTE_ADDR ne peut pas être acquis dans un cluster construit avec Docker Swarm + Traefik (1.7).
Exporter (sortie) une grande quantité de csv comme les informations de journal sur l'application WEB avec l'application Rails
Comment faire fonctionner IGV en utilisant la communication par socket, et l'histoire de la création d'un Ruby Gem en utilisant cette méthode
À propos du sujet qui a tendance à être confondu avec ARG de Dockerfile qui est une construction en plusieurs étapes
L'histoire de l'introduction de Gradle en tant que modernisation d'un système existant qui ne gérait pas de packages
[Édition Java] Histoire de la sérialisation
Ceci et cela de JDK
Créer une application Web avec Javalin
L'histoire de @ViewScoped dévore la mémoire