You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PayPal REST API完成支付后如何返回iOS应用?

解决PayPal REST API集成后从WebView返回iOS应用的方案

1. 配置iOS应用的URL Scheme

  • 打开Xcode项目设置,进入「Info」标签页,展开「URL Types」,点击+号添加自定义URL Scheme(比如myapp-paypal),这个标识用来让系统唤起你的应用。

2. 创建PayPal订单时指定返回URL

调用PayPal的/v2/checkout/orders创建订单接口时,在请求体的application_context字段中设置return_url和cancel_url,值为你配置的URL Scheme链接,示例请求体如下:

{
  "intent": "CAPTURE",
  "purchase_units": [
    {
      "amount": {
        "currency_code": "USD",
        "value": "10.00"
      }
    }
  ],
  "application_context": {
    "return_url": "myapp-paypal://paypal/success",
    "cancel_url": "myapp-paypal://paypal/cancel"
  }
}

PayPal完成支付或用户取消支付后,会自动跳转到你指定的这两个URL。

3. 在WebView中拦截跳转并返回应用

如果使用WKWebView,设置WKNavigationDelegate,在导航代理方法中拦截目标URL:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    guard let url = navigationAction.request.url else {
        decisionHandler(.allow)
        return
    }
    
    // 匹配自定义URL Scheme
    if url.scheme == "myapp-paypal" {
        // 解析URL路径判断支付状态
        switch url.path {
        case "/paypal/success":
            // 执行支付成功逻辑,比如获取订单ID、关闭WebView
            break
        case "/paypal/cancel":
            // 执行支付取消逻辑
            break
        default:
            break
        }
        decisionHandler(.cancel)
        return
    }
    
    decisionHandler(.allow)
}

4. 处理系统唤起应用的回调(备用)

如果WebView跳转直接触发系统唤起应用,需要在AppDelegate或SceneDelegate中处理URL:

  • AppDelegate示例:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    guard url.scheme == "myapp-paypal" else { return false }
    // 解析URL参数,处理支付结果
    return true
}
  • SceneDelegate示例:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url, url.scheme == "myapp-paypal" else { return }
    // 解析URL参数,处理支付结果
}

补充说明

PayPal REST API无需在其后台配置返回URL,完全由你在创建订单时指定即可。如果追求更高安全性,也可以用Universal Links替代URL Scheme,配置方式类似,仅需将返回URL替换为你的域名链接,并完成苹果开发者后台与域名服务器的关联配置。

内容的提问来源于stack exchange,提问作者Nala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:25:14