支付宝支付

支付宝介绍

-https://open.alipay.com/develop/manage 扫码登录
-网站支付:https://opendocs.alipay.com/open/270/105899
扫码登录自己的支付宝之后
这个是电脑网端的支付宝支付

网端的两种支付方式
第一种是自己在网端输入自己的用户名和密码、
第二种是自己用手机扫码支付

“”"

接入条件

-1 支付宝账号:个人和商户(需要用营业执照申请)
-2 网站:备案过ICP    ICP证浙B2-20160559    ---》没有
	-国内:所有网站--》通过工信部审核--》上线运营
    -域名:购买,按年付费
    -云服务器:有公网ip--》所有人都能根据ip访问这个机器
    	-阿里云买的服务器-->协助你备案--》两周
-3 营业执照,且支付宝账号名称需与营业执照主体一致
# 公司里:公司专门有财务
	-1 商户号
    -2 私钥
    -3 公钥
    -4 支付宝公钥

费率
0.6%
“”"

支付宝开发

https://opendocs.alipay.com/open/270/01didh?ref=api 开发流程介绍
“”"

支付流程

用户在我们网站前端---》点下单,立即购买---》向我们后端发起请求---》我们后端要请求支付宝--》支付宝返回给我们一个支付链接---》我们把链接返回给前端---》前端打开链接----》进入支付宝页面---》登录--》付款---》付款成功---》支付宝会两个回调:get post --->咱们后端接收到post回调后-->修改订单状态

关于回调

-用户付款成功,支付宝会有个回调
	-get:调用前端---》给用户看
    -post:调用后端--》修改订单状态的--》异步通知说明
    	-对于 PC 网站支付的交易,在用户支付完成之后,支付宝会根据 API 中商家传入的 notify_url,通过 POST 请求的形式将支付结果作为参数通知到商家系统。
        -在进行异步通知交互时,如果支付宝收到的应答不是 success ,支付宝会认为通知失败,会通过一定的策略定期重新发起通知。通知的间隔频率为:4m、10m、10m、1h、2h、6h、15h。

我们现在申请不了商户—》开发测试只能用沙箱环境–》后期公司里申请了商户号后
-只需要修改:商户号,公钥,私钥即可

支付宝测试环境:
沙箱环境地址:测试环境—》数据都假的–》流程跟正常一样
-https://open.alipay.com/develop/sandbox/app?is_switch_sandbox=true
“”"
在这里插入图片描述

支付测试

支付宝提供了 API 也有SDK
官方的:https://opendocs.alipay.com/common/02n6z6 --》官方文档

# 创建一个文件
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.domain.AlipayTradePagePayModel import AlipayTradePagePayModel
from alipay.aop.api.request.AlipayTradePagePayRequest import AlipayTradePagePayRequest

if __name__ == '__main__':
    """
    设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。
    """
    alipay_client_config = AlipayClientConfig()
    # alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do'  # 真实环境 支付地址
    alipay_client_config.server_url = ''  # 沙箱环境
    alipay_client_config.app_id = ''  # 商户appid
    # 注意 应用私钥
    alipay_client_config.app_private_key = ''
    # 阿里公钥
    alipay_client_config.alipay_public_key = ''

    """
    得到客户端对象。
    注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。
    logger参数用于打印日志,不传则不打印,建议传递。
    """
    client = DefaultAlipayClient(alipay_client_config=alipay_client_config)
    """
    页面接口示例:alipay.trade.page.pay
    """
    # 对照接口文档,构造请求对象
    model = AlipayTradePagePayModel()
    model.out_trade_no = "000010200554"
    model.total_amount = 8888
    model.subject = "重启娃娃-保密发货"  # 商品注释
    model.body = "重启娃娃"  # 商品名字
    model.product_code = "FAST_INSTANT_TRADE_PAY"

    request = AlipayTradePagePayRequest(biz_model=model)
    # 两个回调地址:get回调  post 回调
    request.return_url = 'http://www.baidu.com'  # get回调 支付完成之后跳转回的地址

    request.notify_url = 'http://www.baidu.com/post'  # post 回调  我们看不到
    # 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段
    response = client.page_execute(request, http_method="GET")

    print("alipay.trade.page.pay response:" + response)

第三方库的sdk

接口加密的两种方式

第一种 :系统默认密钥 只需要配置 
    # 注意 应用私钥
    alipay_client_config.app_private_key = ''
    # 阿里公钥
    alipay_client_config.alipay_public_key = ''

第二种 :自定义的密钥
	  """
    如果使用的是自定义密钥的方式
    alipay_client_config.app_private_key   这里填写应用公钥
    alipay_client_config.alipay_public_key  这里填写支付宝公钥
    """
