Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
ypt_mgw_local
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
苏星豪
ypt_mgw_local
Commits
acfae641
提交
acfae641
authored
12月 17, 2024
作者:
李思鑫
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
zsk 支付相关
上级
d4ae7f00
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
218 行增加
和
105 行删除
+218
-105
public_key.txt
wx/cert/zsk/dev/req/public_key.txt
+0
-0
private_key.txt
wx/cert/zsk/dev/resp/private_key.txt
+0
-0
public_key.txt
wx/cert/zsk/dev/resp/public_key.txt
+0
-0
public_key.txt
wx/cert/zsk/prod/req/public_key.txt
+3
-0
models.py
wx/models.py
+2
-2
views.py
wx/views.py
+171
-58
zskpay.py
wx/zskpay.py
+42
-45
没有找到文件。
wx/cert/zsk/req/public_key.txt
→
wx/cert/zsk/
dev/
req/public_key.txt
浏览文件 @
acfae641
File moved
wx/cert/zsk/resp/private_key.txt
→
wx/cert/zsk/
dev/
resp/private_key.txt
浏览文件 @
acfae641
File moved
wx/cert/zsk/resp/public_key.txt
→
wx/cert/zsk/
dev/
resp/public_key.txt
浏览文件 @
acfae641
File moved
wx/cert/zsk/prod/req/public_key.txt
0 → 100644
浏览文件 @
acfae641
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFROPf3SA7LPmGcNioy4u1ub+tSR9bNhwYc1vdWhCp6Q3AjNSdXQNy3nTUFxtehmmFXTd2nHoY1ogApvecL+6Uks4ExakQTv20UUbXoRZsAUW3QU018+ljqwkB+DcxWViwiXdCBIMvsNSHIDIxx/PyX1HO3Ok6iB3bhQkrm7zlhQIDAQAB
-----END PUBLIC KEY-----
wx/models.py
浏览文件 @
acfae641
...
...
@@ -26,7 +26,6 @@ class Pay(models.Model):
cert_serial_no
=
models
.
CharField
(
_
(
'商户证书序列号'
),
max_length
=
100
,
blank
=
True
,
null
=
True
)
cert_path
=
models
.
CharField
(
_
(
'证书地址'
),
max_length
=
200
)
pay_id
=
models
.
CharField
(
_
(
'商户号'
),
max_length
=
100
)
remark
=
models
.
CharField
(
_
(
'备注'
),
max_length
=
200
,
blank
=
True
,
null
=
True
)
comp_abbr
=
models
.
CharField
(
_
(
'公司缩写'
),
max_length
=
100
,
blank
=
True
,
null
=
True
)
send_hb_method
=
models
.
SmallIntegerField
(
_
(
'发放类型'
),
blank
=
True
,
null
=
True
)
...
...
@@ -37,7 +36,8 @@ class Pay(models.Model):
pay_platform_pn
=
models
.
CharField
(
_
(
'支付平台项目编码'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
aes_key
=
models
.
CharField
(
_
(
'aes密码'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
aes_iv
=
models
.
CharField
(
_
(
'aes偏移值'
),
max_length
=
50
,
blank
=
True
,
null
=
True
)
public_key_id
=
models
.
CharField
(
_
(
'公钥id'
),
max_length
=
500
,
blank
=
True
,
null
=
True
)
public_key
=
models
.
CharField
(
_
(
'公钥'
),
max_length
=
500
,
blank
=
True
,
null
=
True
)
class
Meta
:
verbose_name
=
_
(
'微信商户平台'
)
...
...
wx/views.py
浏览文件 @
acfae641
...
...
@@ -70,6 +70,7 @@ from utils.security_os import decryptQueryString
from
.wx_miniprogram
import
WxMiniprogram
from
datacenter.decorator_utils
import
throttle_request
from
django.core.exceptions
import
ObjectDoesNotExist
from
.zskpay
import
ZSKPay
def
decrypt_11
(
code
):
c
=
''
...
...
@@ -363,6 +364,14 @@ def get_activity(company_id,label_code,lng=0,lat=0,phone='',activity_id=0, jmcpi
city
=
adr
[
'city'
]
if
city
!=
'吐鲁番市'
:
return
data
# 五星酒厂 只在贵州出奖
if
company_id
==
'200399'
and
lng
and
lat
:
lng_lat
=
gcj02_to_bd09
(
lng
,
lat
)
adr
=
getAddressInfoByBaiDuApi
(
lng_lat
)
province
=
adr
[
'province'
]
if
province
!=
'贵州省'
:
return
data
cur
=
connection
.
cursor
()
...
...
@@ -401,25 +410,28 @@ def get_activity(company_id,label_code,lng=0,lat=0,phone='',activity_id=0, jmcpi
data
[
'package_id'
]
=
package_id
data
[
'label_pk_id'
]
=
d
.
infor
[
'label_pk_id'
]
data
[
'label_pk_code'
]
=
d
.
infor
[
'label_pk_code'
]
stock_dev
=
d
.
get_stk_dev
()
#print(lb, json.dumps(stock_dev))
stock_dev_len
=
len
(
stock_dev
)
if
stock_dev_len
>
0
:
for
sto
in
stock_dev
:
#print(sto['bill_no'])
data
[
'batch_no_arr'
]
.
append
(
sto
[
'bill_no'
])
if
sto
[
'vtype_id'
]
==
2
and
c
.
name
==
sto
[
'company'
]:
data
[
'is_ck'
]
=
True
if
not
fh_tm
:
fh_tm
=
sto
[
"tm"
]
elif
sto
[
'vtype_id'
]
==
1
and
c
.
name
==
sto
[
'company'
]:
if
not
rk_tm
:
rk_tm
=
sto
[
"tm"
]
if
sto
[
"agent"
][
"id"
]:
data
[
'agent_id'
]
=
sto
[
"agent"
][
"id"
]
data
[
'batch_no'
]
=
stock_dev
[
stock_dev_len
-
1
][
'bill_no'
]
#print(product_id)
try
:
stock_dev
=
d
.
get_stk_dev
()
#print(lb, json.dumps(stock_dev))
stock_dev_len
=
len
(
stock_dev
)
if
stock_dev_len
>
0
:
for
sto
in
stock_dev
:
#print(sto['bill_no'])
data
[
'batch_no_arr'
]
.
append
(
sto
[
'bill_no'
])
if
sto
[
'vtype_id'
]
==
2
and
c
.
name
==
sto
[
'company'
]:
data
[
'is_ck'
]
=
True
if
not
fh_tm
:
fh_tm
=
sto
[
"tm"
]
elif
sto
[
'vtype_id'
]
==
1
and
c
.
name
==
sto
[
'company'
]:
if
not
rk_tm
:
rk_tm
=
sto
[
"tm"
]
if
sto
[
"agent"
][
"id"
]:
data
[
'agent_id'
]
=
sto
[
"agent"
][
"id"
]
data
[
'batch_no'
]
=
stock_dev
[
stock_dev_len
-
1
][
'bill_no'
]
except
Exception
as
e
:
pass
if
product_id
==
0
:
lb
=
wuliu_label_code
if
wuliu_label_code
else
label_code
...
...
@@ -427,9 +439,10 @@ def get_activity(company_id,label_code,lng=0,lat=0,phone='',activity_id=0, jmcpi
d
=
label_sys_info
(
lb
,
company
,
has_price
=
False
)
#print(d)
product_id
=
d
[
'product'
][
'id'
]
package_id
=
d
[
'package'
][
'id'
]
if
d
[
'package'
][
'id'
]:
package_id
=
d
[
'package'
][
'id'
]
data
[
'package_id'
]
=
package_id
data
[
'product_id'
]
=
d
[
'product'
][
'id'
]
data
[
'package_id'
]
=
package_id
data
[
'product_name'
]
=
d
[
'product'
][
'name'
]
data
[
'batch_no'
]
=
d
[
'qc'
]
data
[
'label_pk_id'
]
=
d
[
'label_pk_id'
]
...
...
@@ -1543,6 +1556,14 @@ def wx_process_label_scan(request,company_id,app_id=None):
act_id
=
'null'
wx_labelscan_id
=
None
# 2024-12-09 Jonathan 市场反应包装厂将康庄大道的标签用给了辽宁铁研客户 故此需要做采集判断
if
company_id
==
"180087"
:
cur
.
execute
(
f
"select count(0) from mes_labelbindpx where company_id = 243885 and (bottle_code = '{label_code}')"
)
r
=
cur
.
fetchone
()
if
r
and
r
[
0
]
>
0
:
company_id
=
"243885"
app_id
=
"0"
papePath
=
PagePath
.
objects
.
filter
(
company_id
=
company_id
,
app_id
=
app_id
)
if
papePath
:
papePath
=
papePath
[
0
]
...
...
@@ -2297,7 +2318,7 @@ def ajax_get_activity(request):
need_jmcpid
=
False
if
company_id
==
"158353"
and
label_code
.
startswith
(
'9170'
)
==
False
:
need_jmcpid
=
True
if
company_id
==
"208869"
or
company_id
==
"208500"
or
company_id
==
"211376"
or
company_id
==
"107413"
or
company_id
==
"210165"
:
if
company_id
==
"208869"
or
company_id
==
"208500"
or
company_id
==
"211376"
or
company_id
==
"107413"
or
company_id
==
"210165"
or
company_id
==
"200399"
or
company_id
==
"255607"
:
need_jmcpid
=
True
if
need_jmcpid
:
if
not
jmcpid
:
...
...
@@ -2317,7 +2338,7 @@ def ajax_get_activity(request):
r
=
cur
.
fetchone
()
if
r
[
0
]
<
1
:
return
JsonResponse
({
'e'
:
'不在活动范围内 no bind'
})
elif
company_id
==
"208869"
or
company_id
==
"107413"
or
company_id
==
"210165"
:
elif
company_id
==
"208869"
or
company_id
==
"107413"
or
company_id
==
"210165"
or
company_id
==
"200399"
or
company_id
==
"255607"
:
s
=
f
"select label_code from logistics.mes_bottlcap where cap = '{jmcpid}' order by id limit 1"
cur
.
execute
(
s
)
r
=
cur
.
fetchone
()
...
...
@@ -2458,6 +2479,8 @@ def ajax_get_activity(request):
max_month_win_cnt
=
20
elif
company_id
==
"238273"
:
max_day_win_cnt
=
6
elif
company_id
==
"200399"
:
max_day_win_cnt
=
6
cur
.
execute
(
f
"select count(0) from sales_consumerwinner where consumer_id = {consumer_id} and company_id = {company_id} and tm> '{datetime.datetime.now().strftime('
%
Y-
%
m-
%
d')}'"
)
cnt
=
cur
.
fetchone
()
...
...
@@ -3464,6 +3487,8 @@ def wx_oauth_info(request,company_id,app_id='0'):
subscribe
=
rs
[
'subscribe'
]
if
subscribe
==
0
and
company_id
==
"134666"
:
return
HttpResponseRedirect
(
"https://tjfnew.china315net.com/dist/chuanjiu/wxgz.html"
)
if
subscribe
==
0
and
company_id
==
"190399"
:
return
HttpResponseRedirect
(
"https://tjfnew.china315net.com/dist/hqxf/wxgz.html"
)
user_url
=
"https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh-CN"
d
=
requests
.
get
(
user_url
.
format
(
access_token
,
data
[
'openid'
]))
...
...
@@ -5758,7 +5783,7 @@ def wx_label_scan_record(request):
fwcode
=
cur
.
fetchone
()[
0
]
# 辽宁铁研后的公司走新查询接口
if
int
(
compid
)
>=
243885
:
if
int
(
compid
)
>=
243885
or
compid
==
'180087'
:
d
=
LabelQuery
(
int
(
compid
),
fwcode
)
p
=
d
.
get_product
()
if
'id'
in
d
.
package
:
...
...
@@ -5792,7 +5817,7 @@ def wx_label_scan_record(request):
data
[
'fh_time'
]
=
sto
[
'tm'
]
# 辽宁铁研
if
compid
==
'243885'
:
if
compid
==
'243885'
or
compid
==
'180087'
:
xcode
=
d
.
infor
[
'label_pk_code'
]
data
[
'boxes'
]
=
xcode
if
xcode
:
...
...
@@ -6187,6 +6212,7 @@ def wx_consumer_activity_win_record(request):
company_id
=
int
(
company_id
))
.
exclude
(
award
=
None
)
if
winner
:
for
w
in
winner
:
tm_redeemed
=
''
if
w
.
tm_redeemed
:
tm_redeemed
=
w
.
tm_redeemed
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
...
...
@@ -7110,13 +7136,13 @@ def channel_rebate_action(request,what):
#
@csrf_exempt
@csrf_exempt
def
test_send_hb
(
request
):
openid
=
u'o
39S9jhRCWRQd5yozq5eoRhH0Oc0
'
openid
=
u'o
uB2r5irnr6RRGzTAB4KeYoUvuCM
'
#appid = 'wxe9a919e0d3c419ee'
appid
=
'wx73986617af90c47b
'
appid
=
'
'
money
=
100
company_id
=
255607
company_id
=
158353
data
=
{
'e'
:
''
}
...
...
@@ -7134,8 +7160,13 @@ def send_hb(openid,money,company_id,appid=''):
# return send_hb_sxtb(openid,money,appid)
if
str
(
company_id
)
==
"19257"
:
return
send_hb_mjh
(
openid
,
money
)
pay_platform
=
None
if
str
(
company_id
)
==
"107413"
:
pay_platform
=
'zsk'
company_id
=
16687
wp
=
Pay
.
objects
.
filter
(
company_id
=
int
(
company_id
))
wp
=
Pay
.
objects
.
filter
(
company_id
=
int
(
company_id
)
,
pay_platform
=
pay_platform
)
if
wp
:
wp
=
wp
[
0
]
wx_app_id
=
wp
.
appid
...
...
@@ -7143,6 +7174,11 @@ def send_hb(openid,money,company_id,appid=''):
wx_mch_key
=
wp
.
key
path
=
wp
.
cert_path
send_name
=
wp
.
remark
public_key_id
=
None
public_key
=
None
if
wp
.
public_key_id
:
public_key_id
=
wp
.
public_key_id
public_key
=
wp
.
public_key
if
wp
.
pay_platform
==
'cq'
:
if
appid
:
...
...
@@ -7164,13 +7200,40 @@ def send_hb(openid,money,company_id,appid=''):
er
[
'return_msg'
]
=
'发放成功'
er
[
'send_listid'
]
=
err
[
'data'
][
'orderId'
]
return
er
if
wp
.
pay_platform
==
'zsk'
:
pay_plat_appid
=
wp
.
pay_platform_appid
pay_plat_key
=
wp
.
pay_platform_key
print
(
'zsk---'
,
wx_app_id
,
wx_mch_id
,
pay_plat_appid
,
pay_plat_key
,
path
)
order_no
=
str
(
time
.
strftime
(
'
%
Y
%
m
%
d
%
H
%
M
%
S'
,
time
.
localtime
(
time
.
time
())))
+
str
(
time
.
time
())
.
replace
(
'.'
,
''
)[
-
7
:]
zsk
=
ZSKPay
(
wx_app_id
,
wx_mch_id
,
pay_plat_appid
,
pay_plat_key
,
path
)
err
=
zsk
.
transfer
({
'company_id'
:
company_id
,
'transferNo'
:
order_no
,
#中奖记录id
"transferAmount"
:
30
,
"transferRemark"
:
"红包"
,
"openid"
:
openid
,
#oCZuC5RiJ8RId4qacC0inhy74vRc
})
er
=
{
'return_code'
:
'fail'
,
'result_code'
:
'fail'
,
'return_msg'
:
'网络超时'
,
'send_listid'
:
''
,
}
#print(err)
if
err
[
'code'
]
==
200
:
er
[
'return_code'
]
=
'SUCCESS'
er
[
'result_code'
]
=
'SUCCESS'
er
[
'return_msg'
]
=
'发放成功'
er
[
'send_listid'
]
=
order_no
return
er
#if (wp.send_hb_method == 1 and wp.version == "V3") or openid == "ol_or5uHr5WPOMijCqkOobncuLE8":
if
wp
.
send_hb_method
==
1
and
wp
.
version
==
"V3"
:
if
appid
:
wx_app_id
=
appid
with
open
(
r'E:\work\datacenter\wx\cert\sxgt\
apiclient_key.pem'
)
as
f
:
with
open
(
path
+
'
apiclient_key.pem'
)
as
f
:
PRIVATE_KEY
=
f
.
read
()
#logging.basicConfig(filename=os.path.join('F:\hzy\log\wechatpay', 'demo.log'), level=logging.DEBUG, filemode='a', format='%(asctime)s - %(process)s - %(levelname)s: %(message)s')
#LOGGER = logging.getLogger("demo")
...
...
@@ -7182,10 +7245,12 @@ def send_hb(openid,money,company_id,appid=''):
apiv3_key
=
wp
.
key_v3
,
appid
=
wx_app_id
,
notify_url
=
''
,
cert_dir
=
'E:
\\
work
\\
datacenter
\\
wx
\\
cert
\\
sxgt
\\
'
,
cert_dir
=
path
,
logger
=
None
,
partner_mode
=
False
,
proxy
=
None
)
proxy
=
None
,
public_key
=
public_key
,
public_key_id
=
public_key_id
)
order_no
=
str
(
time
.
strftime
(
'
%
Y
%
m
%
d
%
H
%
M
%
S'
,
time
.
localtime
(
time
.
time
())))
+
str
(
time
.
time
())
.
replace
(
'.'
,
''
)[
-
7
:]
transfer_detail_list
=
[{
"out_detail_no"
:
order_no
,
"transfer_amount"
:
int
(
money
),
"transfer_remark"
:
"商家转帐"
,
"openid"
:
openid
}]
err
=
wxpay_v3
.
transfer_batch
(
...
...
@@ -7196,7 +7261,7 @@ def send_hb(openid,money,company_id,appid=''):
total_num
=
1
,
transfer_detail_list
=
transfer_detail_list
)
print
(
err
)
#
print(err)
er
=
{
'return_code'
:
'fail'
,
'result_code'
:
'fail'
,
...
...
@@ -13180,6 +13245,38 @@ def get_nfc_code_by_label_code(request):
else
:
data
[
'e'
]
=
'数据丢失'
return
JsonResponse
(
data
)
def
get_nfc_bind_product
(
request
):
data
=
{
'msg'
:
''
,
'code'
:
200
,
'data'
:{}}
fwcode
=
request
.
GET
.
get
(
'fwcode'
,
''
)
if
fwcode
:
fwcode
=
decryptQueryString
(
fwcode
)
cur
=
connection
.
cursor
()
s
=
f
"""select id, label_pkg, tm, nfc, treasure_code, product_id, dt_product, remark
from label.lbl_nfc where label_code = '{fwcode}' order by id desc limit 1"""
cur
.
execute
(
s
)
r
=
cur
.
fetchone
()
if
r
:
data
[
'data'
]
=
{
'id'
:
r
[
0
],
'label_pkg'
:
r
[
1
],
'tm'
:
r
[
2
],
'nfc'
:
r
[
3
],
'treasure_code'
:
r
[
4
],
'product_id'
:
r
[
5
],
'dt_product'
:
r
[
6
],
'remark'
:
r
[
7
],
}
else
:
data
[
'e'
]
=
'未绑定'
data
[
'code'
]
=
'402'
else
:
data
=
{
'e'
:
'数据丢失'
,
'code'
:
400
,
'data'
:{}
}
return
JsonResponse
(
data
)
# 20240711 2116 【川酒集团】-终端店返利(实物或者酒票)开发
@csrf_exempt
...
...
@@ -13633,28 +13730,43 @@ def wx_consumer_winner_active(request, what):
else
:
data
[
'e'
]
=
'数据丢失'
return
JsonResponse
(
data
)
data
[
'e'
]
=
'未知的请求内容'
return
JsonResponse
(
data
)
from
.zskpay
import
ZSKPay
def
test_zsk
(
request
):
zsk_pay_instance
=
ZSKPay
()
respones
=
zsk_pay_instance
.
transfer
({
'transferDetailList'
:
[
{
'transferNo'
:
'tj_consumer_winner_001'
,
"transferAmount"
:
30
,
"transferRemark"
:
"红包"
,
"openid"
:
"oCZuC5RiJ8RId4qacC0inhy74vRc"
,
elif
what
==
'record'
:
consumer_id
=
request
.
GET
.
get
(
'consumer_id'
,
''
)
if
consumer_id
:
consumer_id
=
int
(
decrypt_p
(
consumer_id
))
cur
=
connection
.
cursor
()
s
=
f
"""
select
id,
status,
(select name from sales_activityawards where id = a.award_id),
to_char(tm,'yyyy-mm-dd HH24:MI:SS'),
photo
from
sales_consumerwinneractive a
where
consumer_id = {consumer_id}
"""
cur
.
execute
(
s
)
rs
=
cur
.
fetchall
()
status_dict
=
{
0
:
'等待资料上传'
,
1
:
'审核中'
,
2
:
'已发放'
,
3
:
'上传资料不符合活动要求'
}
]
})
# resp = zsk_pay_instance.transfer_info({
# 'batchNo': 'tjhd-001',
# 'transferNo':'tj_consumer_winner_001',
# })
return
JsonResponse
({
'success'
:
1
})
data
[
'record'
]
=
[]
for
r
in
rs
:
data
[
'record'
]
.
append
({
'id'
:
r
[
0
],
'status'
:
r
[
1
],
'award_name'
:
r
[
2
],
'tm'
:
r
[
3
],
'photo'
:
r
[
4
],
'status_name'
:
status_dict
[
r
[
1
]]
})
else
:
data
[
'e'
]
=
'数据丢失'
return
JsonResponse
(
data
)
data
[
'e'
]
=
'未知的请求内容'
return
JsonResponse
(
data
)
\ No newline at end of file
wx/zskpay.py
浏览文件 @
acfae641
#橙券支付
#中数科支付
#接口文档 https://doc.apipost.net/docs/detail/34ff33e7bce7000?target_id=ef551d7ba901a
...
...
@@ -19,45 +18,34 @@ from cryptography.hazmat.primitives.asymmetric import rsa
from
cryptography.hazmat.primitives
import
serialization
,
hashes
from
cryptography.hazmat.primitives.asymmetric
import
padding
from
wx.models
import
*
env
=
'prod'
domainMap
=
{
'dev'
:
'http://ywymtest-api.azhiyun.cn'
,
'prod'
:
'https://ywym-api.qidianpw.com'
}
env
=
'dev'
domain
=
'http://ywymtest-api.azhiyun.cn'
sign
=
{
'dev'
:
{
'ym-id'
:
'645206198756315136'
,
'ym-key'
:
'15a5ba24711540f0bd3246b92a7c7daa'
},
'prod'
:{}
}
domain
=
domainMap
[
env
]
class
ZSKPay
:
def
__init__
(
self
):
def
__init__
(
self
,
appid
,
taxId
,
ymId
,
ymKey
,
cert
):
self
.
MAX_ENCRYPTION_SIZE
=
117
#214
# 计算签名
def
generate_sign
(
self
,
data
):
# # 1. 整理参数
# sorted_keys = sorted(data.keys())
# sorted_data = []
# for key in sorted_keys:
# sorted_data.append(f"{key}={data[key]}")
# # 2. 连接参数
# params_string = '&'.join(sorted_data)
# # 3. 添加签名秘钥
# params_string += f"&key={self.k}"
# # 4. MD5 加密
# sign = hashlib.md5(params_string.encode('utf-8')).hexdigest().upper()
return
'sign'
self
.
appid
=
appid
self
.
domain
=
domain
self
.
taxId
=
taxId
self
.
ymId
=
ymId
self
.
ymKey
=
ymKey
self
.
cert
=
cert
def
encrypt_data
(
self
,
data
):
encrypted_chunks
=
[]
current_directory
=
os
.
getcwd
()
with
open
(
current_directory
+
"/wx/cert/zsk/req/
public_key.txt"
,
"rb"
)
as
public_file
:
with
open
(
self
.
cert
+
"
public_key.txt"
,
"rb"
)
as
public_file
:
public_key_content
=
public_file
.
read
()
public_key_loaded
=
serialization
.
load_pem_public_key
(
...
...
@@ -110,17 +98,17 @@ class ZSKPay:
# print("加密后数据:", type(data), data)
headers
=
{
'Content-Type'
:
'application/json'
,
**
sign
[
env
]
'ym-id'
:
self
.
ymId
,
'ym-key'
:
self
.
ymKey
}
request
=
urllib
.
request
.
Request
(
domain
+
url
,
bytes
(
json
.
dumps
({
'data'
:
data
}),
"utf8"
),
headers
,
method
=
'POST'
)
request
=
urllib
.
request
.
Request
(
self
.
domain
+
url
,
bytes
(
json
.
dumps
({
'data'
:
data
}),
"utf8"
),
headers
,
method
=
'POST'
)
# 发送请求并获取响应
try
:
response
=
urllib
.
request
.
urlopen
(
request
)
# 读取响应体
res_body
=
response
.
read
()
.
decode
(
'utf-8'
)
print
(
"返回结果:"
,
res_body
)
return
json
.
loads
(
res_body
)
...
...
@@ -131,19 +119,26 @@ class ZSKPay:
#转账
def
transfer
(
self
,
data
):
print
(
'开始转账:'
)
if
not
data
[
'transferNo'
]
or
not
data
[
'transferAmount'
]
or
not
data
[
'transferRemark'
]
or
not
data
[
'openid'
]
:
raise
ValueError
(
"transferDetailList 必传"
)
company_id
=
data
.
get
(
'company_id'
,
''
)
batchNo
=
data
.
get
(
'transferNo'
,
self
.
generate_batchNo
())
batchName
=
data
.
get
(
'batchName'
,
'活动批次'
)
batchRemark
=
data
.
get
(
'batchRemark'
,
'无'
)
transferDetailList
=
[]
transferDetailList
.
append
(
data
)
handle_data
=
{
"taxId"
:
1836580691238883330
,
"batchNo"
:
data
.
get
(
'batchNo'
,
self
.
generate_batchNo
())
,
"appid"
:
data
.
get
(
'appid'
,
'wxb8516c6064271fe4'
)
,
"batchName"
:
data
.
get
(
'batchName'
,
'活动批次'
)
,
"batchRemark"
:
data
.
get
(
'batchRemark'
,
'默认备注'
)
,
"taxId"
:
self
.
taxId
,
"batchNo"
:
batchNo
,
"appid"
:
self
.
appid
,
"batchName"
:
batchName
,
"batchRemark"
:
batchRemark
,
"totalAmount"
:
0
,
"totalNum"
:
0
,
#转账总笔数
"transferSceneId"
:
""
,
#转账场景ID
"notifyUrl"
:
""
,
#回调地址
#转账明细列表
"transferDetailList"
:
data
.
get
(
'transferDetailList'
,[])
"transferDetailList"
:
transferDetailList
# [
# {
# "transferNo": "tj_consumer_winner_001", //商家明细单号
...
...
@@ -154,16 +149,18 @@ class ZSKPay:
# }
# ]
}
if
len
(
data
[
'transferDetailList'
])
==
0
:
raise
ValueError
(
"transferDetailList 必传"
)
for
item
in
data
[
'transferDetailList'
]:
#计算总金额和总笔数
for
item
in
transferDetailList
:
#计算总金额和总笔数
# if not item.get('transferNo') or not item.get('transferAmount') or not item.get('transferRemark') or not item.get('openid'):
# raise ValueError("缺少转账参数")
handle_data
[
'totalAmount'
]
+=
item
[
'transferAmount'
]
handle_data
[
'totalNum'
]
+=
1
print
(
'加密前数据----:'
,
handle_data
)
return
self
.
http_post
(
data
=
handle_data
,
url
=
'/wx-pay/transfer'
)
# print('加密前数据----:',handle_data)
body
=
self
.
http_post
(
data
=
handle_data
,
url
=
'/wx-pay/transfer'
)
print
(
'resp body'
,
body
)
# if body and body.get('code', '') == 200:
return
body
#转账信息查询
def
tranfer_info
(
self
,
data
=
{}):
...
...
@@ -171,11 +168,11 @@ class ZSKPay:
raise
ValueError
(
"缺少参数"
)
encrypt_body
=
self
.
http_post
(
data
=
data
,
url
=
'/wx-pay/transfer-info'
)
decrypted_body
=
self
.
decrypt_data
(
encrypt_body
[
'data'
])
print
(
'解密后的查询数据'
,
decrypted_body
)
#
print('解密后的查询数据',decrypted_body)
return
json
.
loads
(
decrypted_body
)
# 生成订单号
def
generate_batchNo
():
def
generate_batchNo
(
self
):
timestamp
=
int
(
time
.
time
())
random_number
=
random
.
randint
(
1000
,
9999
)
batchNo
=
'tj'
+
str
(
timestamp
)
+
str
(
random_number
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论