PythonアクセスAlipayプロセス:
最初の一歩:
まず、python SDKをダウンロードします。このSDKは、Alipayの開発者向けドキュメントにはありませんが、強力なpythonプログラマーが、pythonに属するAlipay支払いSDKのセットを開発しました。
ダウンロード方法:pip install python-alipay-sdk、githubへのリンクはhttps://github.com/fzlee/alipayです
**ステップ2: **
SDKをダウンロードした後、Alipayを設定する必要があります。Alipayの環境は2つのタイプに分けられます。1つは正式な環境で、プログラムがオンラインになった後の環境です。
2つ目は、サンドボックス環境、つまり、プロジェクトを開発する際の開発者向けのテスト環境です。
正式な環境ではアプリケーションを作成する必要があります。その後、Alipayのバックグラウンドがそれを確認し、合格後にappidが一意の記号として割り当てられます。写真は、アプリケーションの作成を示しています。
ここではサンドボックス環境を使用しているので、Alipayのレビューを待つ必要はありません。クリックして開発者センター-R&Dサービス-サンドボックスアプリケーションに入ります。図に示すように、appidが自動的に割り当てられます。これは、秘密鍵と公開鍵である必要があります。
3番目のステップ:
サーバーの独自の秘密鍵と公開鍵を生成する必要があります。Alipayはsha256、sha1をサポートするようになりました。
Sha256をお勧めします。Alipayは秘密鍵を生成する方法と手順を提供します(https://docs.open.alipay.com/291/105971/)
括弧内のリンクを開いて、秘密鍵を生成するための詳細な方法と手順を確認してください。公開鍵と秘密鍵が生成されたら、公開鍵をAlipay鍵設定にアップロードします。 Alipayの公開鍵をローカルにコピーし、独自の公開鍵と秘密鍵、およびAlipayの公開鍵(これは非常に重要です)を保存し、通常はローカルプロジェクトのファイルに保存します。
4番目のステップ:
Alipayの開発プロセスを理解し、よく理解してください。写真は、バックエンドプログラムを介したクライアントとAlipayのバックエンド間の相互作用のフローチャートを示しています
1、 ユーザーはAlipayを使用して支払うことを選択します
2、 ユーザーはアプリを使用して、署名された注文情報を取得するためにマーチャントサーバーへのリクエストを開始します
3、 マーチャントサーバーは、署名された注文情報(クエリ文字列またはURL)を返します。次に例を示します。
app_id=201609239&biz_content=%7B%22subject%22%3A%22%5Cu6d4b%5Cu8bd5%5Cu8ba2%5Cu5%22out_trade_no%22%3A%22201702021111%22%2C%22total_amount%22%3A1000%2C%22product_code%22%3A%22FAST_INSTANT_TRADE_PAY%22%7D&charset=utf-8&method=alipay.trade.page.pay¬ify_url=http%3A%2F%dus.com%2F&return_url=http%3A%2F%2F47.92.87.172%3A8000%2F&sign_type=RSA2×tamp=2015+15%3A19%3A15&version=1.0&sign=BSzk6LzwNp
4、 マーチャントアプリが支払いインターフェースを呼び出す
5- 8、 Alipayサーバーはリクエストを受信し、支払い結果を返します。
9、 マーチャントアプリはマーチャントサーバーへの要求を開始し、支払い結果を同期し、サーバーは署名を検証し、支払い結果を解析します。
10、 支払い結果を返します。
11、 マーチャントアプリは支払い結果を表示します。
12、 Alipayサーバーは、支払い通知をマーチャントサーバーに非同期で送信します。
13、 マーチャントサーバーは支払い通知を受信し、Alipayサーバーに応答を返します。
5番目のステップ:
pythonコードは次のとおりです
# 業務処理:pythonsdkを使用してAlipayの支払いインターフェースを呼び出す
# 初期化
fromalipayimportAliPay
alipay=AliPay(
appid="2016092300574189",
app_notify_url=None,
app_private_key_path=r"D:\pythonソースコード\alipay_keys\private_keys",
alipay_public_key_path=r"D:\pythonソースコード\alipay_keys\public_key",
sign_type="RSA2",
debug=True,)
# 通話インターフェース
# total_pay=order.total_price+order.transit_price
total_pay=12311
order_string=alipay.api_alipay_trade_page_pay(
out_trade_no=1231231312313,
total_amount=str(total_pay),
subject='テストテキスト%s'%1,
return_url=None,
notify_url=None,)
# 応答を返す
pay_url="https://openapi.alipaydev.com/gateway.do?"+order_string
print(pay_url)
このコードの機能は、Alipay支払いにアクセスするためのURLである署名付きURLを生成することです。
初期化部分のパラメータ:appidは、Alipayの一意の識別IDです。
app_notify_urlは、Alipayバックエンドの支払いが完了したときにマーチャントに非同期で通知されるバックエンドサーバーのURLアドレスです。
app_private_key_pathは、自分で生成した秘密鍵です。
alipay_public_key_pathは、Alipayの公開キーです。 sign_typeは、署名の暗号化方式です。
debugがtrueの場合、Alipayの支払いURLは非公式の環境であり、オンライン環境の場合はfalseに変更できます。
呼び出し側インターフェース部分のパラメーター:out_trade_noは注文番号です。これは、マーチャントのバックエンドサーバーによって生成された注文番号です。
total_amountは支払い金額(文字列タイプである必要があります)、subjectはタイトル、return_urlは支払いが成功した後にリダイレクトされるページです。
notify_urlは、非同期通知のurlです。
ステップ6:
このコードを実行すると、署名されたURLが取得されます。
このURLにアクセスして、結果を確認してください。
Alipayは、サンドボックス環境で携帯電話にダウンロードするか、右側のログインアカウントをクリックして支払うことができます。支払い用のアカウントとパスワードは、サンドボックスアプリケーションで提供されます。
ステップ7:
ログインして支払いを完了します
拡張の例:
PythonドッキングAlipay支払い自己実装機能
# - *- coding: utf-8-*-import base64
import json
import urllib.parse
from datetime import datetime
import requests
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
classAliPayException(Exception):
def __init__(self, data):super(AliPayException, self).__init__()
self.data = data
def __str__(self):return"alipay - {}".format(self.data)
def __unicode__(self):return u"alipay - {}".format(self.data)classAliPayVerifyException(AliPayException):
def __init__(self, msg, data):super(AliPayVerifyException, self).__init__('alipay verify except - {}:{}'.format(msg, data))classAliPay:
def __init__(self,**kwargs):"""
: param kwargs:
Recommended Posts