six_003
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import hashlib
|
||||
import hmac
|
||||
from datetime import datetime
|
||||
from typing import Literal
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
import pydash
|
||||
@@ -8,6 +9,18 @@ from pydantic import BaseModel, Field
|
||||
from ulid import ULID
|
||||
|
||||
from wechat_微信支付证书.江苏六果科技有限公司支付证书.江苏六果科技有限公司支付参数 import sixpay六果科技公司
|
||||
from wechat_数据库.微信支付券.代金券数据库 import stock券数据表
|
||||
|
||||
|
||||
class stock券的状态(BaseModel):
|
||||
demo_必填: int = Field(..., description="描述") # 必传属发生
|
||||
|
||||
# demo_可选: Optional[int] = None # 可选值
|
||||
# demo_默认值: int = Field(default=100001, description="描述") # 有默认值
|
||||
# demo_联合类型: Literal["xiao", "zizi"] = Field(..., description="描述")
|
||||
|
||||
def model_post_init(self, __context):
|
||||
print("初始化完成,自动调用 model_post_init")
|
||||
|
||||
|
||||
class stock发送代金券功能(BaseModel):
|
||||
@@ -17,8 +30,11 @@ class stock发送代金券功能(BaseModel):
|
||||
# demo_联合类型: Literal["xiao", "zizi"] = Field(..., description="描述")
|
||||
pass
|
||||
stock_id_代金券批次号: str = Field(..., description="发放代金券是创建的批次号")
|
||||
stock券的状态: Literal["待领券", "已领券"] = Field(..., description="stock券的状态")
|
||||
stock券待领券: Literal["待领券", "已领券"] = Field(default="待领券", description="stock券的状态")
|
||||
stock券已领券: Literal["待领券", "已领券"] = Field(default="已领券", description="stock券的状态")
|
||||
|
||||
def send发券并返回前端需要的数据(self):
|
||||
def send发券并返回前端需要的数据(self, self_mini_openid, self_mini_unionid):
|
||||
"""前端请求:将这个字典对象返回给前端,前端调用小程序原生插件领取券"""
|
||||
pass
|
||||
# 第一步:准备数据
|
||||
@@ -35,12 +51,10 @@ class stock发送代金券功能(BaseModel):
|
||||
"create_coupon_merchant0": mchid, # 发券的商家商户号
|
||||
"customize_send_time0": rfc3339, # 当前的领券的时间
|
||||
}
|
||||
|
||||
# iteratee为0是按key iteratee是以value的值来排序 reverse=False(从小到大) reverse=True(从大到小)
|
||||
sorted_dict = dict(pydash.sort_by(collection=params每一张券需要验名的数据格式.items(), iteratee=0, reverse=False))
|
||||
print(sorted_dict)
|
||||
# 拼接组装好的数据
|
||||
sign_str = "&".join([f"{k}={v}" for k, v in sorted_dict.items() if v]) + f"&key={apiv2_key}"
|
||||
sign_str = pydash.join(array=[f"{key}={value}" for key, value in sorted_dict.items()], separator="&") + f"&key={apiv2_key}"
|
||||
# # 4. 生成 HMAC-SHA256 签名并转大写
|
||||
sign = hmac.new(key=apiv2_key.encode("utf-8"), msg=sign_str.encode("utf-8"), digestmod=hashlib.sha256, ).hexdigest().upper()
|
||||
# 3. 拼接参数串
|
||||
@@ -52,12 +66,24 @@ class stock发送代金券功能(BaseModel):
|
||||
"send_coupon_merchant": sixpay六果科技公司.mchid,
|
||||
}
|
||||
send_coupon_params: list[dict] = [params, ] # 发放代金券需要返回给前端的参数必须为列表 list[dict]
|
||||
return {
|
||||
生成发券的数据 = {
|
||||
"send_coupon_params": send_coupon_params,
|
||||
"sign": sign,
|
||||
"send_coupon_merchant": sixpay六果科技公司.mchid,
|
||||
"suggest_immediate_use": True,
|
||||
}
|
||||
# 最后需要处理一下当前用户的 数据库
|
||||
stock券数据表.objects.update_or_create(stock_商家侧订单号=out_request_no,
|
||||
stock_未领取券的数据=生成发券的数据,
|
||||
stock_批次号=self.stock_id_代金券批次号, stock_use_券状态=self.stock券的状态, stock_归属商户号=mchid,
|
||||
mini_openid=self_mini_openid, mini_unionid=self_mini_unionid, defaults={"stock_use_发券时间": rfc3339})
|
||||
return 生成发券的数据
|
||||
|
||||
def 领券后更新当前券的状态(self, self_mini_openid, self_mini_unionid):
|
||||
pass
|
||||
stock券数据表.objects.filter(mini_openid=self_mini_openid, mini_unionid=self_mini_unionid, stock_批次号=self.stock_id_代金券批次号,
|
||||
stock_use_券状态=self.stock券待领券
|
||||
).update(stock_use_券状态=self.stock券已领券)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user