[PYTHON] Présentation de WebPay de Flask

À propos de webpay-python

Le 02 décembre, le package Python de WebPay [webpay-python] 1 a été publié. webpay-python est un package Python moderne avec les points suivants:

Ce package est important car de nombreux packages ne sont pas encore compatibles avec Python3. Vous pouvez déployer WebPay avec ** Python 3.3 ** sans avoir à modifier le package vous-même.

Présentation de WebPay de Flask

J'adore [Flask] 6 parmi les frameworks web de Python, donc cette fois je présenterai WebPay à Flask. L'environnement utilisé est MacOS 10.9.1 / Python3.3 / Flask 0.10.1.

À propos du fonctionnement

Je vais essayer de l'implémenter en suivant [what @hmsk] 8.

  1. Saisissez les informations d'achat de «/» et publiez-les dans «/ purhcase»
  2. Processus de facturation et sortie des résultats à l'aide de WebPay avec «/ purchase»

À propos de la structure des fichiers

Le contrôleur est placé sous app.py et View est placé sous les modèles. Il n'y a pas de modèle cette fois.

webpay-flask-sample
├── app.py
└── templates
    ├── index.html
    ├── layout.html
    └── purchased.html

Code réel et exécution

Si vous écrivez approximativement le contrôleur, il ressemblera à ce qui suit. «\ # Noqa» est attaché parce que c'est via flake8.

app.py


import sys
from flask import Flask, render_template, request, url_for, redirect
from webpay import WebPay
from webpay.errors import InvalidRequestError

app = Flask(__name__)
app.config.from_object(__name__)
WEBPAY_PUB_KEY = 'test_public_19DdUs78k2lV8PO8ZCaYX3JT'
WEBPAY_PRI_KEY = 'test_secret_eHn4TTgsGguBcW764a2KA8Yd'
WEBDB_PRICE = 1554


@app.route('/')
def index():
    return render_template('index.html', webpay_pubkey=WEBPAY_PUB_KEY)


@app.route('/purchase', methods=['POST'])
def purchase():
    webpay = WebPay(WEBPAY_PRI_KEY)
    try:
        charge = webpay.charges.create(
            amount=WEBDB_PRICE,
            currency='jpy',
            card=request.form.get('webpay-token'))
        return render_template('purchased.html', charge=charge)
    except InvalidRequestError:
        e = sys.exc_info()[1]  # noqa
        return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

Vient ensuite View. Puisque [jinja2] 7 est disponible par défaut dans flask, il est possible d'hériter de View. Créez index.html et purchase.html en fonction de layout.html.

layout.html


<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>WebPay flask sample</title>
  </head>
<body>
  {% block body %}{% endblock %}
</body>
</html>

index.html


{% extends "layout.html" %}
{% block body %}

<form action="/purchase" method="post">
  <script src="https://checkout.webpay.jp/v1/" class="webpay-button" data-key="{{ webpay_pubkey }}"></script>
</form>
{% endblock %}

purchased.html


{% extends "layout.html" %}
{% block body %}
<h3>Imaginez acheté</h3>
{% if charge.id %}
<p>Lors de demandes de renseignements concernant l'expédition{{ charge.id }}Merci de nous le faire savoir.</p>
{% endif %}
<ul>
  <li><a href='http://www.amazon.co.jp/dp/4774158747/' target='_blank'>En fait acheter</a></li>
  <li><a href='/'>Achetez à nouveau</a></li>
</ul>
{% endblock %}

Après cela, si vous accédez à [http: // localhost: 5000](http: // localhost: 8000) à partir de la commande suivante, vous constaterez que vous pouvez traiter la facturation.

cd webpay-flask-sample
python app.py

À propos de la partie JS

CheckoutHelper est utilisé pour la partie JS. Voir ci-dessous pour cela.

À la fin

Cette fois, j'ai introduit webpay-python dans flask. Le code créé cette fois-ci est en [here] 10, vous pouvez donc facilement utiliser webpay-python. webpay-python vient de sortir, mais c'est un package pour WebPay qui peut également être utilisé avec Python 3.3. Veuillez l'utiliser par tous les moyens. (Requêtes pour webpay-python jusqu'à [Issues] 11!)

Recommended Posts

Présentation de WebPay de Flask
(Pour moi-même) Flask_7 (Ouvrir la base de données depuis Flask)
ballon
ballon
Connectez-vous au conteneur MySQL de Docker depuis Flask
Obtenez des données de Cloudant avec le flacon Bluemix
Tutoriel Flask (de l'installation à Hello World)
Présentation de Docker Engine à Linux From Scratch
Mappez automatiquement les contrôleurs à partir des URL avec Flask