Example #1
0
    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')
Example #2
0
    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')