python 酷派支付签名验证

本文记录了在对接酷派SDK时遇到的支付签名验证问题。由于酷派的签名验证方式不同于其他SDK,作者详细介绍了如何在Python中实现与Java版本Demo类似的签名验证过程,包括解析签名字符串和进行签名比较的步骤,为类似问题提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在接第三方sdk,开始一直没有遇到什么问题,直到接酷派sdk的时候,因为支付签名验证方式和其他sdk不一致,所以卡在这关卡。仅此记录,以供参考

首先,因为官方没有提供python的demo,先把酷派官方java的demo贴出来看一下 

public static void main(String[] args) {
		String reqJson = "{\"exorderno\":\"iVk4eRZknftx4vAJm5VE\",\"transid\":\"02115061814204200016\",\"waresid\":1,\"appid\":\"3000962200\",\"feetype\":0,\"money\":1,\"count\":1,\"result\":0,\"transtype\":0,\"transtime\":\"2015-06-18 14:20:59\",\"cpprivate\":\"cp private info!!\",\"paytype\":401}";
		String sign = "56b10877c6ecf3fa3c4805ca8b6f26a8 5fd39828d76b54faf8a034e4d509150b 2519141767960a2e1bfd27b04dbcc8b2";
		String appkey = "RkIwNTlFM0Y5RTEzNTA5NDcxNEMxMkY1OTREQUQxM0VFNEEwRTI2N01UZ3hNamd6T0RRek1ERTVORGd4T0RreU9Ua3JNVGsxTlRBME5EQXlNakF5TmpRM056RTVPRE13TkRZNE5ESTJOekUxTWpVMk5EUXdOREEz";
		System.out.println(CpTransSyncSignValid.validSign(reqJson, sign, appkey));
	}


/**
	 * Desc:cp交易同步签名验证
	 * 
	 * @param transdata
	 *            同步过来的transdata数据
	 * @param sign
	 *            同步过来的sign数据
	 * @param key
	 *            应用的密钥(商户可从商户自服务系统获取)
	 * @return 验证签名结果 true:验证通过 false:验证失败
	 */
	public static boolean validSign(String transdata, String sign, String key) {
		try {
			String md5Str = MD5.md5Digest(transdata);
			String decodeBaseStr = Base64.decode(key);
			String[] decodeBaseVec = decodeBaseStr.replace('+', '#').split("#");
			String privateKey = decodeBaseVec[0];
			String modkey = decodeBaseVec[1];
			String reqMd5 = RSAUtil.decrypt(sign, new BigInteger(privateKey),
					new BigInteger(modkey));
			if (md5Str.equals(reqMd5)) {
				return true;
			} else {
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值