chenjunkai 6 år sedan
förälder
incheckning
78aa88dcd0

+ 71 - 0
Ansjer/file/apns-dev.pem

@@ -0,0 +1,71 @@
+Bag Attributes
+    friendlyName: Apple Development IOS Push Services: com.ansjer.zsavcloud
+    localKeyID: EE FA 88 7C 98 58 FD 7D 8C 91 F5 33 67 4F 73 49 BB AA E4 EE 
+subject=/UID=com.ansjer.zsavcloud/CN=Apple Development IOS Push Services: com.ansjer.zsavcloud/OU=772N5HXAR2/C=CN
+issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
+-----BEGIN CERTIFICATE-----
+MIIFjTCCBHWgAwIBAgIIS9oJMHjnoMgwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
+BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
+ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
+aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
+HhcNMTkwMTE0MDcyNzE3WhcNMjAwMTE0MDcyNzE3WjCBjDEkMCIGCgmSJomT8ixk
+AQEMFGNvbS5hbnNqZXIuenNhdmNsb3VkMUIwQAYDVQQDDDlBcHBsZSBEZXZlbG9w
+bWVudCBJT1MgUHVzaCBTZXJ2aWNlczogY29tLmFuc2plci56c2F2Y2xvdWQxEzAR
+BgNVBAsMCjc3Mk41SFhBUjIxCzAJBgNVBAYTAkNOMIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAxVcdPjJE7jqqFezK6Ws/hIgTb3npC62l7QTyOWFoi7pt
+Kz4QQaarV1oy7+vaTY1wi8BdSL5zi9puINXuBU50efj2b7Ev2elMSKFma2v96k8s
+t/fEX7x1bANjUjqZFY9A2rcoYpnTzsbBvw3UT2ljDw7W0KqvoYecmqhvzs2qcaxk
+54uCQOzY/4eKSwnWzDh/UmsQYKTm+PJfOXwV2T1ZiOzkntMkrW/olZpHbkWUY5WF
+LM7teMc+ubTxPLwqs7oe0gVGi2qaVPApnTkPyMys+wxK03o7bUXF2y/ZizO19Ww+
+TXV4zGhhDmYymkSs7VhgqgSbrg+f6vZRQ9y+0HVUKwIDAQABo4IB5TCCAeEwCQYD
+VR0TBAIwADAfBgNVHSMEGDAWgBSIJxcJqbYYYIvs67r2R1nFUlSjtzCCAQ8GA1Ud
+IASCAQYwggECMIH/BgkqhkiG92NkBQEwgfEwgcMGCCsGAQUFBwICMIG2DIGzUmVs
+aWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBh
+Y2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMg
+YW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNl
+cnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wKQYIKwYBBQUHAgEWHWh0
+dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMBMGA1UdJQQMMAoGCCsGAQUFBwMC
+ME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2Nl
+cnRpZmljYXRpb25hdXRob3JpdHkvd3dkcmNhLmNybDAdBgNVHQ4EFgQU7vqIfJhY
+/X2MkfUzZ09zSbuq5O4wCwYDVR0PBAQDAgeAMBAGCiqGSIb3Y2QGAwEEAgUAMA0G
+CSqGSIb3DQEBBQUAA4IBAQBhSQLhTOPAIubqCWQo/PE6Ibo8SIp7nJs3scn9SyxZ
+xJCZKWHJIsHQc8mlSshgNweWzMLXwHtOuV2P7Gu+4hVC6viUj35HlWuc42WEMD83
+Q9ztnbhHFEO27By0Ogv5j0MslxwkMZ1lQ5B/jdJ7I/IMa0pzmIZ75gcQC79Yur0Y
+EBrjSJhWESpwnP1165GdnfAMsoDRIICFPjH/RwVtcfoFqcujcmGlkDb/fRYI7sUN
+TQWayJWpTpl2kk6fToRWedwVsO+Wo6jesF93HziyoiMGv/ZsBqU97o5tc9yYb283
+FfyCQCIf/myb9lkxhYkwAEFcJiA1EvEIns1YogRlavsL
+-----END CERTIFICATE-----
+Bag Attributes
+    friendlyName: testAPN
+    localKeyID: EE FA 88 7C 98 58 FD 7D 8C 91 F5 33 67 4F 73 49 BB AA E4 EE 
+Key Attributes: <No Attributes>
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIP1sglTmNa+QCAggA
+MBQGCCqGSIb3DQMHBAiHnz0S7++cqgSCBMj6aT2tgl720pDqknYzMRi7vIFXd6FU
+QSy6j2EjiEq9JPFaSzGLMihGtNyMeJ6zDclzEJoP4+PC8tYBd5Ij2dVU0k0EEksv
+gEix8deokPB9npaksC/OP61vz9G40deMJ8URqKB9cpo6+zTpdO7ful0yAB++fLez
+y7qzAnd6T1MgJiMs7yBmQNq33UghOG9KYT+NTMT6hQ1CJ2l4iB6HJhW0X/sjo0qJ
+l9c+ccZqBwjG9DsXTi+Vx+hRDB6xD+E8aD8kwcrOuV5u+geRLQSnBFSc97CWi3aX
+OY+wClWEPwYwrx5g5tTXN3Ee07ydMzLA8CY6BjnsfCECtDNA5B//aGx6+BB1Zbd+
+YFg7xW7FC0VK1uq/gpsGsfRX6y+d1xkNw0UMaPRaxeRiqXuaK7iHHYWz6LHybw1m
+46ypsOEnLK+tHSv1XZgAGgM3zIE8YH1Ls6Hmtbzsnp1gSTzBmwBqx3WaCUi7sqYN
+oSUrQhBDoxXzwwCQ78KHqdme8V6uec9NRtv236y65jt1ycRSNVkZDrwUcqf8PpXG
+U7D0E6OmRLRTd91VTvTJOjLvCwYKhqt5VkF0kicSf2fE35Meejz2WW2KUKDCTyER
+Pd0Xi+u94JxXREdhDH0GVQSbfbJ5ieA5u0G7pYcDX8qOzIunECoxtzM03NVAhuAE
+s3axsDsBSQuSI3zMwxa4JusFdkL318GBeya9aQnojVfyu5oUCADZx69+/dn3Zru0
+0SLFEhYdSNJ+cqlrkNgyQk+dxO927hoZjjye59lWNcVzySdO0Qz7R6HmO+30DbG2
+5PIFdMzhNGfYMGOrIJWTpLM0XtBSCmTpOWfhf2CdpFhz9xLtq1lXOVMlGswUnoG1
+s3WENfQdiMESLmO1a07GYTT+b357TUqNUQzvC+kbbTYtk0GDP14a9obMsRvWhkNx
++uB04AYcFrnbzjn1d8wRnUmVbOjLFZ1T3FS0XgvHv3MsLRbFegBtHklGYwZJyG0i
+kDn3fixTMDQClRx7r+dh3Vj+bgent4n+h6Rs0XYpbufdqOUGoIKgG9PsgHtJESbc
+ii3TPMAtRGwRuya2G9Yka11k56PLg6oimJUZrh6CmYkRhBzbYnPFZBo03xgmM8lT
+8mkKmPCxCfDTq6ar844z7mv73dMcfshvkcurlsuf5SEIu8iFFD0D1FajP0fWbHQW
+weLz5LZBknMEfx1M0OqYLBIQGCjUlXuuXZ/U+Y0/lE0SV/ctciaM2IbWX7ZMVFzU
+Pd8ebPpKdoyhKw1RZjFTJNuPL6g8NBUcWZvfDIUuHTtuLy6Pz1P+jVPmQAtZicqi
+hu/MWSfjJS28MQyr8IhiHpx5WSGcCQMWZ4i9eHDwt88VYgwphB/15954LCOefHzK
+h2HpR+q6frB3sZ241a6sIFXLFSFeq6HzRxVWPi8UfPkwhXFC/XXhBDX0Om9lllXr
+GTGbFcKmZHM32V3Xznec2yUVSvf8TX3GrEjLXRHAG7U7URxzsnk7cqXURftHmMpZ
+O/xl9EXT4B1hfPGggcxY03hxrnCNbVn/K1CKEfx3zh2dZHYDZtZo0BosWl/RTaCY
+S9bPNneMaJz551uzHcA1vGPWqbQeJvykVP2hO1G/c6YTSCQIpw9YgGrXSL/k3vjI
+LIc=
+-----END ENCRYPTED PRIVATE KEY-----

