AliPay
- 阿裡的支付也就是支付寶,官網已經出了Python的SDK了,是以先下載下傳:pip3 install alipay-sdk-python 網址
- 支付寶沙箱環境的位址:https://openhome.alipay.com/platform/appDaily.htm?tab=info
一、使用詳情:
第1步:通路沙箱環境位址,注冊一個商家賬戶點選

-
- 密鑰生成方式1(推薦):生成RSA密鑰
- 密鑰生成方式2:OpenSSL工具生成密鑰
- 按照上面方式生成商戶的公鑰和私鑰,把公鑰放入網站私鑰自己留着簽名用,設定應用公鑰後
-
- 下面是商戶資訊以及賣家資訊下載下傳一個支付寶的沙箱環境
- 然後按照下面的賬号和密碼登入和支付,隻支援安卓
第2步:閱讀文檔 找到一個适合自己的API 點選
- 這裡選擇:統一收單下單并支付頁面接口 點選
- 仔細閱讀文檔按照文檔的參數要求去向接口發請求
第3步:代碼執行個體
- 回調url的測試要放在公網IP上,是以測試的時候放入自己伺服器.
- alipay-sdk-python
from django.conf.urls import url
from django.contrib import admin
from app01.views import AliPayView, PayHandlerView
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^pay$', AliPayView.as_view()),
url(r'^alipay_handler', PayHandlerView.as_view()),
]
urls.py
from django.shortcuts import render, redirect
from django.http import HttpResponse
from rest_framework.views import APIView
from rest_framework.response import Response
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
from alipay.aop.api.domain.AlipayTradePrecreateModel import AlipayTradePrecreateModel
from alipay.aop.api.request. AlipayTradePrecreateRequest import AlipayTradePrecreateRequest
from alipay.aop.api.domain.AlipayTradePagePayModel import AlipayTradePagePayModel
from alipay.aop.api.request.AlipayTradePagePayRequest import AlipayTradePagePayRequest
import time
# Create your views here.
# 沙箱環境位址:https://openhome.alipay.com/platform/appDaily.htm?tab=info
# "https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"
def ali_pay():
# 為阿裡支付執行個體化一個配置資訊對象
alipay_config = AlipayClientConfig(sandbox_debug=True)
# 初始化各種配置資訊
# 阿裡提供服務的接口
alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do"
# 申請的沙箱環境的app_id
alipay_config.app_id = "2016091800540924"
# 商戶的私鑰
with open("keys/app_private_key.txt") as f:
alipay_config.app_private_key = f.read()
# 阿裡的公鑰
with open("keys/alipay_public_key.txt") as f:
alipay_config.alipay_public_key = f.read()
# 執行個體化一個支付對象并傳回
alipay_client = DefaultAlipayClient(alipay_client_config=alipay_config)
return alipay_client
class AliPayView(APIView):
def get(self, request):
return render(request, "pay.html")
# 生成支付寶自帶頁面的API
def post(self, request):
# 得到阿裡支付的執行個體化對象
client = ali_pay()
# 為API生成一個模闆對象 初始化參數用的
model = AlipayTradePagePayModel()
# 訂單号
model.out_trade_no = "pay" + str(time.time())
# 金額
model.total_amount = 8888
# 商品标題
model.subject = "測試"
# 商品詳細内容
model.body = "支付寶測試"
# 銷售産品碼,與支付寶簽約的産品碼名稱
model.product_code = "FAST_INSTANT_TRADE_PAY"
# 執行個體化一個請求對象
request = AlipayTradePagePayRequest(biz_model=model)
# get請求 使用者支付成功後傳回的頁面請求位址
request.return_url = "http://140.143.63.45:8000/alipay_handler"
# post請求 使用者支付成功通知商戶的請求位址
request.notify_url = "http://140.143.63.45:8000/alipay_handler"
# 利用阿裡支付對象發一個獲得頁面的請求 參數是request
response = client.page_execute(request, http_method="GET")
return redirect(response)
class PayHandlerView(APIView):
def get(self, request):
# return_url的回調位址
print(request.data)
# 使用者支付成功之後回到哪
return HttpResponse("return_url測試")
def post(self, request):
print(request.data)
# 使用者支付成功 在這裡修改訂單狀态以及優惠券貝裡等等情況
return HttpResponse("notify_url")
app01中views.py
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
{# <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>#}
</head>
<body>
<form method="POST">
{% csrf_token %}
<input type="text" name="money">
<input type="submit" value="去支付" />
</form>
</body>
</html>
templates中pay.html
轉載于:https://www.cnblogs.com/bubu99/p/10503934.html