支付宝软件:生成公钥私钥---》验证签名
下载安装地址:https://opendocs.alipay.com/common/02kipk?pathHash=0d20b438
-使用下载工具 生成应用公钥,应用私钥
    -在沙箱环境自定义的密钥中填入应用公钥---》自动生成一个支付宝公钥
    -如何有了三个 应用公钥,应用私钥(不要给别人),支付宝公钥
    -咱们自己生成的跟支付宝提供给咱们的没有区别,只能用一个
    

第三方支付宝sdk

from alipay import AliPay, DCAliPay, ISVAliPay
from alipay.utils import AliPayConfig

# 支付宝网页下载的证书不能直接被使用,需要加上头尾
# 你可以在此处找到例子: tests/certs/ali/ali_private_key.pem

# 自己的私钥
app_private_key_string = open("./private_key.pem").read()
# 支付宝的公钥
alipay_public_key_string = open("./public_key_alipay").read()

alipay = AliPay(
    appid="9021000134604",
    app_notify_url=None,  # 默认回调 url
    app_private_key_string=app_private_key_string,

    # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
    alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2",  # RSA 或者 RSA2 生成密钥的加密方式
    debug=False,  # 默认 False
    verbose=False,  # 输出调试数据
    config=AliPayConfig(timeout=15)  # 可选,请求超时时间
)

# 电脑网站支付,需要跳转到:https://openapi.alipay.com/gateway.do? + order_string
import uuid
order_string = alipay.api_alipay_trade_page_pay(
    out_trade_no=uuid.uuid4(),  # 订单号
    total_amount=8,  # 价格
    subject='充气娃娃',  # 标题
    return_url="https://www.baidu.com",  # 支付完成回调地址
    notify_url="https://www.baidu.com/post"  # 可选,不填则使用默认 notify url
)
#
print('https://openapi-sandbox.dl.alipaydev.com/gateway.do' + order_string)

# 在同级目录创建两个文件存放 私钥和公钥

private_key.pem 私钥文件
-----BEGIN RSA PRIVATE KEY-----
# 支付宝的私钥
-----END RSA PRIVATE KEY-----

public_key_alipay  公钥文件
-----BEGIN PUBLIC KEY-----
# 支付宝的公钥
-----END PUBLIC KEY-----

支付宝支付封装

libs
    ├── iPay  							# aliapy二次封装包
    │   ├── __init__.py 				# 包文件
    │   ├── pem							# 公钥私钥文件夹
    │   │   ├── alipay_public_key.pem	# 支付宝公钥文件
    │   │   ├── app_private_key.pem		# 应用私钥文件
    │   ├── pay.py						# 支付文件
    └── └── settings.py  	


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

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)  # 可选,请求超时时间
)


settings.py

import os

#### 替换应用私钥   支付宝公钥  和 应用ID即可

# 应用私钥
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 = '9021000129694319'
# 加密方式
SIGN = 'RSA2'
# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True
# 支付网关
GATEWAY = 'https://openapi-sandbox.dl.alipaydev.com/gateway.do' if DEBUG else 'https://openapi.alipay.com/gateway.do'

ini.py
from .pay import alipay
from .settings import GATEWAY

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一个基于Python的开源Web框架,它提供了一套完整的开发工具和库,用于快速构建高效的Web应用程序。支付宝支付是指在Django中集成支付宝支付功能,使用户可以通过支付宝进行在线支付。 要在Django中实现支付宝支付,可以按照以下步骤进行操作: 1. 注册支付宝开发者账号并创建应用:首先,你需要在支付宝开放平台注册一个开发者账号,并创建一个应用。在创建应用时,你会获得一些必要的信息,如App ID、App Key等。 2. 安装支付宝SDK:使用pip命令安装支付宝SDK,可以在Django项目的虚拟环境中执行以下命令: ``` pip install alipay-sdk-python ``` 3. 配置支付宝参数:在Django项目的配置文件中,添加支付宝相关的配置参数,包括App ID、App Key、支付宝公钥、私钥等。 4. 创建支付视图:在Django项目中创建一个视图函数,用于处理用户发起支付请求的逻辑。在该视图函数中,你需要构建支付宝支付接口所需的参数,并将其传递给支付宝SDK进行处理。 5. 处理支付结果回调:支付宝支付完成后,会向你预先设置的回调URL发送异步通知,通知你支付结果。你需要在Django项目中创建一个接收支付结果回调的视图函数,用于处理支付宝发送的异步通知,并校验支付结果的有效性。 以上是实现Django支付宝支付的基本步骤。当然,具体的实现方式还会根据你的需求和业务逻辑有所不同。你可以参考支付宝开放平台提供的文档和示例代码,以及Django官方文档中关于视图函数和URL配置的内容,来更详细地了解和实现支付宝支付功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值