Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AliPayValidationError at alipay.fund.trans.toaccount.transfer #46

Closed
onehumanbeing opened this issue May 20, 2018 · 2 comments
Closed

Comments

@onehumanbeing
Copy link

I run the examples on your document(thanks for this wonderful solution) and there is one point that I'm confuse about:

  File "/alipay/alipay/alipay/__init__.py", line 488, in api_alipay_fund_trans_toaccount_transfer
    raw_string, "alipay_fund_trans_toaccount_transfer_response"
  File "/alipay/alipay/alipay/__init__.py", line 524, in _verify_and_return_sync_response
    raise AliPayValidationError
alipay.alipay.exceptions.AliPayValidationError

When running the demo code of alipay.fund.trans.toaccount.transfer

I saw one issues about it but I think my key is right because I actually saw the transfer result success in the sandbox app.(It raise the error at verification)

Here is my code

app_private_key_path="/alipay/app_private_key.pem"
alipay_public_key_path="/alipay/alipay_pubilc_key.pem"

with open(app_private_key_path) as fp:
    app_private_key_string = open(app_private_key_path).read()#RSA.importKey(fp.read())

with open(alipay_public_key_path) as fp:
    alipay_public_key_string = open(alipay_public_key_path).read()#RSA.import_key(fp.read())

alipay = AliPay(
    appid="", # my code number which I didn't forget it
    app_notify_url="http://0.0.0.0:5000/", 
    app_private_key_string=app_private_key_string,
    alipay_public_key_string=alipay_public_key_string,
    sign_type="RSA2",
    debug=True, 
)

result = alipay.api_alipay_fund_trans_toaccount_transfer(
out_biz_no=datetime.now().strftime("%Y%m%d%H%M%S"),
payee_type="ALIPAY_LOGONID",
payee_account=person_acount,
amount=1.91,
        **{
            "payer_show_name":"test",
            # payee_real_name:"",
            "remark":"test",
        }
    )

the same error happens on alipay.fund.trans.order.query too.

@fzlee
Copy link
Owner

fzlee commented May 21, 2018

I saw you initialized Alipay instance with debug=True, which means all requests would be directed to alipay sandbox environment.

Could you please make sure that you got the public cert /alipay/alipay_pubilc_key.pem from sandbox instead of production?

The function _verify_and_return_sync_response is used to validate response from alipay servers, Certs used in production and Sandbox are not indentical

@onehumanbeing
Copy link
Author

Thank you very much, this problem is really a public key problem.

Although Alipay's public key may be similar to the application's public key, Alipay's public key needs to be provided instead of applying the application's public key.

My Party's technical staff thought that the two were the same and gave me the application public key.

There is no problem with your code, thanks again for your work and help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants