Skip to main content

支付宝支付示例功能实现

本文档旨在帮助开发人员了解如何通过编写Python代码实现支付宝支付功能。

为了方便小伙伴们理解,我们不在原始项目中演示,而是我们单独新建一个项目,名为“zhifubao”,只实现支付功能。整体目录如下:

图67-支付宝项目目录

安装AliPay SDK

首先,我们需要安装AliPay SDK。可以通过以下步骤完成安装:

  1. 在命令行中激活虚拟环境。
  2. 运行以下命令来安装django: pip install django
  3. 运行以下命令来安装AliPay SDK:pip install alipay-sdk-python

安装完成后,我们可以开始编写Python代码来实现支付宝支付功能。

配置支付宝参数

在开始编写代码之前,我们需要配置支付宝参数。以下是一些常见的支付宝参数:

  • AppID:支付宝给每个应用分配的唯一的ID。
  • 私钥:用于生成签名和验证签名的密钥。
  • 公钥:用于验证返回数据的签名。

我们可以将这些参数放在一个独立的配置文件中,如settings.py。在配置文件中,我们可以定义一个config字典,包含所有的支付宝参数。

zhifubao/settings.py
# settings.py

# 支付宝相关配置
ALIPAY_SERVER_URL = 'https://openapi-sandbox.dl.alipaydev.com/gateway.do'
ALIPAY_APP_ID = '应用APPID'
ALIPAY_APP_PRIVATE_KEY = '应用私钥'
ALIPAY_PUBLIC_KEY = 'Alipay公钥'

实现支付功能

现在,我们可以开始编写Python代码来实现支付宝支付功能。在项目目录下,新建一个zhifubao.py文件,代码如下:

zhifubao/zhifubao.py
from datetime import datetime

import logging

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
import settings

logging.basicConfig(
level=logging.INFO,
format='%(asctime)s %(levelname)s %(message)s',
filemode='a',)
logger = logging.getLogger('')


if __name__ == '__main__':
"""
设置配置,包括支付宝网关地址、app_id、应用私钥、支付宝公钥等,其他配置值可以查看AlipayClientConfig的定义。
"""
alipay_client_config = AlipayClientConfig()
alipay_client_config.server_url = settings.ALIPAY_SERVER_URL
alipay_client_config.app_id = settings.ALIPAY_APP_ID
alipay_client_config.app_private_key = settings.ALIPAY_APP_PRIVATE_KEY
alipay_client_config.alipay_public_key = settings.ALIPAY_PUBLIC_KEY

"""
得到客户端对象。
注意,一个alipay_client_config对象对应一个DefaultAlipayClient,定义DefaultAlipayClient对象后,alipay_client_config不得修改,如果想使用不同的配置,请定义不同的DefaultAlipayClient。
logger参数用于打印日志,不传则不打印,建议传递。
"""
client = DefaultAlipayClient(alipay_client_config=alipay_client_config, logger=logger)

"""
页面接口示例:alipay.trade.page.pay
"""
# 对照接口文档,构造请求对象
formatted_time = datetime.now().strftime("pay%Y%m%d%H%M%S%f")
model = AlipayTradePagePayModel()
model.out_trade_no = "pay"+formatted_time
model.total_amount = 50
model.subject = "测试"
model.body = "支付宝测试"
model.product_code = "FAST_INSTANT_TRADE_PAY"
request = AlipayTradePagePayRequest(biz_model=model)
# 得到构造的请求,如果http_method是GET,则是一个带完成请求参数的url,如果http_method是POST,则是一段HTML表单片段
response = client.page_execute(request, http_method="GET")
print("alipay.trade.page.pay response:" + response)

在上述代码中,我们首先导入AliPay类和配置文件中的支付宝参数。然后,我们创建一个AliPay实例,并传入配置参数。紧接着,我们定义了一个pay函数,用于发起支付请求。在pay函数中,我们构造了请求参数,并调用了api_alipay_trade_page_pay接口发起支付请求。

请注意,在使用支付宝支付功能之前,请确保您已经了解并遵守支付宝的相关规定和条款,以确保合法合规使用。

图67-支付宝登录

图67-支付密码

用户名、密码和支付密码可以查看沙箱账号信息。如下图。

图67-支付信息

支付成功后效果如下所示。 图67-支付成功

手机支付

除了账号和密码支付,还可以使用沙箱工具用手机扫码支付。

warning

只有安卓版本。

打开沙箱页面,

图67-下载沙箱工具

单击扫码下载,如下图。

67-扫码下载

下载到手机后如下图所示。

图67-下载手机效果

图67-账号登录

账号填写沙箱账号和密码,登录成功后,点击扫一扫, 如下图所示。

图67-扫一扫

再次运行程序,生成新的支付页面,然后使用扫码支付。 图67-扫码支付

图67-立即支付

图67-手机支付成功

图67-订单信息