实时开发者通知不发送 IAP 订阅事件消息

Real-time Developer Notifications Not Sending IAP Subscription Event Messages

在设置 Android 实时开发者通知 (RTDN) 作为接收 IAP 订阅状态​​更改到我的网络服务器的方式后,我实际上只收到来自 Google 的特定推送从不包含订阅详细信息的 RTDN webhook。以下是每次从我的应用程序发生购买订阅事件时发送到我的服务器的有效负载结构:

"message": {
    "data": "longstringofcharacters",
    "messageId": "604411111111111",
    "message_Id": "60442222222222",
    "publishTime": "2019-07-03T11:03:34.076Z",
    "publish_time": "2019-07-03T11:03:34.076Z",
},
"subscription": "projects/api-keyname/subscriptions/my-project-name"

根据 Google 的 RTDN 设置指南 (https://developer.android.com/google/play/billing/realtime_developer_notifications.html),以下格式是我在购买、取消、恢复或进行任何其他订阅时应该收到的格式我的应用程序中用户的相关状态更改:

{
  "version": string,
  "packageName": string
  "eventTimeMillis": long
  "subscriptionNotification": SubscriptionNotification
  "testNotification": TestNotification
}

我已经多次阅读 Google 的 RTDN 设置指南,并确保我的主题已使用 "google-play-developer-notifications@system.gserviceaccount.com" 授予 "Pub/Sub Publisher" 的发布者权限,其中 Google 说是必要的步骤;这样做我相信是我能够接收 webhook 传输的原因,但出于某种原因我不明白为什么订阅事件没有被传输。

最终,我的目标是接收包含 IAP 状态更改详细信息的正确负载,以便自动与我服务器上的用户数据库同步。

有没有人在尝试接收 IAP 推送通知时使用 RTDN 遇到过这种情况?

我想通了:我在 Google 的指南中遗漏了我期望的有效负载是在我上面粘贴的 "data": "longstringofcharacters" 部分中进行的 base64 编码。意识到这一点后,我从我的日志中解码了一个,并找到了我期望的 IAP 订阅详细信息。