支付寶接口示例(沙箱版)

環境準備

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

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

2.下載祕鑰生成工具,而後把本身的公鑰保存到信息配置裏面的公鑰json

3.下載安裝沙箱版錢包api

4.點左上角的沙箱帳號,並用帳號登陸app

配置Django項目

urls.pydom

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"post

相關文章
相關標籤/搜索