Essayez le SDK Python LINE Pay

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.

Connaissances préalables

Qu'est-ce que le SDK

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.

Flux de paiement de l'API LINE Pay (v3)

line_pay_api02.jpg Citation: https://dev.classmethod.jp/articles/devio-cafe-line/

line_pay_v3_flow.png 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)

ldgq20200720ハンズオン.png

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.

Préparation préalable

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.

Confirmation de transaction sur Sandbox

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 ...).

スクリーンショット 2020-11-02 19.15.53.png

スクリーンショット 2020-11-02 19.17.21.png

Tout d'abord, clonez ou téléchargez le SDK

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

Paiement général

基本的にこのSDKは試したい決済流れの.pyファイルをRunさせて、xxxxx.ngrok.io/requestにアクセスすることでその流れを試せる作りになっているようだ。

Paiement général → remboursement

$ 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 ...).

スクリーンショット 2020-11-02 19.26.59.png

L'écran de paiement simulé sandbox s'ouvre, alors appuyez sur PAY NOW

スクリーンショット 2020-11-02 19.27.22.png

Une fois le paiement effectué, vous serez redirigé vers l'écran qui affiche le résultat du paiement.

スクリーンショット 2020-11-02 19.27.50.png

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.

スクリーンショット 2020-11-02 19.38.09.png

スクリーンショット 2020-11-02 19.38.39.png

Paiement général → capture

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 ↓ スクリーンショット 2020-11-02 20.02.56.png

Répartition de la transaction après la capture ↓ スクリーンショット 2020-11-02 20.04.47.png

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.

Paiement automatique

$ 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

Pourquoi toutes les URL d'accès / demande?

Cela peut être une opinion amateur, mais je me demandais pourquoi je ne pouvais pas accéder à chaque fichier HTML du fichier. Cependant, dans le cas de Python (ou Flask), l'URL de la route est déterminée dans le fichier py comme indiqué ci-dessous, vous ne pouvez donc accéder qu'ici. Le fichier HTML sous templates est un fichier HTML que le programme peut appeler comme `return render_template (" request.html ", result = response) ʻin le fichier py.

xxx.py


@app.route("/request", methods=['GET'])
def pay_request():
    #réduction
    return render_template("request.html", result=response)

référence

--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

Essayez le SDK Python LINE Pay
Essayez LINE Notify avec Python
Essayez Python
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Essayez d'utiliser le module Python Cmd
Charger le SDK Python distant avec IntelliJ
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
Dialogflow (anciennement: API.AI) Essayez d'utiliser le SDK Python #dialogflow
Travailler avec OpenStack à l'aide du SDK Python
[Python] Essayez pydash de la version Python de lodash
Lisez le fichier ligne par ligne avec Python
Lisez le fichier ligne par ligne avec Python
Python amateur tente de résumer la liste ①
[Python] Lire la ligne spécifiée dans le fichier
Python> essayez: / sauf:
LINE heroku python
Essayez de résoudre le problème de l'héritage de classe Python
Essayez de résoudre le diagramme homme-machine avec Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Python: essayez d'utiliser l'interface utilisateur sur Pythonista 3 sur iPad
Essayez d'utiliser le framework Web Python Tornado Partie 1
Essayez Progate Free Edition [Python I]
Essayez d'utiliser LINE Notify pour le moment
Essayez CI le code python poussé sur GitHub.
Essayez d'utiliser le module de collections (ChainMap) de python3
Essayez d'utiliser le framework Web Python Tornado Partie 2
Essayez d'implémenter la méthode Monte Carlo en Python
Appeler Polly à partir du kit SDK AWS pour Python
Essayez d'accéder à l'API YQL directement depuis Python 3
Essayez d'utiliser l'API DropBox Core avec Python
Trouvez le maximum de Python
Essayez de gratter avec Python.
Essayez de résoudre le livre des défis de programmation avec python3
python essayez ~ sauf ~ autre
[AWS IoT] Enregistrer des éléments dans AWS IoT à l'aide du SDK AWS IoT Python
Essayez de traduire avec Python tout en conservant la mise en page PDF
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
le zen de Python
Essayez Debian + Python 3.4 + django1.7 ……
Essayez gRPC en Python
[Python] Fractionner la date
Essayez 9 tranches en Python
Essayez d'utiliser Tweepy [Python2.7]
Python essayer / sauf mémo
Essayez de traduire le manuel de science des données Python en japonais
Essayez de gratter les données COVID-19 Tokyo avec Python
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Essayez d'obtenir la liste des fonctions du paquet Python> os
Une note sur l'utilisation de l'API Facebook avec le SDK Python
Essayez d'utiliser le framework Web Python Django (2) - Regardez setting.py
[Hyperledger Iroha] Remarques sur l'utilisation du SDK Python
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
"Laissez Python faire les choses ennuyeuses" Exercice ~ Command Line Mailer ~
Google recherche la chaîne sur la dernière ligne du fichier en Python