python paypal API调用返回invalid_client

sulc1iza  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(166)

你好,我试图实现我的网页在 flask 开发(Python),我有一个贝宝支付过程,这是成功地工作在visaul工作室代码,然而,当我上传我的应用程序上lightsail这是不工作.这是代码,我收到,除了:

  1. def approve_payment(order_id):
  2. print("approve_payment", order_id)
  3. try:
  4. api_link = f"https://api-m.sandbox.paypal.com/v2/checkout/orders/{order_id}/capture"
  5. headers = {
  6. "Content-Type": "application/json",
  7. }
  8. print("Headers: ", headers)
  9. print("api_link", api_link)
  10. response = requests.post(url=api_link, headers=headers, auth=(paypal_client_id, paypal_secret))
  11. response.raise_for_status()
  12. json_data = response.json()
  13. print("json_data", json_data)
  14. return json_data
  15. except requests.exceptions.HTTPError as err:
  16. # Handle HTTP errors
  17. status_code = err.response.status_code
  18. response_text = err.response.text
  19. # Log or print the details for debugging
  20. print(f"HTTPError: Status Code {status_code}, Response Text: {response_text}")
  21. return {"error": "HTTPError", "status_code": status_code, "response_text": response_text}
  22. except Exception as e:
  23. # Handle other exceptions
  24. return {"error": "Exception", "message": str(e)}

字符串
这是print的输出:
HTTP错误:状态代码401,响应文本:{“error”:“invalid_client”,“error_description”:“客户端身份验证失败”}
不过我已经确认了PAYPAL_CLIENT_ID和paypal_secret,这是正确的,对我来说,这似乎是一个网络问题。
我很感激如果有人有任何想法,这可能是问题,谢谢
在光帆上,我有下一个港口开放
应用程序协议端口或范围/代码限制为
SSH TCP 22任意IPv4地址
Lightsail浏览器SSH/RDP DNS(TCP)TCP 53任意IPv4地址
HTTP TCP 80任意IPv4地址
HTTPS TCP 443任意IPv4地址
DNS(UDP)UDP 53任意IPv4地址
在贝宝dashbord我没有看到API调用时,这些失败谢谢

oaxa6hgo

oaxa6hgo1#

最后确定问题,这是身份验证问题,不知道为什么,但flask中的应用程序没有从.env文件中提取凭据,所以我发送了“无”凭据的请求,我使用:

  1. paypal_client_id = os.environ.get('PAYPAL_CLIENT_ID')
  2. paypal_secret = os.environ.get('PAYPAL_SECRET')

字符串
我替换为

  1. paypal_client_id = os.getenv('PAYPAL_CLIENT_ID')
  2. paypal_secret = os.getenv('PAYPAL_SECRET')


这是工作现在谢谢

相关问题