BIN
Ansjer/test/util/__pycache__/spnsss.cpython-36.pyc


+ 71 - 0
Ansjer/test/util/apns-dev.pem

@@ -0,0 +1,71 @@
+Bag Attributes
+    friendlyName: Apple Development IOS Push Services: com.ansjer.zsavcloud
+    localKeyID: EE FA 88 7C 98 58 FD 7D 8C 91 F5 33 67 4F 73 49 BB AA E4 EE 
+subject=/UID=com.ansjer.zsavcloud/CN=Apple Development IOS Push Services: com.ansjer.zsavcloud/OU=772N5HXAR2/C=CN
+issuer=/C=US/O=Apple Inc./OU=Apple Worldwide Developer Relations/CN=Apple Worldwide Developer Relations Certification Authority
+-----BEGIN CERTIFICATE-----
+MIIFjTCCBHWgAwIBAgIIS9oJMHjnoMgwDQYJKoZIhvcNAQEFBQAwgZYxCzAJBgNV
+BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js
+ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3
+aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw
+HhcNMTkwMTE0MDcyNzE3WhcNMjAwMTE0MDcyNzE3WjCBjDEkMCIGCgmSJomT8ixk
+AQEMFGNvbS5hbnNqZXIuenNhdmNsb3VkMUIwQAYDVQQDDDlBcHBsZSBEZXZlbG9w
+bWVudCBJT1MgUHVzaCBTZXJ2aWNlczogY29tLmFuc2plci56c2F2Y2xvdWQxEzAR
+BgNVBAsMCjc3Mk41SFhBUjIxCzAJBgNVBAYTAkNOMIIBIjANBgkqhkiG9w0BAQEF
+AAOCAQ8AMIIBCgKCAQEAxVcdPjJE7jqqFezK6Ws/hIgTb3npC62l7QTyOWFoi7pt
+Kz4QQaarV1oy7+vaTY1wi8BdSL5zi9puINXuBU50efj2b7Ev2elMSKFma2v96k8s
+t/fEX7x1bANjUjqZFY9A2rcoYpnTzsbBvw3UT2ljDw7W0KqvoYecmqhvzs2qcaxk
+54uCQOzY/4eKSwnWzDh/UmsQYKTm+PJfOXwV2T1ZiOzkntMkrW/olZpHbkWUY5WF
+LM7teMc+ubTxPLwqs7oe0gVGi2qaVPApnTkPyMys+wxK03o7bUXF2y/ZizO19Ww+
+TXV4zGhhDmYymkSs7VhgqgSbrg+f6vZRQ9y+0HVUKwIDAQABo4IB5TCCAeEwCQYD
+VR0TBAIwADAfBgNVHSMEGDAWgBSIJxcJqbYYYIvs67r2R1nFUlSjtzCCAQ8GA1Ud
+IASCAQYwggECMIH/BgkqhkiG92NkBQEwgfEwgcMGCCsGAQUFBwICMIG2DIGzUmVs
+aWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBh
+Y2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMg
+YW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNl
+cnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wKQYIKwYBBQUHAgEWHWh0
+dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMBMGA1UdJQQMMAoGCCsGAQUFBwMC
+ME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2Nl
+cnRpZmljYXRpb25hdXRob3JpdHkvd3dkcmNhLmNybDAdBgNVHQ4EFgQU7vqIfJhY
+/X2MkfUzZ09zSbuq5O4wCwYDVR0PBAQDAgeAMBAGCiqGSIb3Y2QGAwEEAgUAMA0G
+CSqGSIb3DQEBBQUAA4IBAQBhSQLhTOPAIubqCWQo/PE6Ibo8SIp7nJs3scn9SyxZ
+xJCZKWHJIsHQc8mlSshgNweWzMLXwHtOuV2P7Gu+4hVC6viUj35HlWuc42WEMD83
+Q9ztnbhHFEO27By0Ogv5j0MslxwkMZ1lQ5B/jdJ7I/IMa0pzmIZ75gcQC79Yur0Y
+EBrjSJhWESpwnP1165GdnfAMsoDRIICFPjH/RwVtcfoFqcujcmGlkDb/fRYI7sUN
+TQWayJWpTpl2kk6fToRWedwVsO+Wo6jesF93HziyoiMGv/ZsBqU97o5tc9yYb283
+FfyCQCIf/myb9lkxhYkwAEFcJiA1EvEIns1YogRlavsL
+-----END CERTIFICATE-----
+Bag Attributes
+    friendlyName: testAPN
+    localKeyID: EE FA 88 7C 98 58 FD 7D 8C 91 F5 33 67 4F 73 49 BB AA E4 EE 
+Key Attributes: <No Attributes>
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIP1sglTmNa+QCAggA
+MBQGCCqGSIb3DQMHBAiHnz0S7++cqgSCBMj6aT2tgl720pDqknYzMRi7vIFXd6FU
+QSy6j2EjiEq9JPFaSzGLMihGtNyMeJ6zDclzEJoP4+PC8tYBd5Ij2dVU0k0EEksv
+gEix8deokPB9npaksC/OP61vz9G40deMJ8URqKB9cpo6+zTpdO7ful0yAB++fLez
+y7qzAnd6T1MgJiMs7yBmQNq33UghOG9KYT+NTMT6hQ1CJ2l4iB6HJhW0X/sjo0qJ
+l9c+ccZqBwjG9DsXTi+Vx+hRDB6xD+E8aD8kwcrOuV5u+geRLQSnBFSc97CWi3aX
+OY+wClWEPwYwrx5g5tTXN3Ee07ydMzLA8CY6BjnsfCECtDNA5B//aGx6+BB1Zbd+
+YFg7xW7FC0VK1uq/gpsGsfRX6y+d1xkNw0UMaPRaxeRiqXuaK7iHHYWz6LHybw1m
+46ypsOEnLK+tHSv1XZgAGgM3zIE8YH1Ls6Hmtbzsnp1gSTzBmwBqx3WaCUi7sqYN
+oSUrQhBDoxXzwwCQ78KHqdme8V6uec9NRtv236y65jt1ycRSNVkZDrwUcqf8PpXG
+U7D0E6OmRLRTd91VTvTJOjLvCwYKhqt5VkF0kicSf2fE35Meejz2WW2KUKDCTyER
+Pd0Xi+u94JxXREdhDH0GVQSbfbJ5ieA5u0G7pYcDX8qOzIunECoxtzM03NVAhuAE
+s3axsDsBSQuSI3zMwxa4JusFdkL318GBeya9aQnojVfyu5oUCADZx69+/dn3Zru0
+0SLFEhYdSNJ+cqlrkNgyQk+dxO927hoZjjye59lWNcVzySdO0Qz7R6HmO+30DbG2
+5PIFdMzhNGfYMGOrIJWTpLM0XtBSCmTpOWfhf2CdpFhz9xLtq1lXOVMlGswUnoG1
+s3WENfQdiMESLmO1a07GYTT+b357TUqNUQzvC+kbbTYtk0GDP14a9obMsRvWhkNx
++uB04AYcFrnbzjn1d8wRnUmVbOjLFZ1T3FS0XgvHv3MsLRbFegBtHklGYwZJyG0i
+kDn3fixTMDQClRx7r+dh3Vj+bgent4n+h6Rs0XYpbufdqOUGoIKgG9PsgHtJESbc
+ii3TPMAtRGwRuya2G9Yka11k56PLg6oimJUZrh6CmYkRhBzbYnPFZBo03xgmM8lT
+8mkKmPCxCfDTq6ar844z7mv73dMcfshvkcurlsuf5SEIu8iFFD0D1FajP0fWbHQW
+weLz5LZBknMEfx1M0OqYLBIQGCjUlXuuXZ/U+Y0/lE0SV/ctciaM2IbWX7ZMVFzU
+Pd8ebPpKdoyhKw1RZjFTJNuPL6g8NBUcWZvfDIUuHTtuLy6Pz1P+jVPmQAtZicqi
+hu/MWSfjJS28MQyr8IhiHpx5WSGcCQMWZ4i9eHDwt88VYgwphB/15954LCOefHzK
+h2HpR+q6frB3sZ241a6sIFXLFSFeq6HzRxVWPi8UfPkwhXFC/XXhBDX0Om9lllXr
+GTGbFcKmZHM32V3Xznec2yUVSvf8TX3GrEjLXRHAG7U7URxzsnk7cqXURftHmMpZ
+O/xl9EXT4B1hfPGggcxY03hxrnCNbVn/K1CKEfx3zh2dZHYDZtZo0BosWl/RTaCY
+S9bPNneMaJz551uzHcA1vGPWqbQeJvykVP2hO1G/c6YTSCQIpw9YgGrXSL/k3vjI
+LIc=
+-----END ENCRYPTED PRIVATE KEY-----

