首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解serverVerificationData in_app_purchase颤振

理解serverVerificationData in_app_purchase颤振
EN

Stack Overflow用户
提问于 2022-05-15 14:44:56
回答 1查看 454关注 0票数 1

我已经完成了所有的设置来验证我的收据服务器端(在python中使用requests包)。

这是我的代码:

代码语言:javascript
复制
url = "https://buy.itunes.apple.com/verifyReceipt"
                request_body = {"receipt-data": token}
                headers = {'Content-Type': 'application/json'}
                response = requests.post(url=url, headers=headers, data=request_body)

这里唯一的变量是从客户机(flutter)发送的token,即:purchaseDetails.verificationData.serverVerificationData

我无法验证收据,因为如果我将token作为string传递,我总是收到一个21002错误(格式错误)。

如果我在python中尝试这样的东西:

代码语言:javascript
复制
token = base64.b64encode(token)

它抛出了这个错误:a bytes-like object is required, not 'str',我不理解它,因为我实际上是在传递一个bytes对象。

传递给POST请求以验证iOS收据的正确格式是什么?颤音是正确的还是我们应该编码什么?

任何具体的例子都会被接受,因为我找不到。

PS :如果生产失败,我将重定向到沙箱url "https://sandbox.itunes.apple.com/verifyReceipt"。沙箱response与生产沙箱(statusCode: 21002)相同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-19 21:03:22

看起来您的收据不正确(沙箱有时有问题),或者您的服务器端设置错误。

对于第一点,可以通过生成storeKit配置文件来尝试创建收据。这是不可能在颤振中完成的,您必须使用代码打开iOS模块,并通过这里设置存储工具包配置文件。

在设置了存储包文件之后,您可以直接从xCode运行应用程序,也可以直接关闭xCode,然后从您喜欢的颤振IDE中运行。

现在,当您尝试从应用程序中获取/购买产品时,iOS将永远不会命中生产采购标识符,而是从您的storekit配置中获取产品并从这些配置中生成收据。此收据由apple验证端点接受,您还可以使用存储配置测试来自xCode的退款和订阅取消。

对于第二点,您必须在iTunes连接中启用应用程序特定的共享秘密,然后在收据验证API中的“密码”键中使用该密钥。这里是你找到它的地方AppStoreConnect >你的应用程序>订阅

如果它仍然不能解决这个问题,我很乐意提供进一步的帮助。

编辑:我只是测试购买一个自动更新订阅购买沙箱(不是商店t),然后验证它使用沙箱URL,它返回正确的收据数据。在上面的文章中,您不需要对purchaseDetails.verificationData.serverVerificationData进行base64编码,因为它已经被编码了。你在邮递员身上测试过这个吗?它在那里起作用

编辑:所以请求格式错误,因为您没有以字符串的形式发送数据,因此需要转储dict

代码语言:javascript
复制
request_body = json.dumps({"receipt-data": token})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72249340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档