【问题标题】:when will the payment complete using the paypal python sdk?何时使用 paypal python sdk 完成付款?
【发布时间】:2019-10-20 04:54:09
【问题描述】:

我按照https://github.com/paypal/PayPal-Python-SDK 中列出的一些代码来构建付款。问题是在哪个阶段付款完成?我的理解是它是在“授权付款”之后和将用户重定向到“return_url”之前完成的,因为我认为“return_url”应该做一些类似“告诉用户已完成付款”而不是付款的事情。我不确定我的想法是否正确。下面是支付流程。

在 python 应用中创建付款

... skipped
"return_url": "xxx.com/payment/execute",
...

在 python 应用中授权支付

...
Redirect user to approval_url (paypal page)
...

用户在paypal中填写完所有信息后,它会将用户重定向到return_url,如下所示。

在 xxx.com/payment/execute 中执行付款

...
curl 'https://api.sandbox.paypal.com/v1/payments/payment/'+paymentId+'/execute';
...

之后我得到 JSON

    {
  "id": "PAYID-LT3I25Y9M527750ER784091X",
  "intent": "sale",
  "state": "approved",
  "cart": "1L498981HN342484R",
  "payer": {
    "payment_method": "paypal",
    "status": "UNVERIFIED",
    "payer_info": {
      "email": "ji@gmail.com",
      "first_name": "ukf",
      "last_name": "tfutf",
      "payer_id": "ZD7ELNRCHVLPY",
      "shipping_address": {
        "recipient_name": "ukf tfutf",
        "line1": "ktf",
        "city": "ktfu",
        "state": "",
        "postal_code": "",
        "country_code": "HK"
      },
      "country_code": "HK"
    }
  },
  "transactions": [
    {
      "amount": {
        "total": "5.00",
        "currency": "USD",
        "details": {}
      },
      "payee": {
        "merchant_id": "4J8HJBF56QT24",
        "email": "facilitator@gmail.com"
      },
      "description": "This is the payment transaction description.",
      "item_list": {
        "items": [
          {
            "name": "item",
            "sku": "item",
            "price": "5.00",
            "currency": "USD",
            "quantity": 1
          }
        ],
        "shipping_address": {
          "recipient_name": "ukf tfutf",
          "line1": "ktf",
          "city": "ktfu",
          "state": "",
          "postal_code": "",
          "country_code": "HK"
        },
        "shipping_options": [
          null
        ]
      },
      "related_resources": [
        {
          "sale": {
            "id": "96712163V8788712D",
            "state": "completed",
            "amount": {
              "total": "5.00",
              "currency": "USD",
              "details": {
                "subtotal": "5.00"
              }
            },
            "payment_mode": "INSTANT_TRANSFER",
            "protection_eligibility": "ELIGIBLE",
            "protection_eligibility_type": "ITEM_NOT_RECEIVED_ELIGIBLE, UNAUTHORIZED_PAYMENT_ELIGIBLE",
            "transaction_fee": {
              "value": "0.47",
              "currency": "USD"
            },
            "receipt_id": "2545046194101961",
            "parent_payment": "PAYID-LT3I25Y9M527750ER784091X",
            "create_time": "2019-06-04T15:29:48                  Z",
            "update_time": "2019-06-04T15:29:48                  Z",
            "links": [
              {
                "href": "https://api.sandbox.paypal.com/v1/payments/sale/96712163V8788712D",
                "rel": "self",
                "method": "GET"
              },
              {
                "href": "https://api.sandbox.paypal.com/v1/payments/sale/96712163V8788712D/refund",
                "rel": "refund",
                "method": "POST"
              },
              {
                "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAYID-LT3I25Y9M527750ER784091X",
                "rel": "parent_payment",
                "method": "GET"
              }
            ],
            "soft_descriptor": "PAYPAL *TESTFACILIT"
          }
        }
      ]
    }
  ],
  "create_time": "2019-06-04T15:29:49   Z",
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAYID-LT3I25Y9M527750ER784091X",
      "rel": "self",
      "method": "GET"
    }
  ]
}

【问题讨论】:

    标签: python paypal sdk


    【解决方案1】:

    当用户在 PayPal 网站上批准付款时,付款在 PayPal 一方完成。之后,它将用户重定向到redirect_url。该网页确实应该通知用户他们的付款已完成。只要没有出错,您就可以在贝宝沙箱上检查此交易/付款。

    另请注意,您使用的 SDK 实际上很快就会被弃用。在您链接的 github 上,它显示“请注意,如果您正在与 PayPal Checkout 集成,则此 SDK 和相应的 API v1/payments 正在被弃用。”相反,我建议您尝试与此 SDK 集成:https://github.com/paypal/Checkout-Python-SDK,这是 PayPal 的最新版本。除了使用较新的 SDK,我还建议您尝试使用 PayPal 的智能结帐按钮。它们应该让您的生活更轻松一些。

    在过去的两个月里,我一直在各种项目中使用这些 SDK,但我个人认为它不是一个简单的过程,但希望这会有所帮助!

    【讨论】:

    • 谢谢回答,如果付款在重定向到“return_url”之前完成,这是否意味着return_url在生产中可以是“localhost:80”?因为我输入 localhost,它也可以在沙箱中工作。
    • 生产环境中的 return_url 不应该是 localhost。本地主机是在本地运行的网页(如在您的计算机上)。如果其他人被重定向到 localhost,他们的 localhost 将指的是在他们的计算机上运行的那个,而不是你的。他们不会看到与您相同的网页。除此之外,localhost 主要用作测试环境。理论上任何有效的 URL 都可以用于 return_url。我建议此 URL 与用户在被重定向到 paypal 之前所在的页面相同,或者制作一个登录页面来告诉用户他们的订单已成功。
    • 我正在为应用内支付构建paypal,并且我没有公共域,所以我可以在应用内启动一个服务器,以便它将用户重定向到return_url?
    猜你喜欢
    • 2014-07-30
    • 2012-03-11
    • 1970-01-01
    • 2021-11-26
    • 2023-03-30
    • 1970-01-01
    • 2013-06-10
    • 2021-07-11
    • 2014-04-13
    相关资源
    最近更新 更多