1. 程式人生 > >支付寶介面示例(沙箱版)

支付寶介面示例(沙箱版)

環境準備

1.登入支付寶的開發平臺-沙箱環境

https://openhome.alipay.com/platform/appDaily.htm?tab=info

2.下載祕鑰生成工具,然後把自己的公鑰儲存到資訊配置裡面的公鑰

3.下載安裝沙箱版錢包

4.點左上角的沙箱賬號,並用賬號登入

配置Django專案

urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', AliPayView.as_view()),
]

views.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)#測試環境開啟debug模式 # 初始化各種配置資訊 # 阿里提供服務的介面 alipay_config.server_url = "https://openapi.alipaydev.com/gateway.do" # 申請的沙箱環境的app_id alipay_config.app_id = "2016092300575239" # 商戶的私鑰 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) # print(alipay_client) 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 = 88888 # 商品標題 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") print(response) 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")

支付寶的支付
1, 客戶端的配置資訊物件AlipayClientConfig
2, 例項化客戶端物件 DefaultAlipayClient(config)
3, 為你的API介面請求生成一個模板物件
存放商品的各種資訊以及訂單號等等~~~
4, 生成一個API介面請求物件 把模板物件當成引數
AlipayTradePagePayRequest(biz_model=model)
5, 呼叫客戶端的傳送請求的方法
response = client.page_execute(request, http_method="GET")
6, 根據response做自己的操作
# get請求 使用者支付成功後返回的頁面請求地址
request.return_url = "http://140.143.63.45:8000/alipay_handler"
# post請求 使用者支付成功通知商戶的請求地址
request.notify_url = "http://140.143.63.45:8000/alipay_handler"