Un mémo pour comprendre et utiliser le SDK créé par M. Kagawa @ sumihiro3, un enseignant de LINE Pay. https://github.com/sumihiro3/line-pay-sdk-python/tree/master/examples
J'ai fait un démarreur pour un paiement général unique uniquement, veuillez donc utiliser ici.
Le SDK est un package de programmes, d'API, d'exemples de code, etc. qui vous permet de développer des applications avec moins d'effort. Les développeurs peuvent utiliser le SDK pour implémenter de nouvelles fonctionnalités dans leurs applications sans avoir à comprendre les mécanismes détaillés de la technologie qui les permet.
Citation: https://dev.classmethod.jp/articles/devio-cafe-line/
Citation: https://dev.classmethod.jp/articles/line-pay-v3-lambda/
C'est un peu déroutant, mais SP est un fournisseur de services et nous sommes un opérateur commercial.
① Demandez à Pay d'émettre une URL de paiement à l'aide de l'API Request ② Demandez à l'utilisateur de lancer l'URL et appuyez dessus pour l'approuver sur l'écran de paiement dans l'exemple. ③ Ensuite, nous recevrons une notification approuvée de notre opérateur commercial (application ou système), qui est le SP, nous allons donc effectuer le paiement à l'aide de l'API Confirm.
Normalement, cela confirmera les ventes et nous n'avons pas à utiliser ce que l'on appelle l'API Capture. Cependant, il semble qu'il y ait des cas où vous souhaitez faire une étape entre la fin du paiement et la confirmation des ventes, et dans ce cas, vous devez effectuer vous-même le processus de confirmation des ventes à l'aide de l'API Capture comme indiqué ci-dessous.
Si "options.payment.capture" de l'API Request est défini sur false, le règlement sera séparé de l'autorisation et de la confirmation de vente, et le statut du règlement restera dans l'état d'attente de confirmation de vente (autorisation) même si le règlement est terminé. Pour confirmer les ventes, vous devez appeler l'API Capture pour confirmer les ventes.
request_options = {
//réduction
"options": {
"payment": {
"capture": False
}
},
//réduction
response = api.request(request_options)
C'est le flux de paiement de base de l'API LINE Pay v3, mais du point de vue de l'utilisateur, nous sommes des ingénieurs débutants car il n'y a que trois étapes: "Payer avec LINE Pay" → "Aller à l'écran de paiement" → "Appuyer sur le bouton de paiement". Je pense qu'il est difficile d'imaginer que le traitement ci-dessus est effectué dans les coulisses. C'est un SDK fou, donc je pense que c'est normal de l'utiliser même si vous ne connaissez pas ce domaine.
Cependant, si vous le faites avec Sandbox, ce sera différent du comportement réel de Pay, et l'affichage du paiement automatique (abonnement) sera le même que celui du paiement général, donc ce sera compliqué. Je me demande si LINE va créer un compte qui peut être testé avec le même comportement.
Même si vous vous connectez à la boutique des membres MyPage avec votre compte Sandbox, aucun historique des transactions ne sera enregistré sur cet écran. Une fois connecté, cliquez sur le lien Sandbox
en haut à droite pour voir l'historique des transactions des paiements effectués avec Sandbox (le premier écran semble n'avoir d'autre utilité que d'obtenir la clé de verrouillage ...).
Tout d'abord, clonez le référentiel GitHub ou Download et décompressez-le.
Accédez à ce répertoire dans le terminal
$ cd ine-pay-sdk-python-master
Installez les bibliothèques requises avec pip install
$ pip install -r requirements.txt
Créez un fichier .env
en copiant le fichier .env.sample
$ cp ./.env.sample ./.env
Rendre le port 8000 accessible par URL externe avec ngrok
$ ngrok http 8000
Modifiez le fichier .env
avec n'importe quel éditeur tel que VSCode, Atom, vim, emacs
Entrez le domaine émis par ngrok et le Channes_ID et la clé secrète du canal qui peuvent être confirmés à partir de la gestion du verrouillage de paiement> clé de verrouillage de la boutique des membres de LINE Pay MyPage.
HOST_NAME=xxxxx.ngrok.io
LINE_PAY_CHANNEL_ID=YOUR_LINE_PAY_CHANNEL_ID
LINE_PAY_CHANNEL_SECRET=YOUR_LINE_PAY_CHANNEL_SECRET
基本的にこのSDKは試したい決済流れの.py
ファイルをRunさせて、xxxxx.ngrok.io/request
にアクセスすることでその流れを試せる作りになっているようだ。
$ python request-confirm-refund.py
Si vous accédez à https: // xxxxx.ngrok.io / request
dans cet état
Lorsque vous appuyez sur paymentUrl
(car il s'agit d'un sandbox), vous serez redirigé vers l'écran ci-dessous, alors connectez-vous à LINE (lorsque vous essayez d'accéder à l'URL ci-dessus sur mobile ou essayez d'effectuer un paiement en scannant le code QR, cela échoue pour une raison quelconque ...).
L'écran de paiement simulé sandbox s'ouvre, alors appuyez sur PAY NOW
Une fois le paiement effectué, vous serez redirigé vers l'écran qui affiche le résultat du paiement.
Cette fois, il s'agit d'un fichier py que vous pouvez essayer de rembourser, donc si vous appuyez sur le lien REMBOURSEMENT
en bas, vous pouvez traiter le remboursement et vous serez redirigé vers l'écran suivant.
La répartition des transactions sur l'écran Sandbox du magasin membre MyPage à ce moment est la suivante, et le n ° 1 supérieur est enregistré comme processus de règlement et le n ° 2 inférieur est enregistré comme processus d'annulation de règlement.
En définissant options.payment.capture dans request_options sur False, vous pouvez oser attendre la confirmation de vente (autorisation) après le règlement, puis essayer ultérieurement la confirmation de vente (capture) à l'aide du fichier ʻauthorizations-capture.py` de l'API Capture Courir.
authorizations-capture.py
"options": {
"payment": {
"capture": False
}
},
$ python authorizations-capture.py
De même, si vous accédez à https: // xxxxx.ngrok.io / request
et effectuez un paiement, vous serez redirigé vers l'écran avec le lien de capture.
La répartition des transactions du magasin membre MyPage à ce moment est la suivante.
Répartition de la transaction après règlement ↓
Répartition de la transaction après la capture ↓
Le processus de confirmation des ventes devrait également être possible à partir de cet écran, mais pour une raison quelconque, il n'y a pas de bouton de confirmation des ventes lors de l'utilisation de ce SDK. Est-ce parce que c'est un bac à sable?
Checkout
Checkout est une API qui vous permet d'effectuer des paiements, y compris l'adresse d'expédition et les frais d'expédition lorsque vous effectuez des paiements avec EC, etc., mais cette API ne peut pas être utilisée dans l'environnement Sandbox et les magasins membres officiels examinent également son utilisation. Il semble donc que ce SDK n'ait pas de fichier py à essayer.
$ python request-confirm-pre_approved.py
Si vous accédez à https: // xxxxx.ngrok.io / request
de la même manière et effectuez un paiement, vous pouvez obtenir la clé de registre pour le paiement automatique après le paiement. Il semble que le premier paiement et l'acquisition de RegKey s'effectuent en même temps que l'utilisation de LINE Pay (Sandbox ne reproduit pas le chèque dans le flux de paiement automatique d'origine ...).
Vous pouvez effectuer des paiements automatiques à l'aide de l'API RegKey et Pay Preapproved en cliquant sur le lien ci-dessous. Cependant, le décompte des transactions de la boutique membre MyPage n'enregistre pas la transaction par règlement automatique. Est-ce aussi Sandbox?
Le déroulement du paiement automatique formel LINE Pay est le suivant. https://youtu.be/KdQLm88nl2Q
xxx.py
@app.route("/request", methods=['GET'])
def pay_request():
#réduction
return render_template("request.html", result=response)
https://dev.classmethod.jp/articles/linepay-regkey/
https://qiita.com/sotozaki/items/e178f5ec3c34aa7b1b17
--RegKey est valide pendant 180 jours --Il existe une API pour vérifier si RegKey est valide, mais il n'y a aucun moyen de connaître la date d'expiration
- Les utilisateurs peuvent expirer à partir de l'écran des paramètres --Dans l'environnement sandbox, la date d'expiration est définie sur 1 jour
La date d'expiration de l'utilisateur est probablement ici
Lancez LINE Pay depuis le portefeuille de l'application LINE (lancez en tant qu'application LIFF) Appuyez sur le paiement automatique en bas Si vous vous abonnez dans l'environnement de production, vous pouvez le gérer ici. Notez que la clé de registre dans Sandbox ne s'affiche pas du tout.Recommended Posts