53 lines
2.1 KiB
Python
53 lines
2.1 KiB
Python
import json
|
||
from datetime import datetime
|
||
|
||
import requests
|
||
from Crypto.PublicKey import RSA
|
||
import base64
|
||
from Crypto.Cipher import PKCS1_v1_5
|
||
|
||
# 使用公钥加密
|
||
def rsa_long_encrypt(public_key,msg, length=100):
|
||
"""
|
||
单次加密串的长度最大为 (key_size/8)-11
|
||
1024bit的证书用100, 2048bit的证书用 200
|
||
"""
|
||
pub_key = RSA.importKey(open(public_key).read())
|
||
# pub_key = RSA.importKey(open('E:/YinJian/银建支付对接维护说明/富友/fy-enterprise-wechat-payment-push/pub_key.pem').read())
|
||
pubobj = PKCS1_v1_5.new(pub_key)
|
||
res = []
|
||
for i in range(0, len(msg), length):
|
||
res.append(pubobj.encrypt(msg[i:i + length].encode('GBK')))
|
||
return base64.b64encode(b"".join(res)).decode('GBK')
|
||
|
||
|
||
class H5Main:
|
||
def __init__(self, sub_mchnt_cd):
|
||
self.mchnt_cd = "0001000F7152279"
|
||
self.sub_mchnt_cd = sub_mchnt_cd
|
||
self.url = 'https://aggpcpay.fuioupay.com/aggh5Gate.fuiou'
|
||
self.notify_url = "http://web.jiyuankeshang.com/api4/paymentCallBack"
|
||
self.page_notify_url = "http://web.jiyuankeshang.com/api4/page_notify"
|
||
# self.notify_url = "http://172.16.6.15:3006/paymentCallBack"
|
||
|
||
def unified_order(self, order_no, total, description):
|
||
param = {
|
||
"mchnt_cd": self.mchnt_cd,
|
||
"sub_mchnt_cd": self.sub_mchnt_cd,
|
||
"order_date": datetime.now().strftime("%Y%m%d"),
|
||
"order_id": order_no,
|
||
"order_amt": total,
|
||
"page_notify_url": self.page_notify_url,
|
||
"back_notify_url": self.notify_url,
|
||
"ver": "4.0.0",
|
||
"goods_name": "云学堂年费",
|
||
"goods_detail": description,
|
||
"fee_type": "CNY",
|
||
}
|
||
pub_key_location = 'pub_key.pem'
|
||
# pub_key_location = 'E:\YinJian\银建支付对接维护说明\技培\jp-enterprise-wechat-payment-push\pub_key.pem'
|
||
print("======================发起支付====================",param)
|
||
# 加密
|
||
message = json.dumps(param)
|
||
encrypted_message = rsa_long_encrypt(pub_key_location,message,100)
|
||
return json.dumps({"message": encrypted_message}) |