学城项目支付宝支付模块

1. 支付宝开放平台

链接地址:https://open.alipay.com/develop/manage

2. 下载支付宝开放平台密钥工具

链接地址:https://opendocs.alipay.com/common/02kipk

3. 安装支付宝的依赖模块

pip install python-alipay-sdk --upgrade

4. 建立app

python ../../manage.py startapp order

 5. 创建出alipay的模块包

/1 在pay.py中写入

from alipay import AliPay
from . import settings
from alipay.utils import AliPayConfig

# 支付对象
alipay = AliPay(
    appid=settings.APP_ID,  # 支付宝页面上复制,沙箱环境---》公司有人会给你
    app_notify_url=None,  # 默认回调 url
    app_private_key_string=settings.APP_PRIVATE_KEY_STRING,
    # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
    alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING,
    sign_type=settings.SIGN,  # RSA 或者 RSA2
    debug=settings.DEBUG,  # 默认 False
    verbose=False,  # 输出调试数据
    config=AliPayConfig(timeout=15)  # 可选,请求超时时间
)

# 支付网关
gateway = settings.GATEWAY

/2 配置settings.py文件

import os
# 应用私钥
APP_PRIVATE_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'app_private_key.pem')).read()
# 支付宝公钥
ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'alipay_public_key.pem')).read()
# 应用ID
APP_ID = '9021000123607737'

# 加密方式
SIGN = 'RSA2'

# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True

# 支付网关
GATEWAY = 'https://openapi-sandbox.dl.alipaydev.com/gateway.do?' if DEBUG else 'https://openapi.alipay.com/gateway.do?'

/3 建立pem文件夹存放公钥和密钥

# 公钥文件:alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
拿应用公钥跟支付宝换来的支付宝公钥
-----END PUBLIC KEY-----
# 私钥文件:app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
通过支付宝公钥私钥签发软件签发的应用私钥
-----END RSA PRIVATE KEY-----

创建出来个txt文件分别存放

/4 在__init__.py中注册

from .pay import gateway,alipay

6. 写alipay的测试支付接口

/1 视图类

# 测试支付封装包是否可用
from rest_framework.views import APIView
from utils.common_response import APIResponse
from libs.alipay_common import alipay, gateway

class AliPayView(APIView):
    def get(self,request, *args, **kwargs):
        res = alipay.api_alipay_trade_page_pay( # 调用它来生成真正的订单
            out_trade_no="2011032321021021021",
            total_amount=666,
            subject='benz',
            return_url="https://example.com",
            notify_url="https://example.com/notify"
        )
        pay_url = gateway + res # 真正的支付链接
        return APIResponse(pay_url=pay_url)

/2 配置路由

from django.urls import path
from rest_framework.routers import SimpleRouter
from .views import AliPayView
router = SimpleRouter()

urlpatterns = [
    path('test/',AliPayView.as_view())
]
urlpatterns += router.urls

 附上github的开源框架:https://github.com/fzlee/alipay

posted @ 2023-07-18 21:20  ranbo145  阅读(81)  评论(0)    收藏  举报