为什么我的 back-end 服务器收到我的实时开发者通知 POST,用于从我的应用程序购买测试订阅,但 body 是空的?
Why does my Real Time Developer Notification POST received by my back-end server for a test subscription purchase from my app have an empty body?
我已将我的应用程序设置为包含购买订阅的详细信息here. I have implemented the appropriate code to validate the POST sent by Google to my back-end server using an approach similar to the one discussed here。
从 Google 控制台发送第一个 link 中讨论的测试消息导致我的 back-end 服务器收到推送通知,但是我注意到 [=31= POST 的 ] 为空。
使用 4.0.0 版本的计费 API 在我的应用程序中实施购买订阅的代码会在设备上本地从 Google Play 获得成功的结果(即我得到 onPurchasesUpdated()
在我的应用程序中回调,并为用户刚刚购买的商品设置适当的值),并且还会导致推送通知作为 POST 从 Google 发送到我的 back-end,但是这个 POST 也有一个空的 body。我确实得到了带有正确编码块的“Bearer”header,body.
中什么也没有
根据文档 here,我应该在 POST 中有一个 body 我在 back-end 上收到的内容类似于:
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
并且数据元素应该是包含有关购买事件的信息的编码字符串。然而,正如我提到的,我收到的 POST 的 body 是空的。为什么?
对于那些阅读这篇文章的人 post,由于我在基于 Wix 的网络服务器上托管后端,所以发现有问题。在将请求传递到我的后端 javascript 之前,他们拦截了 POST 并拦截了它的主体。然后我必须调用一个作为承诺实现的函数(Wix 平台上的后端编码基本上在 Node.js 服务器上执行),我必须使用解决承诺的 Wix 特定方法来检索它。一旦我这样做了:
const wixBodyResult = await request.body.json();
然后我能够适当地解析 wixBodyResult
并适当地解码数据块。
我已将我的应用程序设置为包含购买订阅的详细信息here. I have implemented the appropriate code to validate the POST sent by Google to my back-end server using an approach similar to the one discussed here。
从 Google 控制台发送第一个 link 中讨论的测试消息导致我的 back-end 服务器收到推送通知,但是我注意到 [=31= POST 的 ] 为空。
使用 4.0.0 版本的计费 API 在我的应用程序中实施购买订阅的代码会在设备上本地从 Google Play 获得成功的结果(即我得到 onPurchasesUpdated()
在我的应用程序中回调,并为用户刚刚购买的商品设置适当的值),并且还会导致推送通知作为 POST 从 Google 发送到我的 back-end,但是这个 POST 也有一个空的 body。我确实得到了带有正确编码块的“Bearer”header,body.
根据文档 here,我应该在 POST 中有一个 body 我在 back-end 上收到的内容类似于:
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
并且数据元素应该是包含有关购买事件的信息的编码字符串。然而,正如我提到的,我收到的 POST 的 body 是空的。为什么?
对于那些阅读这篇文章的人 post,由于我在基于 Wix 的网络服务器上托管后端,所以发现有问题。在将请求传递到我的后端 javascript 之前,他们拦截了 POST 并拦截了它的主体。然后我必须调用一个作为承诺实现的函数(Wix 平台上的后端编码基本上在 Node.js 服务器上执行),我必须使用解决承诺的 Wix 特定方法来检索它。一旦我这样做了:
const wixBodyResult = await request.body.json();
然后我能够适当地解析 wixBodyResult
并适当地解码数据块。