跳到主要内容

支付宝支付接口实现

本文将介绍如何使用Python实现支付宝支付接口的整合。

在整合支付宝支付之前,首先需要创建一个订单表来存储订单相关信息。这样我们在用户购买并进行支付时,可以将订单信息写入到订单表中,并调用支付宝支付功能。

创建订单表​

在项目的后端代码中,我们可以创建一个名为Order的交易模型来表示订单。订单与用户之间是一对多的关系,即一个用户可以拥有多个订单。订单与会员卡之间也是一对多的关系,即一个会员卡可以对应多个订单。以下是创建订单表的示例代码:

dx_movie/trade/models.py
class Order(models.Model):
"""
订单信息
"""
ORDER_STATUS = (
("TRADE_SUCCESS", "支付成功"),
("TRADE_CLOSED", "超时关闭"),
("WAIT_BUYER_PAY", "交易创建"),
("TRADE_FINISHED", "交易结束"),
("PAYING", "待支付"),
)

PAY_TYPE = (
("alipay", "支付宝"),
("wechat", "微信"),
)

profile = models.ForeignKey(Profile, related_name='orders', to_field='uid',on_delete=models.CASCADE, verbose_name="用户")
# 禁止反向
card = models.ForeignKey(Card, related_name='+', on_delete=models.DO_NOTHING, verbose_name='会员卡')
#订单号唯一
order_sn = models.CharField("订单编号",max_length=30, null=True, blank=True, unique=True)
# 支付宝交易号
trade_no = models.CharField("交易号",max_length=100, unique=True, null=True, blank=True)
#支付状态
pay_status = models.CharField("订单状态",choices=ORDER_STATUS, default="PAYING", max_length=30)
# 订单的支付类型
pay_type = models.CharField("支付类型",choices=PAY_TYPE, default="alipay", max_length=10)
order_mount = models.DecimalField("订单金额", max_digits=10, decimal_places=2)
pay_time = models.DateTimeField("支付时间",null=True, blank=True)
# 更新时间
created_at = models.DateTimeField(auto_now_add=True, editable=True, verbose_name='创建时间')
updated_at = models.DateTimeField(auto_now=True, editable=True, verbose_name='更新时间')

class Meta:
db_table = 'order'
verbose_name = "订单信息"
verbose_name_plural = verbose_name

def __str__(self):
return str(self.order_sn)

在上述代码中,profile字段表示订单所属的用户,card字段表示对应的会员卡,order_number表示订单号,trade_no表示支付宝订单号,status表示订单的支付状态,还可以根据实际需求添加其他字段。

🔒 试读结束

继续阅读完整内容

以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。

查看课程详情