• api_DZFPKJ & api_DZFPCX(get_AES_url代码优化)


    通过AES加密网站的接口来传值,不需要手动加密字符串后复制过来传值。

     1 #coding:utf-8
     2 import requests
     3 import re
     4 def get_aes_url(key, text):
     5     url = 'http://www.ssleye.com/des/web_aes_encrypt'
     6     header = {
     7         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
     8     }
     9     payload = {
    10         "text": text,
    11         "encode_flag": "utf8",
    12         "key": key,
    13         "iv": "",
    14         "mode": "ECB",
    15         "padding": "pkcs5",
    16         "out_mode": "base64"
    17     }
    18     r = requests.post(url=url, headers=header, data=payload)
    19     result = r.text
    20     aa = re.findall("<pre>(.+?)</pre>", result)
    21     bb = str(aa[0])
    22     return bb
    23 
    24 if __name__ == '__main__':
    25     # key = 'WuMlCJRN8zO886dw'
    26     # text = '<REQUEST_FPKJXX><FPKJXX_FPTXX><NSRSBH>330201999999868</NSRSBH><NSRMC>航信培训企业</NSRMC><DDLSH>3302019999998682223</DDLSH><DDH></DDH><DDDATE>2018-07-20</DDDATE><BMB_BBH>13.0</BMB_BBH><XHF_DZ><![CDATA[宁波研发园]]></XHF_DZ><XHF_DH><![CDATA[88776655]]></XHF_DH><XHF_YHZH><![CDATA[中国银行6228480310540239016]]></XHF_YHZH><GHFMC><![CDATA[Nobita]]></GHFMC><GHF_NSRSBH><![CDATA[330203999999018]]></GHF_NSRSBH><GHF_DZ><![CDATA[宁波研发园]]></GHF_DZ><GHF_GDDH><![CDATA[55667788]]></GHF_GDDH><GHF_SJ>13867866196</GHF_SJ><GHF_EMAIL><![CDATA[364942727@qq.com]]></GHF_EMAIL><GHF_YHZH><![CDATA[光大银行6228480310540239018]]></GHF_YHZH><KPLY>999</KPLY><KPY>Nobita</KPY><SKY>Nobita</SKY><FHR>Nobita</FHR><KPLX>1</KPLX><YFP_DM></YFP_DM><YFP_HM></YFP_HM><KPHJJE>0.1</KPHJJE><HJBHSJE>0.1</HJBHSJE><HJSE>0</HJSE><BZ><![CDATA[公共能耗费,面积]]></BZ><BB></BB><WB></WB><FPZL></FPZL><SGBZ></SGBZ></FPKJXX_FPTXX><FPKJXX_XMXXS><FPKJXX_XMXX><XMMC><![CDATA[1]]></XMMC><XMDW></XMDW><GGXH></GGXH><XMSL>0</XMSL><HSBZ>0</HSBZ><XMDJ>0</XMDJ><FPHXZ>0</FPHXZ><SPBM>20300000</SPBM><ZXBM></ZXBM><YHZCBS>0</YHZCBS><LSLBS>3</LSLBS><ZZSTSGL></ZZSTSGL><XMJE>0.1</XMJE><SL>0</SL><SE>0</SE><KCE></KCE><KCQHSJE></KCQHSJE></FPKJXX_XMXX></FPKJXX_XMXXS></REQUEST_FPKJXX>'
    27     # aa = get_aes_url(key, text)
    28     # print(aa)
    29     # print(type(aa))
    30     pass

    api_DZFPKJ 代码如下:

      1 #coding:utf-8
      2 from get_AES_url import get_aes_url
      3 from get_urlencode import jm_urlencode
      4 from get_Base64 import str_base64
      5 from get_Sha1 import hash_hmac
      6 from hashlib import sha1
      7 import requests
      8 import time
      9 #定义参数
     10 host = "http://test2.51fapiaonb.cn:4011/DZFP_Four"
     11 data_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
     12 nsrsbh = "330201999999868"  #这里填需要查询的纳税人识别号
     13 DDLSH_str1 = "3302019999998"
     14 DDLSH_str2 = "684229"
     15 DDLSH = DDLSH_str1 + DDLSH_str2
     16 ddh = ""
     17 date = "2018-07-20"
     18 KPLX = "1"  #1 蓝票 2 红票
     19 YFP_DM = ""
     20 YFP_HM = ""
     21 SGBZ = ""  #传空
     22 YHZCBS = "0"  #优惠标识
     23 LSLBS = "3"  #0税率标志
     24 ZZSTSGL = ""  #内容
     25 SPBM = "20300000"  #免税 4030000000000000000 不征收    6010000000000000000
     26 #所有商品行数据
     27 KPHJJE = "0.1"
     28 HJBHSJE = "0.1"
     29 HJSE = "0"
     30 #单个商品行数据
     31 XMJE = "0.1"
     32 SL = "0"
     33 SE = "0"
     34 #发票开具信息
     35 mxs = "<FPKJXX_XMXX>" + 
     36         "<XMMC><![CDATA[1]]></XMMC>" + 
     37         "<XMDW></XMDW>" + 
     38         "<GGXH></GGXH>" + 
     39         "<XMSL>0</XMSL>" + 
     40         "<HSBZ>0</HSBZ>" + 
     41         "<XMDJ>0</XMDJ>" + 
     42         "<FPHXZ>0</FPHXZ>" + 
     43         "<SPBM>" + SPBM + "</SPBM>" + 
     44         "<ZXBM></ZXBM>" + 
     45         "<YHZCBS>" + YHZCBS + "</YHZCBS>" + 
     46         "<LSLBS>" + LSLBS + "</LSLBS>" + 
     47         "<ZZSTSGL>" + ZZSTSGL + "</ZZSTSGL>" + 
     48         "<XMJE>" + XMJE + "</XMJE>" + 
     49         "<SL>" + SL + "</SL>" + 
     50         "<SE>" + SE + "</SE>" + 
     51         "<KCE></KCE>" + 
     52         "<KCQHSJE></KCQHSJE>" + 
     53         "</FPKJXX_XMXX>"
     54 
     55 #电子发票外部API-DZFPKJ(电子发票开具)
     56 original_content = "<REQUEST_FPKJXX>" + 
     57                     "<FPKJXX_FPTXX>" + 
     58                     "<NSRSBH>" + nsrsbh + "</NSRSBH>" + 
     59                     "<NSRMC>航信培训企业</NSRMC>" + 
     60                     "<DDLSH>" + DDLSH + "</DDLSH>" + 
     61                     "<DDH>" + ddh + "</DDH>" + 
     62                     "<DDDATE>" + date + "</DDDATE>" + 
     63                     "<BMB_BBH>13.0</BMB_BBH>" + 
     64                     "<XHF_DZ><![CDATA[宁波研发园]]></XHF_DZ>" + 
     65                     "<XHF_DH><![CDATA[88776655]]></XHF_DH>" + 
     66                     "<XHF_YHZH><![CDATA[中国银行6228480310540239016]]></XHF_YHZH>" + 
     67                     "<GHFMC><![CDATA[Nobita]]></GHFMC>" + 
     68                     "<GHF_NSRSBH><![CDATA[330203999999018]]></GHF_NSRSBH>" + 
     69                     "<GHF_DZ><![CDATA[宁波研发园]]></GHF_DZ>" + 
     70                     "<GHF_GDDH><![CDATA[55667788]]></GHF_GDDH>" + 
     71                     "<GHF_SJ>13867866196</GHF_SJ>" + 
     72                     "<GHF_EMAIL><![CDATA[364942727@qq.com]]></GHF_EMAIL>" + 
     73                     "<GHF_YHZH><![CDATA[光大银行6228480310540239018]]></GHF_YHZH>" + 
     74                     "<KPLY>999</KPLY>" + 
     75                     "<KPY>Nobita</KPY>" + 
     76                     "<SKY>Nobita</SKY>" + 
     77                     "<FHR>Nobita</FHR>" + 
     78                     "<KPLX>" + KPLX + "</KPLX>" + 
     79                     "<YFP_DM>" + YFP_DM + "</YFP_DM>" + 
     80                     "<YFP_HM>" + YFP_HM + "</YFP_HM>" + 
     81                     "<KPHJJE>" + KPHJJE + "</KPHJJE>" + 
     82                     "<HJBHSJE>" + HJBHSJE + "</HJBHSJE>" + 
     83                     "<HJSE>" + HJSE + "</HJSE>" + 
     84                     "<BZ><![CDATA[公共能耗费,面积]]></BZ>" + 
     85                     "<BB></BB>" + 
     86                     "<WB></WB>" + 
     87                     "<FPZL></FPZL>" + 
     88                     "<SGBZ>" + SGBZ + "</SGBZ>" + 
     89                     "</FPKJXX_FPTXX>" + 
     90                     "<FPKJXX_XMXXS>" + 
     91                     mxs + 
     92                     "</FPKJXX_XMXXS>" + 
     93                     "</REQUEST_FPKJXX>"
     94 #AES密钥
     95 key = 'WuMlCJRN8zO886dw'
     96 # print(original_content)
     97 ''' AES加密算法的网站:http://www.ssleye.com/aes_cipher.html
     98     AES加密(加解密算法/工作模式/填充方式:AES/ECB/PKCS5Padding;测试环境key值:WuMlCJRN8zO886dw
     99 '''
    100 #初始数据original_content进行AES和Base64加密后,得到original_content_Aes
    101 original_content_Aes_Base64 = get_aes_url(key, original_content)
    102 
    103 #通用报文初始数据(DZFPCX发票查询)
    104 original_data = '<?xml version="1.0" encoding="utf-8"?>' + 
    105                 "<interface>" + 
    106                 "<globalInfo>" + 
    107                 "<version>4.0</version>" + 
    108                 "<interfaceCode>DZFPKJ</interfaceCode>" + 
    109                 "<token>{}</token>".format(nsrsbh) + 
    110                 "<requestTime>{}</requestTime>".format(data_time) + 
    111                 "</globalInfo>" + 
    112                 "<Data>" + 
    113                 "<content>{}</content>".format(original_content_Aes_Base64) + 
    114                 "</Data>" + 
    115                 "</interface>"
    116 
    117 #通用报文原始数据original_data进行Base64加密后,得到RequestParam,再进行urlencode解码
    118 RequestParam_Base64 = str_base64(original_data)
    119 # print("通用报文进行Base64加密后:
    ", RequestParam_Base64)
    120 RequestParam_Base64_Urlencode = jm_urlencode(RequestParam_Base64)
    121 # print("通用报文进行Base64和Urlencode加密后:
    ", RequestParam_Base64_Urlencode)
    122 
    123 #RequestParam通过HMAC-SHA1加密,得到Signature
    124 Signature = hash_hmac('I7GBo4w9E6dmGlLVJMaVtXrhbNqp4KBh', RequestParam_Base64, sha1)
    125 # print("通用报文进行Base64和Hash_hmac加密后:
    ", Signature)
    126 
    127 #请求体data构建
    128 RequestParam = RequestParam_Base64_Urlencode
    129 data = "RequestParam=" + RequestParam + "&Signature=" + Signature
    130 result = requests.post(url=host, params=data)
    131 # print(result.url)
    132 print('订单流水号为:
    {}'.format(DDLSH))
    133 print('发票查询返回报文为:
    {}'.format(result.text))

    api_DZFPKJ_QDFP 代码如下:

      1 #coding:utf-8
      2 from get_AES_url import get_aes_url
      3 from get_urlencode import jm_urlencode
      4 from get_Base64 import str_base64
      5 from get_Sha1 import hash_hmac
      6 from hashlib import sha1
      7 import requests
      8 import time
      9 #定义参数
     10 host = "http://test2.51fapiaonb.cn:4011/DZFP_Four"
     11 data_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
     12 nsrsbh = "330201999999868"  #这里填需要查询的纳税人识别号
     13 DDLSH_str1 = "3302019999998"
     14 DDLSH_str2 = "684229"
     15 DDLSH = DDLSH_str1 + DDLSH_str2
     16 ddh = ""
     17 date = "2018-07-20"
     18 KPLX = "1"  #1 蓝票 2 红票
     19 YFP_DM = ""
     20 YFP_HM = ""
     21 SGBZ = ""  #传空
     22 YHZCBS = "0"  #优惠标识
     23 LSLBS = "3"  #0税率标志
     24 ZZSTSGL = ""  #内容
     25 SPBM = "20300000"  #免税 4030000000000000000 不征收    6010000000000000000
     26 #所有商品行数据
     27 KPHJJE = "1.0"
     28 HJBHSJE = "1.0"
     29 HJSE = "0"
     30 #单个商品行数据
     31 XMJE = "0.1"
     32 SL = "0"
     33 SE = "0"
     34 #发票开具信息
     35 mxs = "<FPKJXX_XMXX>" + 
     36         "<XMMC><![CDATA[1]]></XMMC>" + 
     37         "<XMDW></XMDW>" + 
     38         "<GGXH></GGXH>" + 
     39         "<XMSL>0</XMSL>" + 
     40         "<HSBZ>0</HSBZ>" + 
     41         "<XMDJ>0</XMDJ>" + 
     42         "<FPHXZ>0</FPHXZ>" + 
     43         "<SPBM>20300000</SPBM>" + 
     44         "<ZXBM></ZXBM>" + 
     45         "<YHZCBS>0</YHZCBS>" + 
     46         "<LSLBS>3</LSLBS>" + 
     47         "<ZZSTSGL></ZZSTSGL>" + 
     48         "<XMJE>0.1</XMJE>" + 
     49         "<SL>0</SL>" + 
     50         "<SE>0</SE>" + 
     51         "<KCE></KCE>" + 
     52         "<KCQHSJE></KCQHSJE>" + 
     53         "</FPKJXX_XMXX>" + 
     54         "<FPKJXX_XMXX>" + 
     55         "<XMMC><![CDATA[1]]></XMMC>" + 
     56         "<XMDW></XMDW>" + 
     57         "<GGXH></GGXH>" + 
     58         "<XMSL>0</XMSL>" + 
     59         "<HSBZ>0</HSBZ>" + 
     60         "<XMDJ>0</XMDJ>" + 
     61         "<FPHXZ>0</FPHXZ>" + 
     62         "<SPBM>20300000</SPBM>" + 
     63         "<ZXBM></ZXBM>" + 
     64         "<YHZCBS>0</YHZCBS>" + 
     65         "<LSLBS>3</LSLBS>" + 
     66         "<ZZSTSGL></ZZSTSGL>" + 
     67         "<XMJE>0.1</XMJE>" + 
     68         "<SL>0</SL>" + 
     69         "<SE>0</SE>" + 
     70         "<KCE></KCE>" + 
     71         "<KCQHSJE></KCQHSJE>" + 
     72         "</FPKJXX_XMXX>" + 
     73         "<FPKJXX_XMXX>" + 
     74         "<XMMC><![CDATA[1]]></XMMC>" + 
     75         "<XMDW></XMDW>" + 
     76         "<GGXH></GGXH>" + 
     77         "<XMSL>0</XMSL>" + 
     78         "<HSBZ>0</HSBZ>" + 
     79         "<XMDJ>0</XMDJ>" + 
     80         "<FPHXZ>0</FPHXZ>" + 
     81         "<SPBM>20300000</SPBM>" + 
     82         "<ZXBM></ZXBM>" + 
     83         "<YHZCBS>0</YHZCBS>" + 
     84         "<LSLBS>3</LSLBS>" + 
     85         "<ZZSTSGL></ZZSTSGL>" + 
     86         "<XMJE>0.1</XMJE>" + 
     87         "<SL>0</SL>" + 
     88         "<SE>0</SE>" + 
     89         "<KCE></KCE>" + 
     90         "<KCQHSJE></KCQHSJE>" + 
     91         "</FPKJXX_XMXX>" + 
     92         "<FPKJXX_XMXX>" + 
     93         "<XMMC><![CDATA[1]]></XMMC>" + 
     94         "<XMDW></XMDW>" + 
     95         "<GGXH></GGXH>" + 
     96         "<XMSL>0</XMSL>" + 
     97         "<HSBZ>0</HSBZ>" + 
     98         "<XMDJ>0</XMDJ>" + 
     99         "<FPHXZ>0</FPHXZ>" + 
    100         "<SPBM>20300000</SPBM>" + 
    101         "<ZXBM></ZXBM>" + 
    102         "<YHZCBS>0</YHZCBS>" + 
    103         "<LSLBS>3</LSLBS>" + 
    104         "<ZZSTSGL></ZZSTSGL>" + 
    105         "<XMJE>0.1</XMJE>" + 
    106         "<SL>0</SL>" + 
    107         "<SE>0</SE>" + 
    108         "<KCE></KCE>" + 
    109         "<KCQHSJE></KCQHSJE>" + 
    110         "</FPKJXX_XMXX>" + 
    111 "<FPKJXX_XMXX>" + 
    112         "<XMMC><![CDATA[1]]></XMMC>" + 
    113         "<XMDW></XMDW>" + 
    114         "<GGXH></GGXH>" + 
    115         "<XMSL>0</XMSL>" + 
    116         "<HSBZ>0</HSBZ>" + 
    117         "<XMDJ>0</XMDJ>" + 
    118         "<FPHXZ>0</FPHXZ>" + 
    119         "<SPBM>20300000</SPBM>" + 
    120         "<ZXBM></ZXBM>" + 
    121         "<YHZCBS>0</YHZCBS>" + 
    122         "<LSLBS>3</LSLBS>" + 
    123         "<ZZSTSGL></ZZSTSGL>" + 
    124         "<XMJE>0.1</XMJE>" + 
    125         "<SL>0</SL>" + 
    126         "<SE>0</SE>" + 
    127         "<KCE></KCE>" + 
    128         "<KCQHSJE></KCQHSJE>" + 
    129         "</FPKJXX_XMXX>" + 
    130         "<FPKJXX_XMXX>" + 
    131         "<XMMC><![CDATA[1]]></XMMC>" + 
    132         "<XMDW></XMDW>" + 
    133         "<GGXH></GGXH>" + 
    134         "<XMSL>0</XMSL>" + 
    135         "<HSBZ>0</HSBZ>" + 
    136         "<XMDJ>0</XMDJ>" + 
    137         "<FPHXZ>0</FPHXZ>" + 
    138         "<SPBM>20300000</SPBM>" + 
    139         "<ZXBM></ZXBM>" + 
    140         "<YHZCBS>0</YHZCBS>" + 
    141         "<LSLBS>3</LSLBS>" + 
    142         "<ZZSTSGL></ZZSTSGL>" + 
    143         "<XMJE>0.1</XMJE>" + 
    144         "<SL>0</SL>" + 
    145         "<SE>0</SE>" + 
    146         "<KCE></KCE>" + 
    147         "<KCQHSJE></KCQHSJE>" + 
    148         "</FPKJXX_XMXX>" + 
    149 "<FPKJXX_XMXX>" + 
    150         "<XMMC><![CDATA[1]]></XMMC>" + 
    151         "<XMDW></XMDW>" + 
    152         "<GGXH></GGXH>" + 
    153         "<XMSL>0</XMSL>" + 
    154         "<HSBZ>0</HSBZ>" + 
    155         "<XMDJ>0</XMDJ>" + 
    156         "<FPHXZ>0</FPHXZ>" + 
    157         "<SPBM>20300000</SPBM>" + 
    158         "<ZXBM></ZXBM>" + 
    159         "<YHZCBS>0</YHZCBS>" + 
    160         "<LSLBS>3</LSLBS>" + 
    161         "<ZZSTSGL></ZZSTSGL>" + 
    162         "<XMJE>0.1</XMJE>" + 
    163         "<SL>0</SL>" + 
    164         "<SE>0</SE>" + 
    165         "<KCE></KCE>" + 
    166         "<KCQHSJE></KCQHSJE>" + 
    167         "</FPKJXX_XMXX>" + 
    168         "<FPKJXX_XMXX>" + 
    169         "<XMMC><![CDATA[1]]></XMMC>" + 
    170         "<XMDW></XMDW>" + 
    171         "<GGXH></GGXH>" + 
    172         "<XMSL>0</XMSL>" + 
    173         "<HSBZ>0</HSBZ>" + 
    174         "<XMDJ>0</XMDJ>" + 
    175         "<FPHXZ>0</FPHXZ>" + 
    176         "<SPBM>20300000</SPBM>" + 
    177         "<ZXBM></ZXBM>" + 
    178         "<YHZCBS>0</YHZCBS>" + 
    179         "<LSLBS>3</LSLBS>" + 
    180         "<ZZSTSGL></ZZSTSGL>" + 
    181         "<XMJE>0.1</XMJE>" + 
    182         "<SL>0</SL>" + 
    183         "<SE>0</SE>" + 
    184         "<KCE></KCE>" + 
    185         "<KCQHSJE></KCQHSJE>" + 
    186         "</FPKJXX_XMXX>" + 
    187 "<FPKJXX_XMXX>" + 
    188         "<XMMC><![CDATA[1]]></XMMC>" + 
    189         "<XMDW></XMDW>" + 
    190         "<GGXH></GGXH>" + 
    191         "<XMSL>0</XMSL>" + 
    192         "<HSBZ>0</HSBZ>" + 
    193         "<XMDJ>0</XMDJ>" + 
    194         "<FPHXZ>0</FPHXZ>" + 
    195         "<SPBM>20300000</SPBM>" + 
    196         "<ZXBM></ZXBM>" + 
    197         "<YHZCBS>0</YHZCBS>" + 
    198         "<LSLBS>3</LSLBS>" + 
    199         "<ZZSTSGL></ZZSTSGL>" + 
    200         "<XMJE>0.1</XMJE>" + 
    201         "<SL>0</SL>" + 
    202         "<SE>0</SE>" + 
    203         "<KCE></KCE>" + 
    204         "<KCQHSJE></KCQHSJE>" + 
    205         "</FPKJXX_XMXX>" + 
    206         "<FPKJXX_XMXX>" + 
    207         "<XMMC><![CDATA[1]]></XMMC>" + 
    208         "<XMDW></XMDW>" + 
    209         "<GGXH></GGXH>" + 
    210         "<XMSL>0</XMSL>" + 
    211         "<HSBZ>0</HSBZ>" + 
    212         "<XMDJ>0</XMDJ>" + 
    213         "<FPHXZ>0</FPHXZ>" + 
    214         "<SPBM>20300000</SPBM>" + 
    215         "<ZXBM></ZXBM>" + 
    216         "<YHZCBS>0</YHZCBS>" + 
    217         "<LSLBS>3</LSLBS>" + 
    218         "<ZZSTSGL></ZZSTSGL>" + 
    219         "<XMJE>0.1</XMJE>" + 
    220         "<SL>0</SL>" + 
    221         "<SE>0</SE>" + 
    222         "<KCE></KCE>" + 
    223         "<KCQHSJE></KCQHSJE>" + 
    224         "</FPKJXX_XMXX>"
    225 
    226 #电子发票外部API-DZFPKJ(电子发票开具)
    227 original_content = "<REQUEST_FPKJXX>" + 
    228                     "<FPKJXX_FPTXX>" + 
    229                     "<NSRSBH>" + nsrsbh + "</NSRSBH>" + 
    230                     "<NSRMC>航信培训企业</NSRMC>" + 
    231                     "<DDLSH>" + DDLSH + "</DDLSH>" + 
    232                     "<DDH>" + ddh + "</DDH>" + 
    233                     "<DDDATE>" + date + "</DDDATE>" + 
    234                     "<BMB_BBH>13.0</BMB_BBH>" + 
    235                     "<XHF_DZ><![CDATA[222]]></XHF_DZ>" + 
    236                     "<XHF_DH><![CDATA[222]]></XHF_DH>" + 
    237                     "<XHF_YHZH><![CDATA[222]]></XHF_YHZH>" + 
    238                     "<GHFMC><![CDATA[22 2]]></GHFMC>" + 
    239                     "<GHF_NSRSBH><![CDATA[330203999999018]]></GHF_NSRSBH>" + 
    240                     "<GHF_DZ><![CDATA[地址]]></GHF_DZ>" + 
    241                     "<GHF_GDDH><![CDATA[电话]]></GHF_GDDH>" + 
    242                     "<GHF_SJ>17871838087</GHF_SJ>" + 
    243                     "<GHF_EMAIL><![CDATA[zxy@ms.whb.ac.cn]]></GHF_EMAIL>" + 
    244                     "<GHF_YHZH><![CDATA[yhzh]]></GHF_YHZH>" + 
    245                     "<KPLY>999</KPLY>" + 
    246                     "<KPY>综合服务公共能耗</KPY>" + 
    247                     "<SKY>日常维修综合服务</SKY>" + 
    248                     "<FHR>车位管理综合面积</FHR>" + 
    249                     "<KPLX>" + KPLX + "</KPLX>" + 
    250                     "<YFP_DM>" + YFP_DM + "</YFP_DM>" + 
    251                     "<YFP_HM>" + YFP_HM + "</YFP_HM>" + 
    252                     "<KPHJJE>" + KPHJJE + "</KPHJJE>" + 
    253                     "<HJBHSJE>" + HJBHSJE + "</HJBHSJE>" + 
    254                     "<HJSE>" + HJSE + "</HJSE>" + 
    255                     "<BZ><![CDATA[公共能耗费,面积]]></BZ>" + 
    256                     "<BB></BB>" + 
    257                     "<WB></WB>" + 
    258                     "<FPZL></FPZL>" + 
    259                     "<SGBZ>" + SGBZ + "</SGBZ>" + 
    260                     "</FPKJXX_FPTXX>" + 
    261                     "<FPKJXX_XMXXS>" + 
    262                     mxs + 
    263                     "</FPKJXX_XMXXS>" + 
    264                     "</REQUEST_FPKJXX>"
    265 #AES密钥
    266 key = 'WuMlCJRN8zO886dw'
    267 # print(original_content)
    268 ''' AES加密算法的网站:http://www.ssleye.com/aes_cipher.html
    269     AES加密(加解密算法/工作模式/填充方式:AES/ECB/PKCS5Padding;测试环境key值:WuMlCJRN8zO886dw
    270 '''
    271 #初始数据original_content进行AES和Base64加密后,得到original_content_Aes
    272 original_content_Aes_Base64 = get_aes_url(key, original_content)
    273 
    274 #通用报文初始数据(DZFPCX发票查询)
    275 original_data = '<?xml version="1.0" encoding="utf-8"?>' + 
    276                 "<interface>" + 
    277                 "<globalInfo>" + 
    278                 "<version>4.0</version>" + 
    279                 "<interfaceCode>DZFPKJ</interfaceCode>" + 
    280                 "<token>{}</token>".format(nsrsbh) + 
    281                 "<requestTime>{}</requestTime>".format(data_time) + 
    282                 "</globalInfo>" + 
    283                 "<Data>" + 
    284                 "<content>{}</content>".format(original_content_Aes_Base64) + 
    285                 "</Data>" + 
    286                 "</interface>"
    287 
    288 #通用报文原始数据original_data进行Base64加密后,得到RequestParam,再进行urlencode解码
    289 RequestParam_Base64 = str_base64(original_data)
    290 # print("通用报文进行Base64加密后:
    ", RequestParam_Base64)
    291 RequestParam_Base64_Urlencode = jm_urlencode(RequestParam_Base64)
    292 # print("通用报文进行Base64和Urlencode加密后:
    ", RequestParam_Base64_Urlencode)
    293 
    294 #RequestParam通过HMAC-SHA1加密,得到Signature
    295 Signature = hash_hmac('I7GBo4w9E6dmGlLVJMaVtXrhbNqp4KBh', RequestParam_Base64, sha1)
    296 # print("通用报文进行Base64和Hash_hmac加密后:
    ", Signature)
    297 
    298 #请求体data构建
    299 RequestParam = RequestParam_Base64_Urlencode
    300 data = "RequestParam=" + RequestParam + "&Signature=" + Signature
    301 result = requests.post(url=host, params=data)
    302 # print(result.url)
    303 print('发票查询ddlsh为:
    {}'.format(DDLSH))
    304 print('发票查询返回报文为:
    {}'.format(result.text))

    api_DZFPCX 代码如下:

     1 #coding:utf-8
     2 from get_AES_url import get_aes_url
     3 from get_urlencode import jm_urlencode
     4 from get_Base64 import str_base64
     5 from get_Sha1 import hash_hmac
     6 from hashlib import sha1
     7 import requests
     8 import time
     9 #定义参数
    10 host = "http://test2.51fapiaonb.cn:4011/DZFP_Four"
    11 data_time = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    12 nsrsbh = "330201999999868"  #这里填需要查询的纳税人识别号
    13 # #电子发票外部API-DZFPCX(电子发票查询)
    14 ddlsh = "3302019999998684229"  #这里填写发票对应的订单流水号
    15 original_content = "<FPXX>" + 
    16                    "<NSRSBH>{}</NSRSBH>".format(nsrsbh) + 
    17                    "<DDLSH>{}</DDLSH>".format(ddlsh) + "</FPXX>"
    18 
    19 #AES密钥
    20 key = 'WuMlCJRN8zO886dw'
    21 #初始数据original_content进行AES和Base64加密后,得到original_content_Aes_Base64
    22 original_content_Aes_Base64 = get_aes_url(key, original_content)
    23 # print("content进行AES和Base64加密后:
    ", original_content_Aes_Base64)
    24 
    25 # #通用报文初始数据(DZFPCX发票查询)
    26 original_data = '<?xml version="1.0" encoding="utf-8"?>' + 
    27                 "<interface>" + 
    28                 "<globalInfo>" + 
    29                 "<version>4.1</version>" + 
    30                 "<interfaceCode>DZFPCX</interfaceCode>" + 
    31                 "<token>" + nsrsbh + "</token>" + 
    32                 "<requestTime>" + data_time + "</requestTime>" + 
    33                 "</globalInfo>" + 
    34                 "<Data>" + 
    35                 "<content>" + original_content_Aes_Base64 + "</content>" + 
    36                 "</Data>" + 
    37                 "</interface>"
    38 
    39 #通用报文原始数据original_data进行Base64加密后,得到RequestParam,再进行urlencode解码
    40 RequestParam_Base64 = str_base64(original_data)
    41 # print("通用报文进行Base64加密后:
    ", RequestParam_Base64)
    42 RequestParam_Base64_Urlencode = jm_urlencode(RequestParam_Base64)
    43 # print("通用报文进行Base64和Urlencode加密后:
    ", RequestParam_Base64_Urlencode)
    44 
    45 #RequestParam通过HMAC-SHA1加密,得到Signature
    46 Signature = hash_hmac('I7GBo4w9E6dmGlLVJMaVtXrhbNqp4KBh', RequestParam_Base64, sha1)
    47 # print("通用报文进行Base64和Hash_hmac加密后:
    ", Signature)
    48 
    49 #请求体data构建
    50 RequestParam = RequestParam_Base64_Urlencode
    51 # url = host + "?RequestParam=" + RequestParam + "&Signature=" + Signature
    52 data = "RequestParam=" + RequestParam + "&Signature=" + Signature
    53 result = requests.post(url=host, params=data)
    54 # print(result.url)  #打印请求url
    55 # print(RequestParam)
    56 # print(Signature)
    57 print('发票查询返回报文为:
    {}'.format(result.text))
  • 相关阅读:
    ado.net
    sql基础
    css样式
    HTML基础加强
    socket网络编程
    网络聊天室
    多线程
    WinForm基础
    使用Maven插件(plugin)MyBatis Generator逆向工程
    SpringBoot使用thymeleaf时候遇到无法渲染问题(404/500)
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/12036540.html
Copyright © 2020-2023  润新知