wechatpy.pay.api.coupon 源代码

# -*- coding: utf-8 -*-

import random
from datetime import datetime

from wechatpy.pay.api.base import BaseWeChatPayAPI


[文档]class WeChatCoupon(BaseWeChatPayAPI):
[文档] def send(self, user_id, stock_id, op_user_id=None, device_info=None, out_trade_no=None): """ 发放代金券 :param user_id: 用户在公众号下的 openid :param stock_id: 代金券批次 ID :param op_user_id: 可选,操作员账号,默认为商户号 :param device_info: 可选,微信支付分配的终端设备号 :param out_trade_no: 可选,商户订单号,需保持唯一性,默认自动生成 :return: 返回的结果信息 """ if not out_trade_no: now = datetime.now() out_trade_no = f"{self.mch_id}{now.strftime('%Y%m%d%H%M%S')}{random.randint(1000, 10000)}" data = { "appid": self.appid, "coupon_stock_id": stock_id, "openid": user_id, "openid_count": 1, "partner_trade_no": out_trade_no, "op_user_id": op_user_id, "device_info": device_info, "version": "1.0", "type": "XML", } return self._post("mmpaymkttransfers/send_coupon", data=data)
[文档] def query_stock(self, stock_id, op_user_id=None, device_info=None): """ 查询代金券批次 :param stock_id: 代金券批次 ID :param op_user_id: 可选,操作员账号,默认为商户号 :param device_info: 可选,微信支付分配的终端设备号 :return: 返回的结果信息 """ data = { "appid": self.appid, "coupon_stock_id": stock_id, "op_user_id": op_user_id, "device_info": device_info, "version": "1.0", "type": "XML", } return self._post("mmpaymkttransfers/query_coupon_stock", data=data)
[文档] def query_coupon(self, coupon_id, user_id, op_user_id=None, device_info=None): """ 查询代金券信息 :param coupon_id: 代金券 ID :param user_id: 用户在公众号下的 openid :param op_user_id: 可选,操作员账号,默认为商户号 :param device_info: 可选,微信支付分配的终端设备号 :return: 返回的结果信息 """ data = { "coupon_id": coupon_id, "openid": user_id, "appid": self.appid, "op_user_id": op_user_id, "device_info": device_info, "version": "1.0", "type": "XML", } return self._post("promotion/query_coupon", data=data)