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

求Apple Server-to-Server退款通知responseBodyV2DecodedPayload示例

Apple Server Notification REFUND类型完整解码Payload示例及模拟生产测试方案

一、REFUND类型完整解码Payload示例

以下是生产环境中REFUND类型通知的解码后Payload完整示例,包含JWSTransaction的核心字段:

{
  "notificationType": "REFUND",
  "subtype": "FULFILLMENT_REFUND",
  "notificationUUID": "123e4567-e89b-12d3-a456-426614174000",
  "version": "2.0",
  "signedDate": 1699999999000,
  "data": {
    "appAppleId": 123456789,
    "bundleId": "com.yourcompany.yourapp",
    "bundleVersion": "1.0.0",
    "environment": "PRODUCTION",
    "signedTransactionInfo": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJBcHBsZSBTdG9yZSBDb25uZWN0IiwiaWF0IjoxNjk5OTk5OTk5LCJleHAiOjE3MzE1MzU5OTksImRhdGEiOnsidHJhbnNhY3Rpb25JZCI6IlQxMjM0NTY3ODkwMTIzNDUiLCJvcmlnaW5hbFRyYW5zYWN0aW9uSWQiOiJPMTIzNDU2Nzg5MDEyMzQ1IiwicHVyY2hhc2VEYXRlIjoxNjk5OTk5ODAwMDAwLCJleHBpcmVzRGF0ZSI6MTcwMjU5MTgwMDAwMCIsInF1YW50aXR5IjoxLCJwcm9kdWN0SWQiOiJjb20ueW91cmNvbXBhbnkueW91cnByb2R1Y3QxIiwic3Vic2NyaXB0aW9uR3JvdXBSZWZlcmVuY2VyIjoiY29tLnlvdXJjb21wYW55LnN1YnNjcmlwdGlvbi1ncm91cCIsIndlYk9yZGVyTGluZUl0ZW1JZCI6IkxMTIzNDU2Nzg5MDEyMzQ1IiwiaXNVcGdyYWRlZCI6dHJ1ZSwib2ZmZXJUeXBlIjoxLCJvZmZlcklkZW50aWZpZXIiOiJPRkZFUl8xMjM0NTY3ODkiLCJyZWZ1bmRUeXBlIjoiRlVMRklMTUVOVF9SRUZVTkQiLCJyZWZ1bmREYXRlIjoxNjk5OTk5OTAwMDAwLCJyZWZ1bmRBbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVUyJ9fQ.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890",
    "signedRenewalInfo": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJBcHBsZSBTdG9yZSBDb25uZWN0IiwiaWF0IjoxNjk5OTk5OTk5LCJleHAiOjE3MzE1MzU5OTksImRhdGEiOnsic3Vic2NyaXB0aW9uSWQiOiJTMTIzNDU2Nzg5MDEyMzQ1Iiwib3JpZ2luYWxUcmFuc2FjdGlvblV1aWQiOiJVMjM0NTY3ODkwMTIzNDUiLCJ1c2VySWQiOiJVMTIzNDU2Nzg5MDEyMzQ1IiwidHJhbnNhY3Rpb25JZCI6IlQxMjM0NTY3ODkwMTIzNDUiLCJvcmlnaW5hbFRyYW5zYWN0aW9uSWQiOiJPMTIzNDU2Nzg5MDEyMzQ1IiwicHJvZHVjdElkIjoiY29tLnlvdXJjb21wYW55LnN1YnNjcmlwdGlvbi1wcm9kdWN0IiwidXNlck5hbWUiOiJUb20zNjUyIiwidXNlckVtYWlsIjoib3JnYW5pemVyQHlvdXJjb21wYW55LmNvbSIsInJlZnJlbmNlVGltZXN0YW1wIjoxNjk5OTk5OTAwMDAwLCJyZWZ1bmVBbW91bnQiOiIxMDAwIiwiY3VycmVuY3kiOiJVUyIsInJlZnJlbmNlVHlwZSI6IkZVTExJTUVOVF9SRUZVTkQifXw.ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba0987654321"
  },
  "summary": {
    "requestIdentifier": "REQ_123456789012345",
    "refundCount": 1,
    "totalRefundAmount": {
      "amount": "1000",
      "currency": "US"
    }
  }
}

解码后的JWSTransaction核心字段说明:

  • transactionId: 当前交易唯一ID
  • originalTransactionId: 原始订阅/购买的根交易ID
  • purchaseDate: 购买完成的时间戳(毫秒级)
  • expiresDate: 订阅到期时间戳(仅订阅类商品)
  • quantity: 购买数量
  • productId: 内购商品ID
  • subscriptionGroupIdentifier: 订阅组唯一标识(仅订阅类)
  • webOrderLineItemId: 苹果订单系统中的行项目ID
  • isUpgraded: 是否为订阅升级/降级操作产生的交易
  • offerType: 优惠类型(0=无优惠,1=介绍期优惠,2=促销优惠,3=家庭共享优惠)
  • offerIdentifier: 优惠活动的唯一标识
  • refundType: 退款类型(如FULFILLMENT_REFUND表示已履约后的退款)
  • refundDate: 退款操作完成的时间戳
  • refundAmount: 退款金额(最小货币单位,如1000代表10美元)
  • currency: 退款使用的货币代码

二、模拟生产请求的完整测试Payload获取方法

  1. 沙箱环境触发真实退款通知

    • 用App Store Connect创建的沙箱测试账号完成内购购买,再通过App Store Connect的“订单管理”手动发起退款,沙箱会发送结构与生产一致的完整通知到你的服务器,仅environment字段为SANDBOX。
  2. 自行构造测试Payload

    • 按照苹果JWT规范,使用你的App Store Connect私钥(.p8文件)签名自定义Payload:
      • 头部指定算法为ES256、类型为JWT
      • 负载包含iss(Issuer ID)、iat(签发时间戳)、exp(过期时间戳),以及上述示例中data字段的所有核心内容
    • 将签名后的完整JWT字符串作为请求体发送到你的服务器,模拟苹果生产环境的通知请求格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:40:27