Python代码示例:python实现微信小程序的多种支付方式

本文介绍如何使用Python实现微信小程序的多种支付方式,包括Alipay、YLpay和Wxpay。通过鸭子类型的原理,统一接口和回调函数,方便扩展新的支付方式。同时,提供了Python学习路线、基础视频、实战案例、精品书籍和面试资料,帮助读者全面提升Python技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

在这里插入图片描述
仅供参考哦~


一、多支付

1.原理

1.利用鸭子类型。规定前台传过来支付方式。pay_methon

2.再支付方式里面实现pay(名字统一)方法

3.回调函数,在支付方式里面写notify(名字统一)统一方法,返回的data统一格式。

eg: data={“statu”:‘success’,“order_id”:notity_data[‘order_id’],“print”:“0000”}

这样的的牛逼之处:我们在修改、添加支付方式的时候,只需要按照鸭子类型,命名一样的函数名,写好自己的支付方式即可。不需要改其他的代码

2.多支付接口代码

urls.py:

path("order/create",order.Creat.as_view()),
path("order/notify/<paymethod>",order.Notify.as_view())
# 这里所有的支付都是走的小程序微信支付:
import importlib
class Creat(APIView):
    ...伪代码
    pay_methon = "Wxpay"  # 如果是PC端,可以前台传过来支付方式
    try:
        #pay_file是对象
        pay_file = importlib.import_module(f"app01.Pay.{
     
     pay_methon}")  # 调用对应的支付方式
        pay_class = getattr(pay_file, pay_methon)  # 反射机制
        order_data['open_id'] = openid # 传的参数
        order_data['ip'] = host_ip  # 传的参数
        data = pay_class().pay(order_data)  # 调用支付
    except:
        return  Response({
   
   "code":201,"msg":"未知支付方式"})
# 异步回调的
class Notify(APIView):
    def post(self,request,paymethod):
        pay_file = importlib.import_module(f"app01.Pay.{
     
     paymethod}")
        pay_class = getattr(pay_file,paymethod)
        data = pay_class().notify(request.data)  # 调用异步回调
        # 判断data数据中属性,然后修改订单
        if data["statu"] == "success":
            models.Order.objects.filter(order_id =data['order_id']).update(pay_status =1)
            return Response(data["print"])

二、支付方式代码

在这里插入图片描述

1.Alipay支付

# Alipay支付
class Alipay:
    def pay(self,order_data):
        #统一下单方法
        pass
    def notify(self,notity_data):
        if notity_data['success'] :
            #notity_data['order_id']表示商城订单号
            data={
   
   "statu":'success',"order_id":notity_data['order_id'],"print":"0000"}
            return   data

2.YLpay支付方式

# YLpay支付方式
class YLpay:
    def pay(self,order_data):
        pass
    def notify(self,request_data):
        #验签
        #数据处理
        pass

3.Wxpay支付方式

import time
from app01.wx import settings
class Wxpay:
    def pay(self,order_data):
        self.order_id = order_data["order_id"]
        self.open_id = order_data['open_id']
        self.ip = order_data['ip']
        data_body = self.get_body_data()
        import requests
        url = "https://api.mch.weixin.qq.com/pay/unifiedorder"
        response = requests.post(url, data_body.encode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值