金匮是什么意思| 什么是血清| 拔完罐需要注意什么| 碳酸氢根偏低什么意思| 睡觉空调开什么模式| 老生气会得什么病| 红鸾星动是什么意思| 凋谢是什么意思| 不约什么什么| 花中隐士是什么花| 随性什么意思| 乙肝两对半和乙肝五项有什么区别| 什么人容易得布病| 你什么我什么成语| 赞字五行属什么| 千里莺啼什么映什么| lga肾病是什么意思| 开通花呗有什么风险| 黄牛用的什么抢票软件| 二加一笔是什么字| hsv是什么病毒| 出血线是什么意思| 眼睛无神呆滞什么原因| 阿托伐他汀钙片治什么病| 什么东西抗衰老最好| 吸气是什么意思| 什么是处方药| 核苷酸是什么| 做肠镜前喝的是什么药| 什么药和酒一起吃必死| 虫字旁的字和什么有关| 淋巴细胞是什么| 7月4是什么星座| 主动脉夹层是什么意思| 3.4是什么星座| 脖子痛是什么原因| 嘴贱什么意思| 做脑部检查挂什么科| 带状疱疹一般长在什么地方| 兔子能吃什么水果| 腋毛上有白色附着物是什么| 认知障碍是什么意思| ooc是什么| 科学解释什么叫上火| 渎是什么意思| 晚上口苦是什么原因引起的| 道地是什么意思| 你为什么不快乐| 吃什么拉什么完全不能消化怎么办| 多金是什么意思| 肩袖损伤用什么药| 5月3号是什么星座| 吃什么软化血管| 排尿困难吃什么药| 龙抬头是什么意思| 口腔溃疡缺什么| 甲状腺偏高是什么原因引起的| 尿频尿急吃什么药比较好| 小孩咬手指甲是什么原因| 甲状腺功能亢进是什么意思| 伟五行属什么| 大限将至什么意思| 和风对什么| 褪黑素有什么用| 已佚是什么意思| 杠杠的是什么意思| 擦什么能阻止毛发生长| 反复口腔溃疡是什么原因| 射手座是什么星座| 1958年属狗的是什么命| 咳嗽有白痰吃什么药好| 增强免疫力打什么针| 类风湿关节炎吃什么药| 硬结灶是什么意思| 没有奶水怎么办吃什么能下奶| 治疗神经痛用什么药最有效| york是什么牌子| 多种维生素什么时候吃效果最好| 厌食症吃什么药| 柿子不能和什么一起吃| 痛风吃什么药好| 腿毛多是什么原因| 手指甲变黑是什么原因| 藏红花泡水喝有什么功效| 出院记录是什么| 刁子鱼是什么鱼| 孕晚期缺铁对胎儿有什么影响| 阴道出血是什么原因| 眼科属于什么科| 什么人没有国籍| 人为什么会打呼噜| 姑息是什么意思| pct偏高说明什么| 女孩小名叫什么好| 布病是什么病| 取保候审是什么意思还会判刑吗| 御字五行属什么| 床头上面挂什么画好| 石决明是什么| 过敏看什么科| 孕囊形态欠规则是什么意思| 脑脊液白细胞高是什么原因| 不劳而获是什么生肖| 唐筛和无创有什么区别| 女性阴道长什么样| 眼镜什么品牌好| 什么水果养胃又治胃病| 1a是什么意思| 喉咙有痰吐出来有血是什么原因| 中国梦是什么| 骨折不能吃什么东西| 高血糖是什么原因引起的| 朱元璋长什么样| 羊宝是什么| 北洋军阀是什么意思| 狗为什么喜欢吃骨头| 做牛排需要什么调料| 睾丸炎吃什么药好得快| pt是什么元素| 茶色尿是什么原因引起的| 人参果总皂苷是什么| 既视感是什么意思| 路由器管理员密码是什么| 一刻是什么意思| 脾胃伏火是什么意思| 综合能力测试考什么| 否命题和命题的否定有什么区别| 脑梗输液用什么药| 什么方法可以治打嗝| 归宁是什么意思| 子宫偏大是什么原因| 跑步机cal是什么意思| 滑膜炎吃什么好得快| 倭瓜是什么瓜| 宫腔镜检查后需要注意什么| 不停的出汗是什么原因| 一什么酒店| 声带白斑是什么病严重吗| 梅子是什么水果| 茉莉花茶适合什么人喝| 为什么会胸闷| 舌头尖发麻是什么原因| 馒头配什么菜好吃| 40min是什么意思| 梦见去扫墓是什么预兆| 苦涩是什么意思| 吃什么胎儿眼睛黑又亮| 70大寿有什么讲究| 口干嗓子干是什么原因| 女人鼻子大代表什么| 6月30日什么星座| 什么原因导致尿酸高| 朱代表什么生肖| 尿液特别黄是什么原因引起的| 定心丸什么意思| 下聘是什么意思| 男人勃不起是什么原因造成的| 什么水什么山| 尿酸高适合吃什么水果| 什么是半衰期| 大学记过处分有什么影响| 寒碜是什么意思| 肚子不舒服吃什么药| 心肌劳损是什么意思| 血糖高吃什么好能降糖| 复仇者用什么武器| 吊销是什么意思| 不孕不育查什么项目| 吃什么能消除脂肪瘤| 胆小如鼠是什么生肖| q12h医学上是什么意思| 香港脚是什么症状图片| 外阴裂口用什么药| 什么是中成药| chuck是什么意思| 15岁属什么| 池鱼是什么意思| k1什么意思| 拔罐起水泡是什么原因| 口腔溃疡缺乏什么维生素| 绿色加红色是什么颜色| 下午3点到4点是什么时辰| 烤麸是用什么做的| 荨麻疹是什么原因| 希望孩子成为什么样的人| 成年人改名字需要什么手续| 玛丽苏什么意思| 花椰菜是什么菜| 舒畅的舅舅是做什么的| 三杯鸡的三杯是什么| 仁波切是什么意思| 超脱是什么意思| 吃什么补气虚最快最好| 甜杆和甘蔗有什么区别| 白头发多吃什么食物能变黑| a货翡翠是什么意思| 失眠是什么意思| 赶集什么意思| 坐月子可以喝什么饮料| 代表什么| 医院红色手环代表什么| 为什么北方人比南方人高| 24h是什么意思| 血小板低吃什么补得快| 小便浑浊是什么原因| 海绵体修复吃什么药| 肛门松弛吃什么药| 油烟机没有吸力是什么原因| 奇货可居什么意思| 西安有什么好吃的| 稀盐酸是什么| 为什么老是胃胀气| 嘴唇发黑是什么原因| 9.21是什么星座| 菊花什么时候开花| 梦见死猪是什么意思| 右侧肋骨下面是什么器官| 子宫出血是什么原因造成的| 水云间什么意思| 肾不好挂什么科| 老虎五行属什么| 褒义词是什么意思| 翩跹是什么意思| 双肾泥沙样结石是什么意思| 梦见枕头是什么意思| 腊肠和什么菜炒最佳| 神经衰弱有什么症状| 身上起红点是什么原因| 男性内分泌失调吃什么药| 猫咪感冒吃什么药| 酸汤鱼用什么鱼| 两极分化是什么意思| 尿酸高吃什么药好| 牙神经挑了为什么还疼| 小肚子左边疼是什么原因| 小山羊是什么病| 昝是什么意思| 欢什么喜什么| 海参多少头是什么意思| 什么是顶香人| 转氨酶高是什么原因| 一月20号是什么星座| db是什么| 小便多是什么原因| 脚痒用什么药好| 智商是什么意思| idh是什么意思| 处女和什么座最配对| 8月29是什么星座| 穿青人是什么民族| 什么入什么出| hape是什么牌子| itp是什么| 岱字五行属什么| 喉咙疼痛吃什么药效果最好| 5月8号是什么星座| 老公护着婆婆说明什么| 十二月十号是什么星座| 老年人补什么钙效果最好| 本家是什么意思| p2大于a2什么意思| 男属龙和什么属相最配| 欣字属于五行属什么| 反流性食管炎吃什么中成药最好| 百度

