Probieren Sie das Python LINE Pay SDK aus

Ein Memo zum Verständnis und zur Verwendung des SDK, das von Herrn Kagawa @ sumihiro3, einem Lehrer von LINE Pay, erstellt wurde. https://github.com/sumihiro3/line-pay-sdk-python/tree/master/examples

Ich habe einen Starter nur für die einmalige allgemeine Zahlung gemacht, verwenden Sie also bitte hier.

Vorausgesetztes Wissen

Was ist SDK?

Das SDK ist ein Paket aus Programmen, APIs, Beispielcode usw., mit dem Sie Anwendungen mit weniger Aufwand entwickeln können. Entwickler können das SDK verwenden, um neue Funktionen in ihre Anwendungen zu implementieren, ohne die detaillierten Mechanismen der Technologie verstehen zu müssen, die sie ermöglicht.

Zahlungsfluss der LINE Pay API (v3)

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

line_pay_v3_flow.png Zitat: https://dev.classmethod.jp/articles/line-pay-v3-lambda/

Es ist ein wenig verwirrend, aber SP ist ein Dienstleister und wir sind ein Unternehmer.

① Lassen Sie Pay eine Zahlungs-URL über die Anforderungs-API ausgeben ② Bitten Sie den Benutzer, die URL zu werfen und auf sie zu tippen, um sie auf dem Zahlungsbildschirm im Beispiel zu genehmigen. ③ Anschließend erhalten wir eine genehmigte Benachrichtigung von unserem Geschäftsbetreiber (App oder System), dem SP, sodass wir die Zahlung über die Bestätigungs-API abschließen.

Normalerweise bestätigt dies den Verkauf, und wir müssen keine sogenannte Capture-API verwenden. Es scheint jedoch einen Fall zu geben, in dem Sie einen Schritt zwischen dem Abschluss der Zahlung und der Bestätigung des Verkaufs ausführen möchten. In diesem Fall müssen Sie den Verkaufsbestätigungsprozess selbst mithilfe der Capture-API ausführen, wie unten gezeigt.

Wenn "options.payment.capture" der Anforderungs-API auf "false" gesetzt ist, wird die Abrechnung von der Autorisierung und der Verkaufsbestätigung getrennt, und der Abrechnungsstatus bleibt auch nach Abschluss der Abrechnung im Wartezustand "Verkaufsbestätigung" (Autorisierung). Um Verkäufe zu bestätigen, müssen Sie die Capture-API aufrufen, um Verkäufe zu bestätigen.

