【问题标题】:How make PayPal checkout redirect to Kivy Python App?如何使 PayPal 结帐重定向到 Kivy Python App?
【发布时间】:2021-02-18 16:01:45
【问题描述】:

我目前有一个 Python Kivy 应用程序,它有一个用于结帐的 PayPal 选项,它使用webbrowser 打开 PayPal 结帐页面。我想知道是否有一种方法可以让 PayPal 结帐页面在单击继续后将我带回我的 Python Kivy 应用程序?或者至少向我的 Python 脚本发送客户点击继续的某种信息,以便他们继续确认并下订单?

我提到的 PayPal 结帐屏幕是这个:

这是我的 .py 文件,以备不时之需

class CheckoutScreen(Screen):
    def PayPal(self):
        # Create Access Token
        client_id = "ID"
        client_secret = "SECRET"

        # Creating an environement
        environment = SandboxEnvironment(client_id=client_id, client_secret=client_secret)
        client = PayPalHttpClient(environment)

        request = OrdersCreateRequest()
        request.prefer("return=representation")

        request.request_body(
            {
                "intent": "CAPTURE",
                "purchase_units": [
                    {
                        "amount": {
                            "currency_code": "CAD",
                            "value": str(App.get_running_app().cart)
                        }
                    }
                ]
            })

        try:
            response = client.execute(request)
            print("Order With Complete Payload:")
            print("Status Code:", response.status_code)
            print("Status:", response.result.status)
            print("Order ID:", response.result.id)
            print("Intent:", response.result.intent)
            print("Links:")
            for link in response.result.links:
                print('\t{}: {}\tCall Type: {}'.format(link.rel, link.href, link.method))
                print("Total Amount: {} {}".format(response.result.purchase_units[0].amount.currency_code,
                                                   response.result.purchase_units[0].amount.value))
                order = response.result
                print(order)
        except IOError as ioe:
            print(ioe)
            if isinstance(ioe, HttpError):
                # Something went wrong server side
                print(ioe.status_code)
        webbrowser.open_new_tab("https://www.sandbox.paypal.com/checkoutnow?token=" + response.result.id)

【问题讨论】:

    标签: python paypal kivy


    【解决方案1】:

    在您的 request_body 中,使用 return_url 指定一个 application_context,其值是返回到您的应用的深层链接。

    API 文档:https://developer.paypal.com/docs/api/orders/v2#orders-create-request-body

    该链接将添加一个带有 orderID 的参数。虽然它是一个应用程序,但可以使用它来验证退货的用途并显示订单审查页面,然后在最终批准时触发捕获。

    如果您想立即进行捕获(无评论页面),您应该将 PayPal 上的按钮的措辞从“继续”更改为“立即付款”,以便用户知道没有更多的评论步骤。这是通过 application_context 中的 user_action 变量完成的。

    【讨论】:

    • 感谢您的回复!我会调查的
    • 还有一点,是否有一些用于深度链接的文档?我以前从未使用过它。
    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2013-03-01
    • 1970-01-01
    • 2013-08-08
    • 2012-03-23
    • 1970-01-01
    相关资源
    最近更新 更多