Il s'agit d'un mémorandum de mise en œuvre de la fonction d'enregistrement / modification / suppression de carte dans l'API PAY.JP. Cette fois, nous résumerons la procédure jusqu'à l'acquisition des jetons en guise de préparation à la mise en œuvre.
Si vous avez des erreurs, nous vous serions reconnaissants de bien vouloir demander une modification.
Au fait, payjp.js contient de nombreux articles sur la v1, mais il convient de noter qu'il existe de nombreuses parties différentes de la v2 actuelle.
# OS Version
ProductName: Mac OS X
ProductVersion: 10.15.7
BuildVersion: 19H2
# Ruby Version
ruby: 2.6.5p114
Rails: 6.0.3.3
Sélectionnez ʻAPI` sur l'écran après l'enregistrement / la connexion. Il existe une «clé de test» et une «clé de production», mais utilisez la «clé de test».
Gemfile
gem 'payjp'
gem 'dotenv-rails'
dotenv-rails
est un joyau qui gère les variables d'environnement, donc ce n'est pas obligatoire, mais prenons la forme de ne pas écrire la clé privée directement dans le code.
N'oubliez pas «bundle install» après avoir écrit.
Créez un fichier .env
dans le répertoire de l'application et écrivez comme suit.
.env
PAYJP_SECRET_KEY = 'Tester la clé privée confirmée plus tôt'
PAYJP_PUBLIC_KEY = 'Tester la clé publique confirmée plus tôt'
En faisant cela, la clé peut être rendue variable, par exemple, la clé de test peut être exprimée en écrivant ʻENV [PAYJP_SECRET_KEY] . Vous pouvez vérifier le fonctionnement avec
rails console`.
terminal
[1] pry(main)> require 'dotenv-rails'
=> true
[2] pry(main)> ENV['PAYJP_SECRET_KEY']
=> "sk_test_hogehoge"
Soit dit en passant, si le nom du fichier est «.env.development», c'est un environnement de développement, et s'il s'agit de «.env.production», c'est un environnement de production. Vous pouvez utiliser des variables pour chaque environnement sans changer le code. Voir le github officiel (https://github.com/bkeepers/dotenv) pour plus de détails.
* Ne pas pousser les fichiers .env vers github. Définissons-le sur .gitignore. </ font>
Créez un modèle de carte.
terminal
$ rails g model card
Ce que vous devez enregistrer en tant que données reçues de PAY.JP est la colonne pour enregistrer l'ID client et l'ID de la carte. Avec ces deux, vous pouvez importer la plupart des données. Le code ci-dessous est également lié au «modèle utilisateur».
migrationfile
class CreateCards < ActiveRecord::Migration[6.0]
def change
create_table :cards do |t|
t.reference :user, null: false
t.string :customer_id, null: false
t.string :card_id, null: false
t.timestamps
end
end
end
N'oubliez pas de migrer.
terminal
$ rails db:migrate
Ceci est presque une copie complète du guide officiel (https://pay.jp/docs/payjs-guidance). Officiellement, j'utilise onclick pour déclencher la génération de jetons, mais dans mon cas, cela n'a pas fonctionné, j'ai donc utilisé AddEventListener. Pour le moment, affichez le jeton et vérifiez le fonctionnement.
card_form.js
//Exécuter lorsque le chargement du DOM est terminé
document.addEventListener('DOMContentLoaded', () => {
//Enregistrez la clé publique et obtenez l'objet de départ
var payjp = Payjp('pk_test_hogehoge')
//Obtient les éléments. Si vous souhaitez préparer plusieurs formulaires sur la page, veuillez en obtenir plusieurs
var elements = payjp.elements()
// element(Unité de formulaire d'entrée)Générer
var numberElement = elements.create('cardNumber', {style: style})
var expiryElement = elements.create('cardExpiry', {style: style})
var cvcElement = elements.create('cardCvc', {style: style})
//Placer l'élément sur DOM
numberElement.mount('#number-form')
expiryElement.mount('#expiry-form')
cvcElement.mount('#cvc-form')
//Préparer une fonction pour générer un jeton lorsque le bouton est enfoncé
create_token.addEventListener("click", function() {
payjp.createToken(numberElement).then(function(r) {
document.querySelector('#token').innerText = r.error ? r.error.message : r.id
})
});
})
Pour le moment, je vais faire une description minimum pour afficher le formulaire. Réécrivons-le plus tard comme vous le souhaitez.
haml:_card_form.html.haml
:css
.Payjs__outer {
border: solid 1px;
}
-#En fait l'application.html.Il est préférable de l'écrire dans la partie en-tête telle que haml.
= javascript_include_tag 'https://js.pay.jp/v2/pay.js'
.Payjs
.Payjs__outer{id: "number-form"}
.Payjs__outer{id: "expiry-form"}
.Payjs__outer{id: "cvc-form"}
%button{id: "create_token"}
Création de jetons
%span#token
jeton:
Jusqu'à présent cette fois, je voudrais résumer la prochaine fois la mise en œuvre de la fonction d'enregistrement de carte.
Après tout, l'API et le guide officiels sont les plus puissants. Cependant, avant de vous habituer à le lire, vous pouvez vous en faire une idée en regardant la procédure de mise en œuvre réelle sur Qiita, etc.
Référence de l'API PAY.JP https://pay.jp/docs/api/
Guide de l'utilisateur de l'API PAY.JP | PAY.JP
https://pay.jp/docs/started
Le blog officiel est également utile, mais sachez que les informations sont souvent anciennes et conformes à la v1.
Utilisation très basique de PAY.JP (édition Ruby) - Blog d'ingénierie PAY.JP
https://payjp.hatenablog.com/entry/2017/11/21/191916
Autres articles auxquels j'ai fait référence
Payjp.js V2 avec Rails Implémentation de la fonction d'enregistrement de carte de crédit Application Flima --Qiita https://qiita.com/ta9301/items/6b736390c49c3f40edb6
[HowTo] De la mise en œuvre de la fonction d'achat de produit à l'aide de Pay.jp à la configuration après l'achat du produit https://qiita.com/Tatsu88/items/eb420e372077939a4627
Recommended Posts