跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Objective-CPay大前端

支付宝 SDK 集成:深入理解两种支付回调区别

本文解析了支付宝 SDK 集成中的两种核心回调机制。第一种是通过 payOrder 方法直接传入的 Block 回调,适用于 WAP 支付或无需跳转客户端的场景,能即时获取结果。第二种是在 AppDelegate 中处理的 URL Scheme 回调,当用户从支付宝客户端返回时使用,需通过 safepay 域名识别并解析支付结果。两者分别对应不同的支付路径,理解其区别有助于完善支付流程的健壮性。

灰度发布发布于 2019/10/11更新于 2026/10/2587 浏览
支付宝 SDK 集成:深入理解两种支付回调区别

首次接入支付宝 SDK 时,很多开发者容易混淆其中的两个回调机制。文档里虽然写了,但如果不细看,真不知道到底该用哪个。今天咱们就把这两个回调的区别彻底讲清楚。

第一个是支付接口直接传入的回调 Block。当你调用 payOrder:fromScheme:callback: 时,这个 Block 会立即返回结果。它主要用于处理网页版支付(WAP)或者不需要跳转支付宝客户端的场景。注意看注解里的说明,这是用于非跳转钱包支付的回调。

[[AlipaySDK defaultService] payOrder:orderString 
                              fromScheme:appScheme 
                               callback:^(NSDictionary *resultDic) {
    NSLog(@"result1 = %@", resultDic);
    // 状态码 9000 代表成功
    if ([[resultDic objectForKey:@"resultStatus"] integerValue] == 9000) {
        successCallBack(1);
    } else {
        failureCallBack(0);
    }
}];

第二个回调是最常用的,也是和微信支付位置一样的那个。它发生在用户从支付宝客户端返回到你的 App 时,需要在 AppDelegate 中处理 URL Scheme。

- (BOOL)application:(UIApplication *)app 
            openURL:(NSURL *)url 
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    if ([url.host isEqualToString:@"safepay"]) {
        // 这里处理支付宝返回的结果
        NSString *resultString = [url query];
        // 解析 resultString 判断支付结果
        return [[AlipaySDK defaultService] handlePaymentResult:resultString 
                                            callback:^(NSDictionary *resultDic) {
            if ([[resultDic objectForKey:@"resultStatus"] integerValue] == 9000) {
                successCallBack(1);
            } else {
                failureCallBack(0);
            }
        }];
    }
    return YES;
}

简单总结一下:第一种是直接同步返回结果,适合内部流程;第二种是异步跳转回来,适合唤起支付宝客户端支付。实际开发中,通常两者配合使用,确保支付闭环。

更多推荐文章

查看全部
  • Web Worker:前端多线程并行计算实战
  • VSCode 中关闭 GitHub Copilot 功能的两种方法
  • CC-Switch:AI 编码助手配置管理工具
  • C++ 图论实战:三种经典最短路径算法详解
  • Python 魔法方法与数据模型深度解析
  • 大模型 Token 机制与上下文窗口管理实战
  • 结合 LLama-Factory 打造个性化 AI 角色实战
  • 大模型量化技术原理:LLM.int8()与GPTQ
  • C17 泛型如何支撑百万行级系统代码复用
  • Python 魔术方法详解
  • Ubuntu 下 Python 连接 KingbaseES 数据库实现增删改查
  • LFM2.5-1.2B-Thinking 模型:打造个人 AI 写作助手
  • 大语言模型核心原理必读的十篇论文梳理
  • Qt 与鸿蒙适配的核心逻辑
  • Python 基础:错误与异常处理详解
  • Windows 系统安装与配置 Neo4j 图数据库指南
  • Java 强转遇到 null 为何报错及正确处理方式
  • OpenClaw 本地 AI 智能体入门与实战指南
  • 清华教授评大学现状:像工厂,学生未老先衰
  • 网络层:IP 协议、NAT 技术与 ICMP 协议详解

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online