request_options = {
//Kürzung
    "options": {
        "payment": {
            "capture": False
        }
    },
//Kürzung
response = api.request(request_options)

ldgq20200720ハンズオン.png

Dies ist der grundlegende Zahlungsfluss von LINE Pay API v3, aber aus Sicht des Benutzers sind wir Anfänger, da es nur drei Schritte gibt: "Bezahlen mit LINE Pay" → "Zum Zahlungsbildschirm wechseln" → "Drücken Sie die Zahlungstaste". Ich denke, es ist schwer vorstellbar, dass die obige Verarbeitung hinter den Kulissen erfolgt. Es ist ein verrücktes SDK, daher denke ich, dass es in Ordnung ist, es zu verwenden, auch wenn Sie diesen Bereich nicht kennen.

Vorbereitungen

Wenn Sie dies jedoch mit Sandbox tun, unterscheidet es sich vom tatsächlichen Verhalten von Pay, und die Anzeige der automatischen Zahlung (Abonnement) entspricht der allgemeinen Zahlung, sodass dies kompliziert ist. Ich frage mich, ob LINE ein Konto erstellen wird, das mit demselben Verhalten getestet werden kann.

Transaktionsbestätigung auf Sandbox

Selbst wenn Sie sich mit Ihrem Sandbox-Konto beim Mitgliederspeicher MyPage anmelden, wird auf diesem Bildschirm kein Transaktionsverlauf aufgezeichnet. Klicken Sie nach dem Anmelden oben rechts auf den Link "Sandbox", um den in Sandbox festgelegten Transaktionsverlauf anzuzeigen (der erste Bildschirm scheint keine andere Verwendung zu haben, als den Verriegelungsschlüssel zu erhalten ...).

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

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

Zuerst SDK klonen oder herunterladen

Klonen Sie zunächst das GitHub-Repository oder Download und entpacken Sie es.

Wechseln Sie in dieses Verzeichnis im Terminal

$ cd ine-pay-sdk-python-master

Installieren Sie die erforderlichen Bibliotheken mit pip install

$ pip install -r requirements.txt

Erstellen Sie eine .env-Datei, indem Sie die .env.sample-Datei kopieren

$ cp ./.env.sample ./.env

Machen Sie Port 8000 mit ngrok über eine externe URL zugänglich

$ ngrok http 8000

Bearbeiten Sie die .env-Datei mit einem beliebigen Editor wie VSCode, Atom, vim, emacs Geben Sie die von ngrok ausgegebene Domain und die Channes_ID und den Channel Secret Key ein, die über die Zahlungsverriegelungsverwaltung> Verriegelungsschlüssel des LINE Pay-Mitgliederspeichers MyPage bestätigt werden können.

HOST_NAME=xxxxx.ngrok.io
LINE_PAY_CHANNEL_ID=YOUR_LINE_PAY_CHANNEL_ID
LINE_PAY_CHANNEL_SECRET=YOUR_LINE_PAY_CHANNEL_SECRET

Allgemeine Zahlung

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

Allgemeine Zahlung → Rückerstattung

$ python request-confirm-refund.py

Wenn Sie in diesem Status auf "https: // xxxxx.ngrok.io / request" zugreifen

Wenn Sie auf "PaymentUrl" klicken (da es sich um eine Sandbox handelt), werden Sie zum folgenden Bildschirm weitergeleitet. Melden Sie sich daher bei LINE an (wenn Sie versuchen, auf die oben genannte URL auf dem Handy zuzugreifen oder eine Zahlung durch Scannen des QR-Codes vorzunehmen, schlägt dies aus irgendeinem Grund fehl ...).

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

Der Sandbox-Mock-Zahlungsbildschirm wird geöffnet. Drücken Sie daher "JETZT ZAHLEN"

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

Wenn die Zahlung abgeschlossen ist, werden Sie zu dem Bildschirm weitergeleitet, auf dem das Zahlungsergebnis angezeigt wird.

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

Diesmal handelt es sich um eine PY-Datei, die Sie erstatten können. Wenn Sie also unten auf den Link "RÜCKERSTATTUNG" klicken, können Sie die Rückerstattung verarbeiten und werden zum nächsten Bildschirm weitergeleitet.

Die Transaktionsaufteilung auf dem Sandbox-Bildschirm des Mitgliedsspeichers MyPage ist zu diesem Zeitpunkt wie folgt, und die obere Nr. 1 wird als Abrechnungsprozess und die untere Nr. 2 als Abrechnungsstornierungsprozess aufgezeichnet.

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

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

Allgemeine Zahlung → Erfassung

Wenn Sie options.payment.capture in request_options auf False setzen, können Sie es wagen, nach der Zahlung auf die Verkaufsbestätigung (Autorisierung) zu warten und später die Verkaufsbestätigung (Capture) mithilfe der Capture-API in der Datei authorizations-capture.py zu versuchen. Lauf.

authorizations-capture.py


        "options": {
            "payment": {
                "capture": False
            }
        },
$ python authorizations-capture.py

Wenn Sie auf "https: // xxxxx.ngrok.io / request" zugreifen und eine Zahlung vornehmen, werden Sie auf den Bildschirm mit dem Link zur Erfassung weitergeleitet.

Die Transaktionsaufschlüsselung des Mitgliedsspeichers MyPage ist zu diesem Zeitpunkt wie folgt.

Transaktionsaufschlüsselung nach Abrechnung ↓ スクリーンショット 2020-11-02 20.02.56.png

Transaktionsaufschlüsselung nach Erfassung ↓ スクリーンショット 2020-11-02 20.04.47.png

Der Verkaufsbestätigungsprozess sollte auch über diesen Bildschirm möglich sein, aber aus irgendeinem Grund gibt es bei Verwendung dieses SDK keine Schaltfläche zur Verkaufsbestätigung. Ist es, weil es eine Sandbox ist?

Checkout

Checkout ist eine API, mit der Sie Zahlungen einschließlich Versandadresse und Versandgebühr bei Zahlungen mit EC usw. vornehmen können. Diese API kann jedoch nicht in der Sandbox-Umgebung verwendet werden, und offizielle Mitgliedsgeschäfte überprüfen auch ihre Verwendung. Es scheint also, dass dieses SDK keine Py-Datei zum Ausprobieren hat.

Automatische Zahlung

$ python request-confirm-pre_approved.py

Wenn Sie auf die gleiche Weise auf "https: // xxxxx.ngrok.io / request" zugreifen und eine Zahlung vornehmen, können Sie den Registrierungsschlüssel für die automatische Zahlung nach der Zahlung erhalten. Es scheint, dass die erste Zahlung und der Erwerb von RegKey gleichzeitig mit der Verwendung von LINE Pay erfolgen (Sandbox reproduziert den Scheck nicht im ursprünglichen automatischen Zahlungsfluss ...).

Sie können automatische Zahlungen mit RegKey und Pay Preapproved API ausführen, indem Sie auf den unten stehenden Link klicken. Die Transaktionsaufschlüsselung des Mitgliedsspeichers MyPage erfasst die Transaktion jedoch nicht durch automatische Abrechnung. Ist das auch Sandbox?

Der Ablauf der formellen automatischen Zahlung von LINE Pay ist wie folgt. https://youtu.be/KdQLm88nl2Q

Warum sind alle Zugriffs-URLs / Anfragen?

Dies mag eine Amateur-Meinung sein, aber ich habe mich gefragt, warum ich nicht auf jede HTML-Datei in der Datei zugreifen kann. Im Fall von Python (oder Flask) wird die Routen-URL jedoch in der py-Datei wie unten gezeigt festgelegt, sodass Sie nur hier darauf zugreifen können. Die HTML-Datei unter Vorlagen ist eine HTML-Datei, die das Programm wie "return render_template (" request.html ", result = response)" in der py-Datei aufrufen kann.

xxx.py


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

Referenz

--RegKey ist 180 Tage gültig

  • Es gibt eine API, mit der überprüft werden kann, ob RegKey gültig ist. Das Ablaufdatum kann jedoch nicht ermittelt werden
  • Benutzer können über den Einstellungsbildschirm ablaufen
  • In der Sandbox-Umgebung ist das Ablaufdatum auf 1 Tag festgelegt

Das Ablaufdatum des Benutzers ist wahrscheinlich hier

LINE starten Bezahlen Sie in der Brieftasche der LINE-App (als LIFF-App starten) Drücken Sie unten auf Automatische Zahlung Wenn Sie sich in der Produktionsumgebung anmelden, können Sie diese hier verwalten. Beachten Sie, dass der Registrierungsschlüssel in der Sandbox überhaupt nicht angezeigt wird.

Recommended Posts

Probieren Sie das Python LINE Pay SDK aus
Versuchen Sie LINE Notify mit Python
Versuchen Sie Python
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Versuchen Sie es mit dem Python Cmd-Modul
Laden Sie das Remote-Python-SDK mit IntelliJ
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Dialogflow (früher: API.AI) Verwenden Sie das Python SDK #dialogflow
Arbeiten mit OpenStack mit dem Python SDK
[Python] Probieren Sie pydash der Python-Version von lodash aus
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Python Amateur versucht die Liste zusammenzufassen ①
[Python] Lesen Sie die angegebene Zeile in der Datei
Python> try: / außer:
LINE Heroku Python
Versuchen Sie, das Problem der Python-Klassenvererbung zu lösen
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Python: Versuchen Sie, die Benutzeroberfläche von Pythonista 3 auf dem iPad zu verwenden
Versuchen Sie es mit dem Python-Webframework Tornado Part 1
Probieren Sie Progate Free Edition [Python I]
Versuchen Sie es vorerst mit LINE Notify
Probieren Sie CI den Push-Python-Code auf GitHub aus.
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Versuchen Sie es mit dem Python-Webframework Tornado Part 2
Versuchen Sie, die Monte-Carlo-Methode in Python zu implementieren
Rufen Sie Polly aus dem AWS SDK für Python auf
Versuchen Sie, direkt von Python 3 aus auf die YQL-API zuzugreifen
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Finden Sie das maximale Python
Versuchen Sie es mit Python.
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Python versuchen ~ außer ~ sonst
[AWS IoT] Registrieren Sie Dinge in AWS IoT mithilfe des AWS IoT Python SDK
Versuchen Sie, mit Python zu übersetzen, während Sie das PDF-Layout beibehalten
Versuchen Sie, das Problem der Zuweisung von Schulungsärzten mit Python zu lösen
der Zen von Python
Versuchen Sie Debian + Python 3.4 + django1.7 ……
Versuchen Sie gRPC in Python
[Python] Teilen Sie das Datum
Probieren Sie 9 Slices in Python aus
Versuchen Sie es mit Tweepy [Python2.7]
Python versuchen / außer Memo
Versuchen Sie, das Python Data Science-Handbuch ins Japanische zu übersetzen
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Ein Hinweis zum Aufrufen der Facebook-API mit dem Python SDK
Versuchen Sie es mit dem Python-Webframework Django (2). Schauen Sie sich settings.py an
[Hyperledger Iroha] Hinweise zur Verwendung des Python SDK
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
[Python] Ich habe versucht, LINE BOT die Wettervorhersage beantworten zu lassen
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
"Lassen Sie Python die langweiligen Dinge tun" Übung ~ Befehlszeilen-Mailer ~
Google sucht mit Python nach der Zeichenfolge in der letzten Zeile der Datei