def alipay_fuwu(self, **post): """ 支付宝服务窗开发者模式验证和消息接受地址 """ # 将post来的参数排除掉sign后作为待签名参数 sign_params_dic = {} for post_key, post_val in post.items(): if not post_key=='sign': sign_params_dic[post_key] = post_val.decode('utf8') # 待签名参数按key值排序,组合成query字符串 _, sign_query_str = util.params_filter(sign_params_dic) # 使用支付宝公钥签名验签 sign_verify = RSA.load_pub_key('addons-extra/wxsite/static/alipay_rsa_public_key.pem').verify(sign_query_str, post['sign']) # sign_by_ali_pub64 = sign_by_ali_pub.encode('base64') if sign_verify: # 待签名字符串:公钥+success str_to_sign_by_private = '<biz_content>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9vK4cSuzfGJKMJ/XQ82SMxRjbVussG+sI4lrgJLa7cbHZ19+zZRy9IyMYyvpD/gm4blgha0iOhRxPuxmvLHcNerG2u9q+X18NeJ0bLHxZRpPhOXMzgBDp78LDG1m7NtNW5Poat2JZyxSCTBbs1x3Tk9NUVr8mHLpriFO1ik4EEwIDAQAB</biz_content><success>true</success>' # 加载私钥进行签名 rsa_private_key = load_privatekey(FILETYPE_PEM, open('addons-extra/wxsite/static/rsa_private_key.pem').read()) rsa_private_sign = sign(rsa_private_key, str_to_sign_by_private, 'sha1') rsa_private_sign = base64.b64encode(rsa_private_sign) # 拼接返回给支付宝的xml内容 response_xml = '<?xml version="1.0" encoding="GBK"?><alipay><response>'+str_to_sign_by_private+'</response><sign>'+rsa_private_sign+'</sign><sign_type>RSA</sign_type></alipay>' return response_xml.encode('gbk') else: return 'fail'.encode('gbk')
def alipay_fuwu(self, **post): """ 支付宝服务窗开发者模式验证和消息接受地址 """ # 将post来的参数排除掉sign后作为待签名参数 sign_params_dic = {} for post_key, post_val in post.items(): if not post_key == 'sign': sign_params_dic[post_key] = post_val.decode('utf8') # 待签名参数按key值排序,组合成query字符串 _, sign_query_str = util.params_filter(sign_params_dic) # 使用支付宝公钥签名验签 sign_verify = RSA.load_pub_key( 'addons-extra/wxsite/static/alipay_rsa_public_key.pem').verify( sign_query_str, post['sign']) # sign_by_ali_pub64 = sign_by_ali_pub.encode('base64') if sign_verify: # 待签名字符串:公钥+success str_to_sign_by_private = '<biz_content>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9vK4cSuzfGJKMJ/XQ82SMxRjbVussG+sI4lrgJLa7cbHZ19+zZRy9IyMYyvpD/gm4blgha0iOhRxPuxmvLHcNerG2u9q+X18NeJ0bLHxZRpPhOXMzgBDp78LDG1m7NtNW5Poat2JZyxSCTBbs1x3Tk9NUVr8mHLpriFO1ik4EEwIDAQAB</biz_content><success>true</success>' # 加载私钥进行签名 rsa_private_key = load_privatekey( FILETYPE_PEM, open('addons-extra/wxsite/static/rsa_private_key.pem').read()) rsa_private_sign = sign(rsa_private_key, str_to_sign_by_private, 'sha1') rsa_private_sign = base64.b64encode(rsa_private_sign) # 拼接返回给支付宝的xml内容 response_xml = '<?xml version="1.0" encoding="GBK"?><alipay><response>' + str_to_sign_by_private + '</response><sign>' + rsa_private_sign + '</sign><sign_type>RSA</sign_type></alipay>' return response_xml.encode('gbk') else: return 'fail'.encode('gbk')