支付宝接口(Python)加签验签操作

本文分享了作者在支付宝接口开发中遇到的验签和加签问题,提供了Python代码实现,包括验签函数`check_alipay_sign`和加签函数`add_alipay_sign`,旨在帮助其他开发者快速参考和解决类似问题。
摘要由CSDN通过智能技术生成

之前在做和支付宝联调的工作中,因为验签和加签传输数据的问题,挣扎了好久,这里就把这部分代码发布出来,方便一些做支付宝接口的伙伴们参考查阅。 


# 验签
def check_alipay_sign(request):
    sign = request.pop('sign')  # 取出传过来的签
    request.pop('sign_type')  # 去除传过来的sign_type
    params = sorted(request.items(), key=lambda e: e[0], reverse=False)  # 取出字典元素按key的字母升序排序形成列表
    message = "&".join(u"{}={}".format(k, v) for k, v in params).encode()  # 将列表转为二进制参数字符串
    status = verify_with_rsa(publicKey, message, sign)  # 验签
    return status


# 加签
def add_alipay_sign(content):
    alipay_client_config = AlipayClientConfig()
    alipay_client_config.server_url = serverUrl
    alipay_client_config.app_id = appId
    alipay_client_config.app_private_key = privateKey
    alipay_client_config.alipay_public_key = publicKey

    alipayClient = DefaultAlipayClient(alipay_client_config=alipay_client_config)

    request = AlipayCreditCreditriskDataPutRequest()
    # 拼接待提交数据
    request.biz_content = content
    # 提交数据请求
    response = alipayClient.execute(request)
    print(response)
    response = eval(response)
    if response['msg'] == 'Success':
        print(response['msg'], "推送数据成功")
    else:
        print(response['msg'], "推送数据失败")

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要进行Python RSA2验签,可以参考以下步骤: 1. 首先,获取接收到的通知数据,将其转换为字典,去除掉sign和sign_type参数。这些参数可以通过request.POST.dict()方法获取,并使用data.pop()方法去除掉sign和sign_type参数。 2. 生成RSA私钥和公钥。可以使用RSA.generate()方法生成2048位的RSA密钥对,并使用exportKey()方法导出私钥和公钥。 3. 使用公钥进行验签。将通知数据和名传入SignRSA类的构造函数,然后调用verify_with_public_key()方法进行验签。如果返回True,则验签成功。 以下是一个示例的Python代码: ``` from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash import SHA256 def verify_sign(data, sign): public_key = open('public.pem', 'r').read() rsa_key = RSA.importKey(public_key) signer = PKCS1_v1_5.new(rsa_key) digest = SHA256.new() digest.update(data.encode('utf-8')) #### 引用[.reference_title] - *1* *3* [python实现RSA密解密 及 验签功能](https://blog.csdn.net/jackone12347/article/details/120041701)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [python3 + 支付宝app 接口,RSA/RSA2 名、验签](https://blog.csdn.net/tm_tsm/article/details/105124809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值