+ 30 - 0
Ansjer/test/util/spnsss.py

@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2019/1/3 16:46
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: spnsss.py
+@Contact: chanjunkai@163.com
+"""
+import time
+import apns2
+from var_dump import var_dump
+
+
+daytime = time.strftime("%Y%m%d%H%M", time.localtime(1547256103))
+print(daytime)
+
+cli = apns2.APNSClient(mode="dev", client_cert="apns-dev.pem", password='111111')
+alert = apns2.PayloadAlert(body="body!", title="title!")
+payload = apns2.Payload(alert=alert)
+n = apns2.Notification(payload=payload, priority=apns2.PRIORITY_LOW)
+response = cli.push(n=n, device_token="ce85e307e4938ea71d9b2fb8f21de2224d4bb67c")
+
+var_dump(response)
+assert response.status_code == 200, response.reason
+assert response.apns_id

+ 2 - 1
Ansjer/urls.py

@@ -4,7 +4,7 @@ from django.urls import path, re_path
 from Controller import FeedBackInfo, EquipmentOTA, EquipmentInfo, EquipmentSensor, StreamMedia, AdminManage, AppInfo, \
     AccessLog, Test, MealManage, DeviceMeal, HlsManage, DeviceManage, EquipmentStatus, SysManage, DeviceLog, LogAccess, \
     EquipmentManager, LogManager, PermissionManager, OTAEquipment, shareUserPermission, UserManger, CheckUserData, \
-    UserController, CloudVod, OrderContrller, VodBucket
+    UserController, CloudVod, OrderContrller, VodBucket, DetectController
 
 urlpatterns = [
     url(r'^account/authcode$', UserController.authCodeView.as_view()),
@@ -102,6 +102,7 @@ urlpatterns = [
 
     url(r'^detect/add$', EquipmentInfo.AddDetectionView.as_view()),
     url(r'^detect/status$', EquipmentInfo.DetectStatusView.as_view()),
+    url(r'^detect/(?P<operation>.*)$', DetectController.DetectControllerView.as_view()),
     url(r'^cloudVod/(?P<operation>.*)$', CloudVod.CloudVodView.as_view()),
     url(r'^meal/(?P<operation>.*)$', MealManage.MealView.as_view()),
     url(r'^order/(?P<operation>.*)$', OrderContrller.OrderView.as_view()),

+ 65 - 0
Controller/DetectController.py

@@ -0,0 +1,65 @@
+#!/usr/bin/env python3  
+# -*- coding: utf-8 -*-  
+"""
+@Copyright (C) ansjer cop Video Technology Co.,Ltd.All rights reserved.
+@AUTHOR: ASJRD018
+@NAME: AnsjerFormal
+@software: PyCharm
+@DATE: 2019/1/14 15:57
+@Version: python3.6
+@MODIFY DECORD:ansjer dev
+@file: DetectController.py
+@Contact: chanjunkai@163.com
+"""
+from django.utils.decorators import method_decorator
+from django.views.decorators.csrf import csrf_exempt
+from django.views.generic.base import View
+import time
+import apns2
+from Object.ResponseObject import ResponseObject
+import os
+from Ansjer.config import BASE_DIR
+
+
+class DetectControllerView(View):
+    @method_decorator(csrf_exempt)
+    def dispatch(self, *args, **kwargs):
+        return super(DetectControllerView, self).dispatch(*args, **kwargs)
+
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        response = ResponseObject()
+        if operation is None:
+            return response.json(444, 'error path')
+        if operation == 'push':
+            return self.do_push(request_dict, response)
+
+    def do_push(self, request_dict, response):
+        device_token = request_dict.get('device_token')
+
+        try:
+            daytime = time.strftime("%Y%m%d%H%M", time.localtime(1547256103))
+            print(daytime)
+            pem_path = os.path.join(BASE_DIR, 'Ansjer/file/apns-dev.pem')
+            cli = apns2.APNSClient(mode="dev", client_cert=pem_path, password='111111')
+            alert = apns2.PayloadAlert(body="body!", title="title!")
+            payload = apns2.Payload(alert=alert)
+            n = apns2.Notification(payload=payload, priority=apns2.PRIORITY_LOW)
+            res = cli.push(n=n, device_token=device_token)
+            # assert res.status_code == 200, res.reason
+            # assert res.apns_id
+            if res.status_code == 200:
+                return response.json(0)
+            else:
+                return response.json(404,res.reason)
+        except Exception as e:
+            return response.json(10, repr(e))

+ 0 - 1
Controller/Test.py

@@ -50,7 +50,6 @@ class Test(View):
 
     def get(self, request, *args, **kwargs):
         return self.updatePrimaryMaster()
-
     # 增加
 
     def post(self, request, *args, **kwargs):

+ 0 - 2
DB/data.sql

@@ -1,2 +0,0 @@
-alter table device_user add language varchar(16) NULL;
-ALTER TABLE device_info MODIFY COLUMN NickName varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci

+ 24 - 0
templates/success.html

@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport"
+          content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
+    <title>msg</title>
+</head>
+<body>
+<div class="content"
+     style="text-align:center;overflow: hidden;padding:30% 10% 10% 10%;margin:0 10%;background-color: #fff;box-shadow:0 4px 20px rgba(0,0,0,0.1);word-break: break-all;min-height: 300px">
+    <span style="padding: 40px 70px; background-color: #EB6F5A;border-radius:10px;color:#fff;"
+          onclick="payOKButton()">付款成功</span>
+</div>
+</body>
+<script type="text/javascript">
+    // 点击付款成功按钮
+    function payOKButton() {
+        // 复杂数据
+        // JS通知WKWebView
+        window.webkit.messageHandlers.jsCallOC.postMessage({"status": 1});
+    }
+</script>
+</html>