View in English

  • Global Nav Open Menu Global Nav Close Menu
  • Apple Developer
Search
Cancel
  • Apple Developer
  • News
  • Discover
  • Design
  • Develop
  • Distribute
  • Support
  • Account
Only search within “”

Quick Links

5 Quick Links

Videos

Open Menu Close Menu
  • Collections
  • Topics
  • All Videos
  • About

More Videos

  • About
  • Transcript
  • 百度 所以囹圄怎么写呢?一个框框里面一个命令的令,圄就一个框框里面一个吾,就是我被国家的命令关在监牢里叫身系囹圄。

    Discover the latest updates to the App Store Server API and App Store Server Notifications. Explore the current API offerings and learn how to track subscription status with notifications, work with transactions on your server, and efficiently recover missed notifications. We'll also show you how your server can support apps using StoreKit or StoreKit 2, and share an important deprecation in the API and suggested migration workflow.

    Resources

    • App Store Server API changelog
    • App Store Server Notifications changelog
    • Generating JSON Web Tokens for API requests
    • Get Transaction Info
    • onlyFailures
    • status
    • Submit feedback
      • HD Video
      • SD Video

    Related Videos

    WWDC23

    • Meet StoreKit for SwiftUI
    • Meet the App Store Server Library

    WWDC22

    • Explore in-app purchase integration and migration
    • What's new with in-app purchase
  • Search this video…

    ? ? Ian: Hi, everyone. I'm Ian, and I'm an engineer on the App Store server team. Today I'll share some exciting updates about our server APIs for in-app purchase, including new features and important updates. If you're not familiar, we offer two primary APIs that help you get the most out of in-app purchases on your server. The first is the App Store Server API. You call the App Store Server API on-demand from your server, and it returns all the data you need to effectively manage in-app purchases made in your apps. The API offers a variety of powerful endpoints for retrieving and even modifying in-app purchase data.

    The other major API we offer is App Store Server Notifications V2.

    With App Store Server Notifications V2, the App Store server proactively sends updates to your server about in-app purchases made in your app. That means you can get minute-by-minute updates without needing to poll the App Store Server API.

    Notifications cover a comprehensive set of events, including subscription renewals, expirations, refunds, and much more.

    These events allow you to track the full lifecycle of in-app purchases, so you can better understand and respond to user behavior.

    The App Store Server API and App Store Server Notifications V2 share a lot of great features. They both provide transaction data in a familiar JSON format, and the data is signed, so you can be confident it came from Apple. You can also use both APIs to support your apps that use StoreKit 2 or the original StoreKit API. And we actively support these APIs with new features based on your feedback.

    Today I’m happy to announce the latest collection of updates coming to the App Store Server API and App Store Server Notifications V2.

    We have so many new features, I only have time to cover a few in today's session. Please check out our developer documentation for the full details of all these new features. Now let's dive into this great selection of App Store server updates. I'll share today's updates in three parts. First, I'll detail some new features that make working with transactions on your server easier. Next, I'll cover enhancements to App Store Server Notifications that will help you reliably determine the status of your users' subscriptions. And finally, I'll provide important updates about migrating away from our older APIs. Let's get started with transactions. Transactions are a core data object for in-app purchase. They represent an in-app purchase on a device and contain important information about that purchase, such as the product identifier, the type, the purchase date, and much more.

    The App Store Server represents a transaction through a JSON object signed with JWS. This is a secure, standardized format that you'll see across the App Store Server API and App Store Server Notifications V2.

    The primary way to retrieve these signed transactions is using the Get Transaction History endpoint of the App Store Server API.

    This endpoint returns the full transaction history for a given user of your app, so you can use it to keep up-to-date with all of a user's purchases, from past to present. But sometimes, your server is already aware of a transaction, for example, due to a call made from your app to your server. Server-side, you may want to further validate that transaction and ensure you have the most up-to-date information for it.

    Previously, this use case required calling Get Transaction History and sifting through the response for the matching transaction. Once found, you could refresh your record of the transaction with the data in the response.

    This process might feel tedious, particularly if your user's transaction history spans multiple pages, requiring multiple calls to the endpoint. And it also doesn't work if you're looking for a finished consumable transaction, as those don't appear in the Get Transaction History response. This use case simply demands a more specific solution.

    That's why today, we're introducing a new endpoint that will directly address this use case. With the new Get Transaction Info endpoint, you can request the signed transaction information for a single purchase, and all you need to provide is a transactionId.

    All transactionIds are supported, no matter the product type or the finished status of the transaction on the user's device. That's right, you can even fetch finished consumables from this endpoint.

    Let's take a quick look at how the new endpoint works.

    You'll send a GET request to this new endpoint on the App Store server, including the transactionId as a path parameter.

    You'll receive a response containing a signedTransactionInfo string.

    By decoding the signedTransactionInfo, you can view the transaction information for the ID you provided in the request.

    And that's it. The new Get Transaction Info endpoint is quite simple, but makes for greater flexibility when working with transactions on your server. I think you'll find it useful for a variety of use cases. Now, let's take that theme of flexibility and extend it even further.

    You might be familiar with these popular endpoints of the App Store Server API.

    Each of these endpoints require an originalTransactionId as a path parameter. This id indicates to the server which user you're requesting or sending data for.

    But you might not always have an originalTransactionId handy. What if all you have is a transactionId? You could send it to the new Get Transaction Info endpoint in order to retrieve the originalTransactionId, but why call one endpoint just to call another? Instead, starting today, you can call these endpoints with any transactionId.

    Just provide the ID in the path of your request, just as you did before. We hope this greater flexibility will make it easier than ever to call these core endpoints of the App Store Server API. And if you're already calling these endpoints with originalTransactionIds, don't worry, they will continue to work as well. Now let's switch over to updates coming to App Store Server Notifications. If your app offers auto-renewable subscriptions, it's important for you to keep track of the status of those subscriptions and how it changes over time.

    Here you can see the five possible statuses of a subscription. With App Store Server Notifications V2, you receive prompt notifications for events that lead to changes in this status, so you can quickly enable and disable content at the appropriate time and maintain a smooth user experience.

    Let's take a look at how notifications can inform your knowledge of a subscription's status. Many notification events directly indicate the status of the subscription through their type and subtype. Take for example this SUBSCRIBED notification with subtype INITIAL_BUY.

    This notification indicates a new subscription to your product, so you know the subscription's status is Active.

    Here's an even simpler example, where the notification type is EXPIRED.

    This clearly indicates that the status of the associated subscription is now Expired.

    But for some notifications, the subscription status may not be so clear. Take for example this REFUND notification. This notification type is sent when a refund is granted for an in-app purchase made in your app. Checking the signedTransactionInfo of this notification will tell us what purchase was refunded.

    In this case, we see the refund was for an auto-renewable subscription, so we'd like to update our record of the subscription's status.

    It might be tempting to assume the status is now "Revoked," but that's not necessarily the case. If there's a more recent subscription renewal purchase with the same originalTransactionId, the status of the subscription could still be Active. If that's the case, you should not disable access to the subscription content.

    In this situation, the status of the subscription is simply unclear, and the data in the notification alone is not enough to update it. This is not ideal. When you receive an App Store server notification for a subscription, we want it to clearly indicate the latest status of the subscription, so you can keep this important information up-to-date on your server.

    That's why today, we're introducing a new status field to the data object of App Store Server Notifications V2. This field is a simple integer that indicates one of the five core states of a subscription I detailed earlier.

    This new field will be included in every notification we send for auto-renewable subscriptions.

    Now you can get the status of a subscription without having to call the Get All Subscription Statuses endpoint of the App Store Server API. Let's see how this new field improves the scenario I described earlier. Now when you receive a REFUND notification for a subscription, you can simply check the status field to understand the status of the subscription.

    In this case it's 1, so you know the associated subscription is Active.

    The new status field makes App Store Server Notifications more useful than ever, so useful, that you'll want to ensure you don't miss a single one. But if your server experiences an outage, the App Store server may not be able to reach it to send a notification.

    That's why we offer the Get Notification History endpoint of the App Store Server API.

    This endpoint allows you to request up to the last six months of version 2 notifications the App Store server generated for your app.

    That way when your server has a known outage, you can call this endpoint for the outage period and retrieve any notifications your server missed.

    For some use cases though, this process might not feel very efficient. Occasionally, your server may miss a notification even outside of an outage, for example, due to transient network issues. In this situation, you might not have a clear time period to query the endpoint with, leaving you to sift through pages of notifications that your server has largely already received.

    To address this use case, we're introducing a new request field to Get Notification History called "onlyFailures".

    This optional field will limit the notifications returned to only those that have failed to reach your server. The response will even contain notifications that are currently in the retry process.

    Now you can recover from outages and occasional network issues much faster, as you only need to parse notifications that your server hasn't already seen. Let's take a look at how this new field works. You send a request to the Get Notification History endpoint, and you include the new field, onlyFailures, in the request body.

    Here's the response.

    Each entry in the notificationHistory array represents a notification, and since you included the new onlyFailures field in your request, every notification listed here has failed to reach your server.

    Let's zoom in to a single notification entry.

    Here we have the signedPayload. We can decode this string to view the contents of the notification, just as it was originally sent to your server.

    Taking a look at the sendAttempts array for this notification, we can now see the result of each send attempt. This array may contain up to six entries, with one for the initial send attempt, and up to five for retries.

    Here we see only two entries, and both have failed, so the notification must still be in the retry process. If a later retry is successful, this notification will no longer appear for subsequent requests that include the onlyFailures field.

    So that's how the new onlyFailures field works. I think you'll find that it makes Get Notification History even more useful.

    Finally, an important update about migrating away from our older APIs.

    If your app has offered in-app purchases for some time, you're likely familiar with the verifyReceipt API.

    In 2021, we released the App Store Server API as the new way to get in-app purchase data from the App Store Server. Let's compare these two APIs.

    With verifyReceipt, you can verify and decode the receipts you receive from clients running the original version of StoreKit. With the App Store Server API, you can fetch all the same data you find in receipts and more using these three endpoints. And the App Store Server API also provides a variety of additional endpoints that offer useful data and powerful functionality you won't find anywhere else.

    Shifting to our notification APIs, we still support the older App Store Server Notifications V1.

    But in 2021, we introduced App Store Server Notifications V2. Now let's compare these APIs.

    App Store Server Notifications V1 and V2 both offer real-time in-app purchase events sent directly to your server. But V2 offers greater clarity by defining events using both a type and subtype. And the differences don't stop there. V2 also offers notifications for additional events, the ability to request a test notification, access to notification history, and the brand-new status field for tracking the state of your users' subscriptions.

    By adopting the App Store Server API and App Store Server Notifications V2, you'll unlock a wide array of new features for securely and efficiently managing in-app purchase data on your server. Ultimately, that means a better in-app purchase experience for your customers.

    That's why today, we're announcing the deprecation of verifyReceipt and App Store Server Notifications V1. Starting today, these APIs are considered deprecated and will no longer receive feature updates.

    Start planning your migration now to enjoy all the benefits of the newer APIs.

    Migration requires just a few short steps.

    To migrate from verifyReceipt to the App Store Server API, you'll first need to sign a JWT to represent your app, which is a simple process outlined in our documentation. Whenever you call the App Store Server API, you'll provide this JWT as a header. It will prove that you own the requested app data.

    Next, you'll need to save a transactionId for each of your users. You'll provide this transactionId as a path parameter whenever you call core endpoints, like Get Transaction History and Get All Subscription Statuses. Any transactionId will work. If you maintain a database you likely already have one saved. Otherwise, you can extract one from a receipt for each of your users.

    And that's it. You'll then have access to all the same data you used to get from verifyReceipt and so much more.

    Migration from App Store Server Notifications V1 to V2 is even simpler. First, prepare your server to parse the new V2 format. If you're already using the App Store Server API, this step should be straightforward, as App Store Server Notifications V2 uses the same JWS transaction format.

    Once your server is ready, visit App Store Connect to change your preference from V1 to V2 notifications. To test your implementation, you can start by receiving version 2 notifications in sandbox only.

    After switching your preference, the App Store server will start sending new notifications in the V2 format. If you have any V1 notifications in the retry process, you may continue to receive them for up to three days.

    For more assistance with migration, we have additional resources available. The App Store Server API and App Store Server Notifications V2 are available in the sandbox environment, so you can test your implementation before rolling it out to production.

    And this week, we are releasing the App Store Server Library, a new open-source library for calling the App Store Server API and parsing App Store Server Notifications V2. It can help you easily call our endpoints, verify the signed data you receive, and even extract transactionIds from receipts to make migration easier.

    I hope you'll check out its dedicated session at WWDC this year titled "Meet the App Store Server Library." And for more tips on how to migrate, see the WWDC22 session titled, "Explore in-app purchase integration and migration".

    That concludes our App Store Server updates for this session. I hope you'll utilize the great new capabilities we announced today, and check out our documentation for even more features we didn't have time to review.

    Every feature is available now in both sandbox and production, so you can first test in sandbox, then roll out to your production server whenever you're ready.

    And we'd love to hear from you. If you have feature requests for the App Store server, please let us know through Apple’s Feedback Assistant. Thanks for joining me at WWDC23! ? ?

