| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | # -*- encoding: utf-8 -*-"""@File    : PayUtil.py@Time    : 2022/6/29 11:41@Author  : stephen@Email   : zhangdongming@asj6.wecom.work@Software: PyCharm"""from urllib.parse import quotefrom Ansjer.config import SERVER_DOMAIN_SSLfrom Object.AliPayObject import AliPayObjectfrom Object.WechatPayObject import WechatPayObject"""支付服务"""class PayService:    @staticmethod    def create_alipay_payment(passback_params, order_id, price, title, notify_url, content, response):        """        创建支付宝支付        @param passback_params: 携带参数支付宝回调原样返回        @param order_id: 订单编号        @param price: 价格        @param title: 标题        @param notify_url: 异步回调通知URL        @param content: 内容        @param response: 响应结果        @return: 网站支付链接        """        aliPayObj = AliPayObject()        alipay = aliPayObj.conf()        subject = title + content        order_string = alipay.api_alipay_trade_wap_pay(            out_trade_no=order_id,            total_amount=price,            subject=subject,            return_url="{}web/paid2/success.html".format(SERVER_DOMAIN_SSL),            notify_url="{}{}".format(SERVER_DOMAIN_SSL, notify_url),            quit_url="{}web/paid2/fail.html".format(SERVER_DOMAIN_SSL),            passback_params=quote(passback_params)        )        if not order_string:            return response.json(10, '生成订单错误.')        return aliPayObj.alipay_prefix + order_string    @staticmethod    def create_wechat_payment(attach, order_id, price, ip, notify_url, content, response):        """        创建微信支付        @param attach: 参数微信回调通知原样返回        @param order_id: 订单编号        @param price: 价格        @param ip: 用户支付ip地址        @param notify_url: 异步通知回调URL        @param content: 内容        @param response: 响应结果        @return: 网站支付链接        """        notify_url = "{}{}".format(SERVER_DOMAIN_SSL, notify_url)        pay = WechatPayObject()        # 统一调用接口        pay.get_parameter(order_id, content, float(price) * 100, ip, notify_url, quote(attach))        sign_params = pay.re_finall(orderid=order_id)        if not sign_params:            return response.json(10, '生成订单错误.')        return sign_params    @staticmethod    def get_two_float(f_str, n):        # f_str = '{}'.format(f_str) 也可以转换为字符串        f_str = str(f_str)        a, b, c = f_str.partition('.')        # 如论传入的函数有几位小数,在字符串后面都添加n为小数0        c = (c + "0" * n)[:n]        return ".".join([a, c])
 |