six_001
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
import pydash
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from django.db import models
|
||||
from rest_framework import status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from rest_framework.viewsets import ViewSet
|
||||
|
||||
from sixGuoDjango import BaseResponse, ResData
|
||||
from wechat_数据库.雪花算法.雪花算法工具 import generator
|
||||
from wechat_项目工具包.微信支付工具包.微信支付类 import paymentCategory, wechatPay
|
||||
|
||||
|
||||
class six商家转账ViewSets(ViewSet):
|
||||
|
||||
@action(detail=False, methods=["post"], url_path="transfer")
|
||||
def six发起转账(self, request: Request):
|
||||
""" """
|
||||
self_mini_openid = request.data.get("self_mini_openid", None)
|
||||
self_mini_unionid = request.data.get("self_mini_unionid", None)
|
||||
提取积分值 = request.data.get("提取积分值", None)
|
||||
# 逻辑一: 先比较积分值是否超出提现的金额
|
||||
# 积分值sum = share分享者积分.objects.filter(share分享者unionid=self_mini_unionid).values("share分享者unionid").annotate(xiao_age_sum=models.Sum("share分享积分值"), ) # 只有value(字段1,字段2)二个值完全相同的才会分配为一组
|
||||
# 添加 order_by
|
||||
# result = 积分值sum.order_by("share分享者unionid").first()
|
||||
# print(result)
|
||||
# xiao_age_sum = pydash.get(obj=result, path="xiao_age_sum")
|
||||
# print(xiao_age_sum)
|
||||
# httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": xiao_age_sum}), ).model_dump()
|
||||
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": {}}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
if xiao_age_sum > 0 and xiao_age_sum >= 提取积分值:
|
||||
pass
|
||||
# 说明这里可以提现
|
||||
# 业务逻辑 第一步.需要判断这个用户是否已经领过 新手红包 如何判断, 查询新手红包数据库,如果对象存在,则直接不能再领取了;
|
||||
out_bill_no = generator.generate_str()
|
||||
transfer_amount = 10 # 必须参数转账的金额
|
||||
transferAccountsBody = {
|
||||
"appid": paymentCategory.appid,
|
||||
"out_bill_no": out_bill_no, # 必填 integer【商户单号】
|
||||
# 商户系统内部的商家单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
|
||||
"transfer_scene_id": "1000",
|
||||
# 必填 integer【转账场景ID】 该笔转账使用的转账场景,可前往“商户平台-产品中心-商家转账”中申请。如:1000(现金营销),1006(企业报销)等
|
||||
# "openid":"ohQkD7A-N93kljcFmkCyG6e_D9vg",
|
||||
"openid": self_mini_openid, # 必填 integer【收款用户OpenID】 用户在商户appid下的唯一标识。发起转账前需获取到用户的OpenID,获取方式详见参数说明。
|
||||
# "user_name":"757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45", # 【收款用户姓名】
|
||||
# 收款方真实姓名。需要加密传入,支持标准RSA算法和国密算法,公钥由微信侧提供。
|
||||
"transfer_amount": transfer_amount, # 必填 integer【转账金额】 转账金额单位为“分”。
|
||||
"transfer_remark": "新会员开通有礼", # 必填 string(32)【转账备注】 转账备注,用户收款时可见该备注信息,UTF8编码,最多允许32个字符
|
||||
"notify_url": "https://xiao.sixgou.com/demopay/transfer_back/",
|
||||
# 选填【通知地址】 异步接收微信支付结果通知的回调地址,通知url必须为公网可访问的URL,必须为HTTPS,不能携带参数。
|
||||
"user_recv_perception": "现金奖励", # 选填 【用户收款感知】 用户收款时感知到的收款原因将根据转账场景自动展示默认内容。如有其他展示需求,
|
||||
# 必填 array[TransferSceneReportInfo] 【转账场景报备信息】 各转账场景下需报备的内容,商户需要按照所属转账场景规则传参,详见转账场景报备信息字段说明。
|
||||
"transfer_scene_report_infos": [
|
||||
{
|
||||
"info_type": "活动名称", # 必填 string(15)【信息类型】 不能超过15个字符,商户所属转账场景下的信息类型,此字段内容为固定值
|
||||
"info_content": "新会员有礼", # 必填 【信息内容】 不能超过32个字符,商户所属转账场景下的信息内容,商户可按实际业务场景自定义传参
|
||||
},
|
||||
{
|
||||
"info_type": "奖励说明", "info_content": "注册会员抽奖一等奖",
|
||||
},
|
||||
],
|
||||
}
|
||||
# wechat_data = wechatPay(payment=paymentCategory).transferAccounts商家转账到零钱(transferAccountsBody=transferAccountsBody)
|
||||
# print("返回的数据", wechat_data)
|
||||
# package_info = jmespath.search(data=wechat_data, expression="package_info")
|
||||
# create_time = jmespath.search(data=wechat_data, expression="create_time")
|
||||
# out_bill_no = jmespath.search(data=wechat_data, expression="out_bill_no")
|
||||
# state = jmespath.search(data=wechat_data, expression="state")
|
||||
# transfer_bill_no = jmespath.search(data=wechat_data, expression="transfer_bill_no")
|
||||
# WechatTransferOrder.objects.create(
|
||||
# out_bill_no=out_bill_no, transfer_bill_no=transfer_bill_no, wx_create_time=create_time,
|
||||
# state=state, transfer_amount=transfer_amount, package_info=package_info
|
||||
# )
|
||||
# 前端调用的数据 = {
|
||||
# "mchId": paymentCategory.mchid, "appId": paymentCategory.appid, "package": package_info,
|
||||
# }
|
||||
# # 操作数据库,减掉提取的积分值
|
||||
# share分享者积分.objects.create(share分享者unionid=self_mini_unionid, share分享类型="提取积分", share分享积分=-1)
|
||||
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
else:
|
||||
pass
|
||||
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={"demo": "xiaozizi"}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
# 说明这里不能提现
|
||||
httpResData = BaseResponse(resData=ResData(listData=[""], dictData={}), ).model_dump()
|
||||
return Response(data=httpResData, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=False, methods=["post"], url_path="transfer_back")
|
||||
def six发起转账回调(self, request: WSGIRequest | Request):
|
||||
pass
|
||||
wechat_data = wechatPay(payment=paymentCategory).callBack回调解密(response_body=request.body, headers=request.headers)
|
||||
print(wechat_data)
|
||||
return Response()
|
||||
|
||||
|
||||
six商家转账ViewSetsRouter = DefaultRouter()
|
||||
six商家转账ViewSetsRouter.register(prefix="", viewset=six商家转账ViewSets, basename="")
|
||||
Reference in New Issue
Block a user