Developer Footer

  • Videos
  • WWDC23
  • What’s new in App Store server APIs
  • Open Menu Close Menu
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    Open Menu Close Menu
    • Accessibility
    • Accessories
    • App Extensions
    • App Store
    • Audio & Video
    • Augmented Reality
    • Design
    • Distribution
    • Education
    • Fonts
    • Games
    • Health & Fitness
    • In-App Purchase
    • Localization
    • Maps & Location
    • Machine Learning
    • Open Source
    • Security
    • Safari & Web
    Open Menu Close Menu
    • Documentation
    • Tutorials
    • Downloads
    • Forums
    • Videos
    Open Menu Close Menu
    • Support Articles
    • Contact Us
    • Bug Reporting
    • System Status
    Open Menu Close Menu
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles
    • Feedback Assistant
    Open Menu Close Menu
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program
    • News Partner Program
    • Video Partner Program
    • Security Bounty Program
    • Security Research Device Program
    Open Menu Close Menu
    • Meet with Apple
    • Apple Developer Centers
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Academies
    • WWDC
    Get the Apple Developer app.
    Copyright ? 2025 Apple Inc. All rights reserved.
    Terms of Use Privacy Policy Agreements and Guidelines
    心脑血管供血不足吃什么药 没有高中毕业证有什么影响 辅酶是什么 我靠是什么意思 老鼠和什么属相最配对
    巴适什么意思 sp是什么意思 晨尿有泡沫是什么原因 阴历六月十八是什么日子 发烧骨头疼是什么原因
    女性潮红是什么意思 复辟什么意思 男友力是什么意思 梵行是什么意思 ab型血为什么容易得精神病
    为什么会耳鸣 子宫附件包括什么 8是什么意思 跖疣是什么原因引起的 broom是什么意思
    em什么意思hcv8jop5ns9r.cn 琉璃是什么材质hcv8jop4ns3r.cn 神经节是什么hcv7jop9ns0r.cn 颈椎问题挂什么科hcv8jop7ns9r.cn 小便失禁是什么原因男性hcv8jop9ns7r.cn
    人为什么会出汗hcv8jop8ns9r.cn 吃什么回奶最快最有效fenrenren.com 妲己是什么生肖hcv8jop0ns7r.cn 财年是什么意思hcv9jop4ns4r.cn 入坑是什么意思hcv8jop2ns5r.cn
    兽中之王是什么动物jasonfriends.com 水黄是什么原因hcv8jop9ns0r.cn 生气对身体有什么危害hcv8jop6ns1r.cn 惨烈是什么意思hcv8jop2ns7r.cn 乐果农药适合杀什么虫hcv9jop4ns2r.cn
    泰迪吃什么hcv8jop5ns6r.cn 鹅口疮是什么原因引起的hcv9jop3ns9r.cn 二月初四是什么星座jinxinzhichuang.com 怕热不怕冷是什么体质gysmod.com 什么是结节hcv9jop0ns4r.cn
    百度