python 跨平台调用支付宝JAVA API

本文介绍如何使用Python程序调用支付宝的Java API,包括配置DefaultAlipayClient及解决常见错误的方法,如AlipayApiException和NoClassDefFoundError。

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

这两天需要写一个python程序调用支付宝的API,目前支付宝没有提供python的API所以这边用了JAVA的API。

然后就是调用接口进行连接

self.alipayClient = DefaultAlipayClient(GATEWAY_URL, APP_ID, PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY, "RSA2");

此处的PRIVATE_KEY是应用私钥,调用JAVA的库当然要用JAVA的应用公钥。如果用非Java的公钥就会报以下错误:jpype._jexception.AlipayApiExceptionPyRaisable: com.alipay.api.AlipayApiException: RSAcontent = alipay_sdk=alipay-sdk-java-3.0.52.ALL&app_id=2018010801362217&biz_content={"page_size": 1}&charset=GBK&format=json&method=ant.merchant.expand.assetproduce.assign.query&sign_type=RSA2&timestamp=2018-06-07 11:48:49&version=1.0; charset = GBK

当然如果你直接使用Java的应用公钥也会报错:

jpype._jexception.NoClassDefFoundErrorPyRaisable:java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory

和jpype._jexception.NoClassDefFoundErrorPyRaisable: java.lang.NoClassDefFoundError: Could not initialize class com.alipay.api.internal.util.AlipayLogger

这是因为这个java虚拟机没有找到你的这个commons-logging.jar 这个jar包,无法执行AlipayLogger这个类。你需要把jar导进去

jarpath=os.path.join(os.path.abspath('.'),"alipay-sdk-java-3.0.52.ALL.jar")
jarpath2=os.path.join(os.path.abspath('.'),"fastjson-1.2.47.jar")
jarpath3=os.path.join(os.path.abspath('.'),"commons-logging-1.1.1.jar")
jpype.startJVM(getDefaultJVMPath(),"-ea","-Djava.class.path=%s;%s;%s"%(jarpath,jarpath2,jarpath3))

这样就可以运行了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值