|
|
|
@@ -1,7 +1,9 @@
|
|
1
|
1
|
# -*- coding: utf-8 -*-
|
|
2
|
2
|
|
|
|
3
|
+import base64
|
|
3
|
4
|
import json
|
|
4
|
5
|
|
|
|
6
|
+from Cryptodome.Cipher import AES
|
|
5
|
7
|
from django.conf import settings
|
|
6
|
8
|
from tencentcloud.common import credential
|
|
7
|
9
|
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
|
|
|
|
@@ -16,8 +18,8 @@ operator_id = tencentcloud_cfg.get('operator_id')
|
|
16
|
18
|
template_id = tencentcloud_cfg.get('template_id')
|
|
17
|
19
|
secret_id = tencentcloud_cfg.get('secret_id')
|
|
18
|
20
|
secret_key = tencentcloud_cfg.get('secret_key')
|
|
19
|
|
-callback_secret_id = tencentcloud_cfg.get('callback_secret_id')
|
|
20
|
21
|
callback_secret_key = tencentcloud_cfg.get('callback_secret_key')
|
|
|
22
|
+callback_secret_token = tencentcloud_cfg.get('callback_secret_token')
|
|
21
|
23
|
endpoint = tencentcloud_cfg.get('endpoint')
|
|
22
|
24
|
file_endpoint = tencentcloud_cfg.get('file_endpoint')
|
|
23
|
25
|
|
|
|
|
@@ -304,3 +306,32 @@ def create_scheme_url(flow_id=None, name=None, mobile=None, card_type='ID_CARD',
|
|
304
|
306
|
resp = {}
|
|
305
|
307
|
|
|
306
|
308
|
return resp
|
|
|
309
|
+
|
|
|
310
|
+
|
|
|
311
|
+def decode_aes256(data, encryption_key):
|
|
|
312
|
+ iv = encryption_key[0:16]
|
|
|
313
|
+ aes = AES.new(encryption_key, AES.MODE_CBC, iv)
|
|
|
314
|
+ d = aes.decrypt(data)
|
|
|
315
|
+ unpad = lambda s: s[0:-ord(d[-1:])]
|
|
|
316
|
+ return unpad(d)
|
|
|
317
|
+
|
|
|
318
|
+
|
|
|
319
|
+def test_decode():
|
|
|
320
|
+ # https://qian.tencent.com/developers/company/callback_types_v2
|
|
|
321
|
+ data = "62KE4r5Wz0yHzEpMOwVRbM1KV0pPjj+cmJkT+i65MMscgfHAdNP+9K0nV/fFw1xriwi08APc/wM0mHprE43Hc91VPhRDnu2Wn0+bjzgjmy/FgZKZATR9oquy0/BCWu4C77AjkpkoU1/E7gGLr8M9u9t7zbS4AkkGK5xL5TtwI0sS+CMygmyV7bRjxebMycI52U3QJiwDRIPxFO+7yqeXYXV9AQrRskpCDBNFGW72bh+Ixw9dtX00kWcwVQ93V+mayrvdQ8oGSsL32m72kbBfahsIvIxSYSdDAEeTyokqKGfaLWD27vm55QG218IFKEsOJFDGdqCF+IBcM/+rOFeOrewvP5ehIO2KjFBecTDn0RQTlIiokXIQ4zJKvu6njePFRFoFCZjd4oiEIVn/OBw+rjXml3qwgVBQjPRtYdvDJFNENlVjlkVVmLWeS8MIdqsFWhm6Sa7O8X57mwc0cLJ22mGbyVEzNTFqeFJ/mkueW0leLcoZdjv/+IxZusqa1cpfwzkZhwi5rY6kJffNkkrxIc6OeRvpU4ECgBe/b+kxX+ObC0z9u7nzoZAOHx4akYviyIU5B1romjdfHQ/wDr5udm4Rl4NBhU/6V06Rvaadw0Ta9oBkZHGNxFWv32MnL7fVA0zVNOFDP8n+kaQiNGFAXLF4F5oIItYc5+Gp/IxfkltEki7ni7LztViE7b/ZiKSM+gzQn6fLsJ/dlUoZmh141Y0V/GPpsbxBOnWCjBZdNkLTKxdKCMScLCTysJxv7l6Swff8nAEurbzx1tvyhJAvUDnIaLyP8pRPRFq8p0xm3ZVpOo9k7A952XxVHSs40g4sr/Dihkn60aVhGtKK9DueCzn8P3cWG4TYc03M1hNlPfF+UAfnvQ1ZYAMKT/XPLqYtgRFpRkK96YfVecIrfUe9MjWl0/g4hYCAAOJurFoeGwkJiyQ8Q7DCI5EaHa3s/vI621yQyytC6D2u86RiDJxMW0PdvkUfayT7iPwC83EsfEzpQXr0yeSCQCSBgNByEuCNnZl8LAhYl05Y9+bgCzSPt6EUvmaXclYL+/EPrEmi+hzIdXUwBfhXgICT8MteJgMSgmJM2FjjGxy6uZtfHKRIzf1wk6OORPkPJtMgjlMtMs6VFC62EEeo5Xy2v1S95WT/WQ0tnGR8KjbNnmjNSRyD8VtS2mjlLXaK0xRb71YGt57O19YxQQ3R/Hq9zGqOjG+Agdl+pcvh47RlF8o3CnlU7Q=="
|
|
|
322
|
+ encryption_key = 'TencentEssEncryptTestKey12345678'
|
|
|
323
|
+ return callback_decode(data, encryption_key)
|
|
|
324
|
+
|
|
|
325
|
+
|
|
|
326
|
+def callback_decode(data, encryption_key=None):
|
|
|
327
|
+ # 此处传入密文,如果接收到的数据是{"encrypt":"base64后的密文"}
|
|
|
328
|
+ # data = 'base64后的密文'
|
|
|
329
|
+ data = base64.b64decode(data)
|
|
|
330
|
+ encryption_key = encryption_key or callback_secret_key
|
|
|
331
|
+ # encryption_key = bytes(encryption_key or callback_secret_key, encoding="utf8")
|
|
|
332
|
+ # 此处传入CallbackUrlKey
|
|
|
333
|
+ e = decode_aes256(data, encryption_key)
|
|
|
334
|
+ # print(type(e))
|
|
|
335
|
+ # print(e)
|
|
|
336
|
+ # print(str(e, encoding="utf8"))
|
|
|
337
|
+ return json.loads(e)
|