大多数浏览器和
Developer App 均支持流媒体播放。
-
支持顾客和处理退款
强大的客户支持是在 App Store 上运行成功业务的关键。探索如何向进行 App 内购买的顾客提供流畅的支持体验,包括使顾客轻松管理或取消其自动续订服务,或直接从您的 App 内申请退款的 API。我们将讨论处理退款的最佳实践,以及可帮助您更好地支持顾客的其他 API。
资源
- App Store Server API
- App Store Server Notifications
- Auto-renewable subscriptions overview
- Human Interface Guidelines: In-app purchase
- In-app purchase overview
- Introducing StoreKit 2
- StoreKit
相关视频
WWDC22
WWDC21
WWDC20
WWDC19
-
下载
您好 欢迎来到WWDC 我是曼吉乔拉 是一名技术程序经理 在App Store工作 我很开心 向大家说明新的功能 以帮助您 支持顾客与处理退款 这是三集系列节目的第三集 专注在App内购买项目 如果您还未看过“见见StoreKit 2” 或“在您的服务器上 管理App内购买项目” 推荐您在这集之后看一看 以得知全部内容 在这一集中 我会先说明顾客支持 以及如何提供有脉络的支持 给您的顾客 因为退款是顾客支持很重要的部分 我的同事 乔 会说明处理退款 与新服务器API 以告知及改进退款流程 我们从顾客支持开始 提供可扩展的支持之益处与挑战 当您的生意在App Store成长 无论您的App提供自动续期订阅 或一次性App内购买项目 像消耗品 和非消耗品 我们将推出 新的StoreKit 及App Store服务器API给您帮助解决 顾客支持问题 以及时、有效率的方式 除了提供支持 这些API能帮您管理 与现有顾客之关系 在您取得它们之后 增加整体维持度 改进顾客满意度 这能带来更高的凝聚力 减少流失 增加长期收入 如今 如果顾客需要帮助 关于App内购买项目 他们可能会联系Apple 或是您 开发人员 在这情况下 顾客可以用Apple自助服务网站 “问题报告” 或联系Apple Support 通过电话、电邮或聊天解决问题 或者 他们也可能联系您 通过社交媒体、论坛 或App内的在线聊天 当他们因为App内购买项目联系您 问题可能是以下几种情况 从识别顾客的App内购买项目或退款 到提供补偿 由于服务问题 或运行中断 以及帮助他们管理 订阅或退款要求 这些问题涵盖大部分支持情况 我会一一详细解释每个情况 我们从第一个情况开始 您如何可以识别顾客的购买项目 当他们一开始因为需要支持 而联系您时? 如果您在App Store购买过任何内容 您可能已经看过这电邮 今天 当顾客买了App内购买项目 他们会通过电邮收到购买项目的发票 这发票含有订购编号 每张发票都有特殊订购编号 顾客能够找到此订购编号 通过电邮 或在账户设定中的购买历史看到 当顾客有支持需求而联系您 您可以询问顾客的订购编号 在他们的发票上 用新的服务器对服务器API 查询App内购买项目 由顾客提供的发票 除了验证发票 此API也帮您识别 App内购买项目里的问题 举例来说 发票是否包含 任何App Store已经退款的购买项目 现在 我们来看API如何运行 当顾客联系您的支持团队 您可以向顾客询问发票订购编号 您的服务器可以调用发票查询API 作为响应 App Store回复 发票的状态和交易 以JWS规格签署 最后 利用此信息 您能够提供支持 给正确的App内购买项目 要在您的服务器执行此API 您可以调用查询端点 在URL栏目填入发票订购编号 在请求栏目填入App的Apple ID 响应包含一个签名交易对象 那包含发票上的交易 以JWS规格签署 您能将每个交易的负载解码 以取得购买细节 现在 我们来仔细看看新的状态栏目 这个栏目识别 发票的整体状态 可能的值是0 表示发票是有效的 并包含此订购编号的交易 1表示订购编号无效 2表示发票有效 但找不到和此订购编号符合的交易 现在 我们来看一个范例 您可以如何使用 此API的响应 这是顾客账户数据库的样本 是您可能储存 originalTransactionId的地方 每个顾客的App内购买项目 还有productID和购买日期 使用此API您能将发票订购编号连结 到顾客的App内购买项目 当他们因为有问题联系您 举例来说 如果这顾客 在您的App购买硬币 如果他们需要支持而联系您 您可以储存购买硬币的发票订购编号 现在来看一个情况 您有 顾客的原始交易编号 您想要查询他们过去的退款 今天 您可能依靠verifyReceipt API 或App Store服务器通知信息 以接收退款通知 然而 如果有运行中断情形 您的服务器没有 收到App Store的通知信息 您如何查询这个顾客 过去的退款纪录? 我们推出一个新的 服务器对服务器API 以查询顾客的已退款交易 使用他们在您的App内购买项目之 原始交易编号 此API让您能够在运行中断 或计划性维修情况下查询退款 在任何时间 以快速方便的方式 此外 此API也能帮您 为您的App识别顾客所有退款历史 举例来说 如果您的App提供 订阅以及消耗品 此API回复所有已退款交易 在您所有的内容类型 要在您的服务器执行此API 用原始交易编号创建请求 填入URL栏目以及App的Apple ID 填入请求参数 响应包含已退款交易的清单 以JWS规格签署 您能够取得所有需要信息 关于购买项目 以解码 每个交易负载的方式 回到顾客账户数据库样本 您现在能用API回复的信息 以更新已退款交易 为这个顾客 使用原始交易编号
在您确认服务出问题时 您如何补偿顾客? 有一些不同的选择可以考虑 以游戏来说 您也许可以提供某些 App内补偿 以虚拟货币或内容的形式 以订阅来说 您也许可以提供 下次续订的折扣 您如何可以补偿订阅者 由于服务出问题? 在iOS 14中我们推出了一项新功能 叫做订阅折扣码 帮助您获得 维持和赢回订阅者 以提供订阅折扣 或限时免费的方式 您可以分发这些特殊一次性折扣码 利用线上或线下途径 以顾客服务问题来说 您可以提供折扣码 作为问题的补偿 那有助于改进顾客维持度 您也可以利用此机会推荐 其他订阅方案 举例来说 时间较长的方案 提供更高价值 费用却更低 使用iOS14与iPadOS 14以上的顾客 能在App Store兑换折扣码 通过一次性折扣码兑换URL 或在您的App内 如果您已执行 presentCodeRedemptionSheet API 在StoreKit中 现在 我们来看一个 您的App内折扣码兑换流程样本 您唯一需要创建的定制用户界面是 启动兑换流程的界面 有几个自然位置可以提供此界面 举例来说 在您的App的设定画面 或在线聊天内的功能 当顾客在与您的支持人员聊天时 在顾客点击兑换按钮后 系统自动提供一系列 折扣兑换画面 像这里显示的 让顾客输入折扣码以兑换优惠
现在来看一个情况 有运行中断或活动取消的情形 可能在以串流为基础的App中更普遍 例如运动、电视直播或视频 为了这些运行中断或取消的活动 您要如何安抚顾客? 我们推出新的服务器对服务器API 为了自动续期订阅所设计 用以扩展付费活跃订阅的续约日期 有了此API 您能提供免费服务给顾客 一段额外的时间 可以用来 作为短暂中断或服务问题的安抚手段 您可以移动顾客的订阅续约日期 每公历年两次 每次最多可延后90天 给您弹性以解决服务问题 或运行中断 请注意扩展期间不列入计算 为了获得85%收益率 所需的一年付费服务期间 现在 我们来看您如何 在您的服务器执行此API 这个API的请求栏目需要 顾客订阅的原始交易编号 延期长度 以日计算 以及延期原因码 响应包含 请求中通过的交易编号 webOrderLineItemID栏目 显示延后的续约到期日 成功标志显示请求是否成功 以及延后之有效日期 如果请求成功的话 现在 我们来看两个不同的情况 可以让您使用这个API 第一种情况 当顾客联系 您的支持团队 由于服务问题或运行中断 您可以调用此API来安抚顾客 作为响应 App Store延长 订阅 并通过电邮通知顾客 或第二种情况 如果有 运动赛事取消 由于无法预见的情况 或直播活动中断 您的支持团队可以积极利用此API 作为响应 App Store延长 订阅 并通过电邮通知顾客
另一个情况 顾客想要 管理他们的订阅 您如何让顾客管理订阅 就在App当中? 我们推出新的StoreKit 2 API 展示管理订阅页面 能够让您提供 订阅管理功能 就在您的App当中 无须将顾客引导到App Store 您也可以选择呈现折扣优惠 在他们看到 管理订阅页面前 或退出调查 在他们取消后 以得知取消原因 有了此API您还可以测试 管理订阅购买项目 在沙盒环境下
此API很容易执行 只需一行编程 您只需调用showManageSubscriptions 方法 在StoreKit 2中 以展示管理订阅页面 现在 来看管理订阅用户界面之样本 在您的App当中 在账户设定里 我们可以加入一个选项 让顾客管理他们的订阅 当顾客点击这个按钮 App Store将展示现有 管理订阅页面 含有目前活跃订阅 以及续约选项 这是顾客熟悉的画面 当他们拜访管理订阅 在App Store的账户设定里 他们可以检视、升级、降级 或取消订阅 如果顾客选择取消订阅 他们会看到确认画面 有取消细节和服务到期日 无论顾客在此页面做任何行动 您的服务器将收到App Store 服务器通知 您的App将收到通知 如果您安装了新的StoreKit 2 API 最后 如果顾客不满意 他们的购买项目 想要求退款 他们不应该需要离开您的App 以寻求帮助 所以 您如何能够让顾客要求退款 在您的App当中? 我们推出新的StoreKit 2 API 叫做beginRefundRequest能够让顾客 直接在您的App当中要求退款 为了App内购买项目 如果退款要求获准 您的App会被通知 您的服务器会收到 App Store的REFUND通知 如果退款被拒绝 您的服务器会收到 新的REFUND-DECLINED通知 有史以来第一次 使用此API 您可以在沙盒中启动与测试退款 就在App当中 要执行此API 您只需调用 beginRefundrequest方法 填入购买项目的交易编号 在提交请求后 您可以使用do-catch语句处理错误 举例来说 如果这是重复的要求 对已经退款的交易 或这个要求因为不明原因失败 错误编程反应退款要求之状态 这是您的App内的退款要求用户界面 在帮助页面 现在有新的选项 “要求退款” 选择之后 App展示 顾客要求退款的购买项目 如果电波浪涌这个购买项目不如预期 顾客可以点击购买项目以召唤 退款要求页面 里面包含购买细节 以及让顾客选择的原因码清单 当要求提交后 除了 App内确认页面 App Store也会发送电邮给顾客 有Apple的“问题报告”链接 他们可以在那里查询退款状态 所以 有了各种新的API 您现在能提供有脉络 与无缝的支持 为App内购买项目 在您的App当中 以及通过其他支持途径 提供良好的支持 可增加整体维持度 改进顾客满意度 这能带来更高的凝聚力 最终 更多正面评价和评论 也就是说 对每个人都是更好的经验 我们谈过您如何能够提供顾客 要求退款的方式 利用新的退款要求API 但关于退款 还有很多事 发生在提出要求以后 因此 我请我的同事乔 来多谈谈处理退款 以及与退款决断有关的新机会 谢谢 曼吉 您好 我叫乔曼尼 我是App Store的一名程序经理 退款是个敏感的话题 在App Store 我们严肃以待 它影响一小部分的交易 但我们理解它对您的App的影响 我想先从快速回顾退款通知开始 那在WWDC20推出 接着 我将分享处理退款的见解 最后 我们会谈一项新功能 那将帮助您告知及改进退款流程 在WWDC20 我们公布了新的通知类型 叫做REFUND 在顾客被给予退款时 App Store会发送REFUND通知 到您的服务器 如果您在App Store Connect中 已配置服务器URL 您也许已经收过REFUND通知 当您的服务器收到这通知 回复一个成功的HTTP状态代码200 接着 您可以采取合适的行动 为了退款 作为响应 自从推出REFUND通知 我们有机会聆听您的反馈 我想分享一些最好的做法给您 找到最佳响应策略 有助于您的生意模式 举例来说 如果用户购买了游戏货币 然后要求退款 您可以在他们的账户中扣除金额 在您的服务器收到REFUND通知后 另一方面 以订阅来说 您可以撤回使用权利 当订阅被退款和取消时 要考虑对游戏设计的影响 当您在确认响应策略时 使用营销和促销工具 以重新凝聚顾客 并一直提供 清楚信息给您的顾客 通过您的沟通途径 不管您采取何种行动
来看一个退款时间线样本 一个提供硬币作为游戏货币的App 在顾客购买100个硬币后 他们可能马上就在 您的App内花掉硬币 如果顾客接着要求退款 利用新的退款要求API 或通过联系Apple Support 如果退款要求获准 App Store将 给予退款并发送退款通知 到您的服务器 也会通知顾客 这一般在48小时内就会发生 现在 来看会发生什么 在提出退款要求后 App Store做出决定前 很高程度上 每个退款要求会经过 我们的退款决断系统以作出决定 退款决断系统包含信息 关于问题交易和其他因素 例如顾客的购买和退款历史 我们听到您想要 更积极的参与 在退款决定过程 所以我们很开心公布一项新功能 帮助您改进和告知退款流程 有了新的消耗API 您可以分享 关于顾客的App内购买信息 给App Store 当顾客提出要求 将App内购买的消耗品退款 App Store将发送新的通知 到您的服务器 叫做CONSUMPTION-REQUEST 让您回复消耗数据 在大多数案例中 顾客开始消耗内容 在购买后不久 知道这个信息很有帮助 在退款决定过程中 确保发送消耗资讯给App Store 在收到CONSUMPTION-REQUEST 12小时内 以用来告知退款决断系统 现在 来看包含哪些栏目 在消耗数据中 消耗负载包含以下数据点 它们每一项有助告知退款决断系统
首先 填入App内购买项目的 原始交易编号 在请求URL中 设定customerConsented栏目到“真” 如果用户同意发送要求的 消耗API数据给Apple 为了让Apple在决定过程中 使用那数据 consumptionStatus栏目很重要 用来指出用户是否消耗了 App内购买项目的一部分、全部 或完全没有 举例来说 如果您的App有交换平台 可以物以物 或有App内购买项目 被从一个账户转换到另一个 这被视为已消耗 consumptionPlatform栏目辨识 您的App是否跨平台 以及在哪里被消耗 使用sampleContent栏目 以指出您是否提供 免费样本或试用给用户 或用户是否被给予类似的 App内购买项目 在您的App当中 或者 使用这栏目以指出 用户是否被提供信息 关于App内购买项目 以及期望中的游戏可玩性 或机制 在购买之前 使用deliveryStatus栏目以指出 App内购买项目已成功发送给 顾客 并且正常运作 AppAccountToken是 StoreKit 2推出的新栏目 这是关联的UUID 由您创建的App用户账户 启动购买 并消耗购买内容 剩下栏目包含的信息是关于 用户账户使用了多长时间 他们在您的App中玩了多久 总共花了多少钱 还有账户目前的状态 以退款要求来说 有三个App store相关的 服务器通知 新的CONSUMPTION-REQUEST通知 会告知您 当退款要求 被启动 为了App内购买消耗品 所有内容类型皆适用 REFUND通知 会告知您 当退款给予顾客时 所有内容类型皆适用 REFUND-DECLINED通知 会告知您 当退款要求被拒绝 由Store Kit API启动的要求 让我们再次回到退款时间线 当顾客提出要求 将App内购买消耗品退款 App Store服务器 现在会发送到您的服务器 CONSUMPTION-REQUEST通知 您的服务器在12小时内回复 消耗数据给App Store服务器 那会被用在退款决定中 如果获准 App Store将发送 REFUND通知 在您的服务器回复 HTTP OK响应后 您可以就退款要求采取合适的行动
消耗API可以使用 在制作中 也可在沙盒中测试 截至今日 现在来谈一下 发送信息给Apple的益处 通过新的消耗API 取得这些数据点将帮助增加透明度 并改进整体退款流程 这 作为回报 提供更好的总体结果 给您的顾客 而且 有了新的REFUND通知 您有更多机会接触顾客 因此增加沟通 现在 交还给我的同事曼吉 他会分享我们谈过的重点精华 我们今天谈了很多主题 让我带过这集重点精华 有了各种新的StoreKit API 您可以执行 定制帮助用户界面在您的App中 让顾客要求退款 以订阅来说 管理 订阅的方式 在App当中 审查并优化您的顾客支持过程 以执行各种新的服务器对服务器API 举例来说 使用发票查询API 以识别和验证顾客的App内购买项目 如果您尚未这么做 请设定您的服务器 以接收REFUND CONSUMPTION-REQUEST 与其他状态更新通知 来自App Store 找出最适合的响应策略 为您的App的商业模型 以针对退款采取行动 最后 您现在可以告知Apple的 退款决断系统 利用回复来自App Store的 CONSUMPTION-REQUEST通知 通过发送最新的消耗数据 这就是“支持客户与处理退款” 想要获得更多新的StoreKit 2 API信息 请看“见见StoreKit 2” 想要获得更多建立服务器面逻辑 为了App内购买项目的信息 请看“在您的服务器上 管理App内购买项目”
感谢您今天的聆听 请享用其他WWDC内容 [音乐]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。