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.
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.
Je vais essayer de l'implémenter en suivant [what @hmsk] 8.
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
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
CheckoutHelper est utilisé pour la partie JS. Voir ci-dessous pour cela.
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