Closed louisekellerf3 closed 3 years ago
你好,我感觉你的用法没有太多错误。 你可以在初始化的时候传入verbose=true看看详细信息吗
你好,我感觉你的用法没有太多错误。 你可以在初始化的时候传入verbose=true看看详细信息吗
提示一下 DCAliPay
, ISVAliPay
入参都不能填 verbose 参数
2021-06-17 15:28:30,389 [DEBUG] python-alipay-sdk: data to be signed 2021-06-17 15:28:30,389 [DEBUG] python-alipay-sdk: {'timestamp': '2021-06-17 15:28:30', 'charset': 'utf-8', 'app_id': '2018112762328868', 'biz_content': {'out_trade_no': '201811276232886812', 'total_amount': 0.01, 'buyer_id': '2088912301554224', 'subject': 'test'}, 'version': '1.0', 'notify_url': 'https://example.com/notify', 'sign_type': 'RSA2', 'method': 'alipay.trade.create'} 2021-06-17 15:28:30,394 [DEBUG] python-alipay-sdk: signed srtring 2021-06-17 15:28:30,394 [DEBUG] python-alipay-sdk: app_id=2018112762328868&biz_content=%7B%22out_trade_no%22%3A%22201811276232886812%22%2C%22total_amount%22%3A0.01%2C%22buyer_id%22%3A%222088912301554224%22%2C%22subject%22%3A%22test%22%7D&charset=utf-8&method=alipay.trade.create¬ify_url=https%3A//example.com/notify&sign_type=RSA2×tamp=2021-06-17%2015%3A28%3A30&version=1.0&sign=ogE3MDIFnqU3Pdf7FTOJ%2BbA5NjMg097wu6Q0Ml9bakR%2Bqbo7duX9zx/pkdb9daM/dRt6SSX/xqBehCoAXCatOB6qDx16cz1yMOSwU0uqu%2BB4CdpRb3icMWJ/%2ByXN6W6SIY2jeNzUVyUWdbL/IvIWuu4XMyyHghOG3xki6mSiDLvPYZXKleMJvl6SNSIMpRZjYbku8NpEstAlTNFGIIkxrk1d7Feh0pCdl8cRtItnbKajRmmOvwCNTDMbpL%2BJidV5wssZ2x3hmqbmo1MO1vXv%2Bu94xxWQHPSRTQVVHXWT/ZdC3EVkW1FBKxFD67QJNZ523TrbFnl7LWCeuWSZupM5IQ%3D%3D https://openapi.alipay.com/gateway.do?app_id=2018112762328868&biz_content=%7B%22out_trade_no%22%3A%22201811276232886812%22%2C%22total_amount%22%3A0.01%2C%22buyer_id%22%3A%222088912301554224%22%2C%22subject%22%3A%22test%22%7D&charset=utf-8&method=alipay.trade.create¬ify_url=https%3A//example.com/notify&sign_type=RSA2×tamp=2021-06-17%2015%3A28%3A30&version=1.0&sign=ogE3MDIFnqU3Pdf7FTOJ%2BbA5NjMg097wu6Q0Ml9bakR%2Bqbo7duX9zx/pkdb9daM/dRt6SSX/xqBehCoAXCatOB6qDx16cz1yMOSwU0uqu%2BB4CdpRb3icMWJ/%2ByXN6W6SIY2jeNzUVyUWdbL/IvIWuu4XMyyHghOG3xki6mSiDLvPYZXKleMJvl6SNSIMpRZjYbku8NpEstAlTNFGIIkxrk1d7Feh0pCdl8cRtItnbKajRmmOvwCNTDMbpL%2BJidV5wssZ2x3hmqbmo1MO1vXv%2Bu94xxWQHPSRTQVVHXWT/ZdC3EVkW1FBKxFD67QJNZ523TrbFnl7LWCeuWSZupM5IQ%3D%3D {u'msg': u'Invalid Arguments', u'sub_code': u'isv.invalid-signature', u'code': u'40002', u'sub_msg': u'\u9a8c\u7b7e\u51fa\u9519\uff0c\u5efa\u8bae\u68c0\u67e5\u7b7e\u540d\u5b57\u7b26\u4e32\u6216\u7b7e\u540d\u79c1\u94a5\u4e0e\u5e94\u7528\u516c\u94a5\u662f\u5426\u5339\u914d\uff0c\u7f51\u5173\u751f\u6210\u7684\u9a8c\u7b7e\u5b57\u7b26\u4e32\u4e3a\uff1aapp_id=2018112762328868&biz_content={"out_trade_no":"201811276232886812","total_amount":0.01,"buyer_id":"2088912301554224","subject":"test"}&charset=utf-8&method=alipay.trade.create¬ify_url=https://example.com/notify&sign_type=RSA2&timestamp=2021-06-17 15:28:30&version=1.0'}
我这边也是死活验签出错,用 openssl 验证了证书,私钥,公钥都是匹配的
我自己写的是解决了,但是用这个包不行呢。官方的文档,alipay.trade.create 这个方法的话,是需要 app_cert_sn 和 alipay_root_cert_sn 的,但是我看这个包的方法里面没有这2个参数,希望大佬能协助看解决下。虽然自己写的签名及业务可以了,但还是希望能用这个包去解决。哈哈
你好,我感觉你的用法没有太多错误。 你可以在初始化的时候传入verbose=true看看详细信息吗
提示一下
DCAliPay
,ISVAliPay
入参都不能填 verbose 参数
你可以提一个新的issue并附上代码
我自己写的是解决了,但是用这个包不行呢。官方的文档,alipay.trade.create 这个方法的话,是需要 app_cert_sn 和 alipay_root_cert_sn 的,但是我看这个包的方法里面没有这2个参数,希望大佬能协助看解决下。虽然自己写的签名及业务可以了,但还是希望能用这个包去解决。哈哈
你好, 你指的是这个文档吗 https://opendocs.alipay.com/pre-apis/api_pre/alipay.trade.create 我好像没有找到强制使用app_cert_sn 和 alipay_root_cert_sn 的地方
https://opendocs.alipay.com/open/291/sign
【应用公钥证书 SN(app_cert_sn)和 支付宝根证书 SN(alipay_root_cert_sn)】
打开支付宝开放平台开发助手,左侧导航栏选择 签名,输入或选择以下参数。 请求参数:若使用公钥证书模式签名,在拼接待签名字符串时需添加解析出来的 应用公钥证书 SN(app_cert_sn)和 支付宝根证书 SN(alipay_root_cert_sn)。 获取方法:获取所有支付宝开放平台的 post 内容,不包括字节类型参数,如文件、字节流,剔除 sign 字段,剔除值为空的参数;按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推;将排序后的参数与其对应值,组合成 参数=参数值 的格式,并且把这些参数用 & 字符连接起来,此时生成的字符串为待签名字符串。
我看你的 Alipay 方法,还没添加 app_cert_sn 和 alipay_root_cert_sn。是不是这个原因导致签名一直失败呢?
我的意思是Alipay.trade.create并没有强制使用app_cert_sn
方法没有强制,但是签名那块,有要求的,反正我自己签名是加了这2个,最终是交易成功的。
On Thu, 17 Jun 2021 at 21:41, yoyo22233 @.***> wrote:
留一个QQ号哈,看能否方便交流下谢谢。3276777566
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/fzlee/alipay/issues/128#issuecomment-863249276, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOYLNLYZWLKJQAE2SXQ46DTTH3PZANCNFSM46XOE6PQ .
如果仅仅是为了使用公钥证书,你可以试试dcalipay.api alipay_trade_create() -- 顺颂时祺
Fazheng Li
好像可以,我试试看
求大神帮忙看下,纠结很久了,没解决。。
一、错误描述 DCAliPay 下的 dc_alipay.api_alipay_fund_trans_uni_transfer 方法,成功实现转账,但是AliPay 下面的 alipay.api_alipay_trade_create 报签名错误,错误信息如下:
{ u 'msg': u 'Invalid Arguments', u 'sub_code': u 'isv.invalid-signature', u 'code': u '40002', u 'sub_msg': u '验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配,网关生成的验签字符串为:app_id=2018112762328868&biz_content={"out_trade_no":"201811276232886812","total_amount":0.01,"buyer_id":"2088912301554224","subject":"test"}&charset=utf-8&method=alipay.trade.create¬ify_url=https://example.com/notify&sign_type=RSA2&timestamp=2021-06-15 22:40:59&version=1.0' }
二、证书说明 采用的支付宝证书模式,上传了支付宝开放平台开放助手生成的 CSR格式的公钥至支付宝 其中:根证书文件、支付宝公钥 和 应用公钥(这3个文件都是从支付宝下载的) 应用私钥 使用的是 CSR文件夹下的私钥文件
三、测试代码(其中注释部分的转账代码是执行成功的),后面 alipay.api_alipay_trade_create 报签名错误
/usr/bin/env python
coding=utf-8
from alipay import AliPay, DCAliPay, ISVAliPay from alipay.utils import AliPayConfig import datetime,sys
reload(sys) sys.setdefaultencoding('utf8')
app_private_key_string = open("www.123.com_private.pem").read() alipay_public_key_cert_string = open("alipayCertPublicKey_RSA2.crt").read() alipay_root_cert_string = open("alipayRootCert.crt").read() app_public_key_cert_string = open("appCertPublicKey_2018112762328868.crt").read()
dc_alipay = DCAliPay(
appid="2018112762328868",
app_notify_url="http://example.com/app_notify_url",
app_private_key_string=app_private_key_string,
app_public_key_cert_string=app_public_key_cert_string,
alipay_public_key_cert_string=alipay_public_key_cert_string,
alipay_root_cert_string=alipay_root_cert_string
)
result = dc_alipay.api_alipay_fund_trans_uni_transfer(
out_biz_no=datetime.datetime.now().strftime("%Y%m%d%H%M%S"),
identity_type="ALIPAY_LOGON_ID",
identity="123213@gmail.com",
trans_amount=0.1,
name=u"张三".encode("utf8")
)
print(result)
alipay = AliPay( appid="2018112762328868", app_notify_url="http://example.com/app_notify_url", # 默认回调 url app_private_key_string=app_private_key_string,
支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
)
result = alipay.api_alipay_trade_create( out_trade_no="201811276232886812", total_amount=0.01, subject="test", buyer_id="2088912301554224", notify_url="https://example.com/notify" )
print(result)