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

perf(apps/extensions): set global alipay url for alipay extensions #892

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apps/extensions/alipay.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ def __init__(self):
alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING,
config=AliPayConfig(timeout=3),
)
self.alipay._gateway = "https://globalopenapi.alipay.com/gateway.do"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need to set this manually? it seems that _gateway is pravite var in the pkg alipay.AliPay

check the inner code

        if debug:
            # self._gateway = "https://openapi.alipaydev.com/gateway.do"
            self._gateway = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"
        else:
            self._gateway = "https://openapi.alipay.com/gateway.do"

Copy link
Contributor Author

@Gkirito Gkirito Oct 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I requested the debug URL and default URL from a server located in Japan, but it timed out.
image

image-20231020jlVKnWYB@2x

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The IP locations of these two queries indicate that they are from Hangzhou.
image

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

request to https://openapi.alipay.com/gateway.do timeout in jp server means u server was blocked by ALiPay or GFW, since this is not a common case, i don't think we should hardcode global endpoint

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But I asked a friend of Ant Company, and he said that foreign countries generally use the global interface.
The two URLs in the Alipay package are generally only used in China.
Btw, the two URLs requested by my Japanese server are not always timed out, and occasionally can be requested, so it is not blocked, it means the routing is too bad.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And global URL was offerted by my friend. I didn't find this URL in the Chinese document. It be found in the doc of Alipay Plus.
DOC

Copy link
Owner

@Ehco1996 Ehco1996 Oct 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are you saying that we should use https://openapi.alipay.com/gateway.do in CN but use https://globalmapi.alipay.com/gateway.do in other countries ?

if so hardcode to https://globalmapi.alipay.com/gateway.do is not a good option, consider if someone deploy panel on a CN server? IMO, a better approach would be to provide a config item for user and set the default gateway to CN.

TBH, switching gateway should be handled in lib and not caller (this is a internal var), how about opening an issiue in https://github.com/fzlee/alipay and dissicuss how to impl this feature?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TBH, switching gateway should be handled in lib and not caller (this is a internal var), how about opening an issiue in https://github.com/fzlee/alipay and dissicuss how to impl this feature?

Good idea !!


def trade_precreate(
self, out_trade_no, total_amount, subject, timeout_express, notify_url
Expand Down
Loading