iOS如何获取苹果服务器到服务器通知返回的收据中的用户id

问题描述 投票:0回答:1

这实际上可以归结为 iOS 和苹果收据服务器到服务器的通知,但我有一个使用 cordova-plugin-purchase 插件的电容器应用程序。 我试图以某种方式设置用户 ID,以便当我在 Apple 的 webhook 上收到购买收据时,我可以将购买与用户进行匹配。 我尝试将用户 ID 设置为我能想到的最佳值:

store.applicationUsername = UUID;

我尝试了 UUID、字符串等,但似乎没有任何效果。我已将其设置在流程中的多个位置,但也没有运气。 我从苹果那里得到的购买反馈从来不包括用户 ID:

{
"transactionId": "2000000725875555",
"originalTransactionId": "2000000725875555",
"bundleId": "com.example",
"productId": "product1",
"purchaseDate": 1727338993000,
"originalPurchaseDate": 1727338993000,
"quantity": 1,
"type": "Consumable",
"inAppOwnershipType": "PURCHASED",
"signedDate": 1727339027581,
"environment": "Sandbox",
"transactionReason": "PURCHASE",
"storefront": "USA",
"storefrontId": "555555",
"price": 5000,
"currency": "USD"
}

我也尝试在 order() 函数中设置它,但没有成功:

await offer.order({
     applicationUsername: '9e7ee220aced5367585f2b048f97b33a',
});

我开始怀疑我这样做是否正确。 我不明白人们如何将购买与购买收据中的用户进行匹配。 我唯一要做的就是在每次购买之前获取购买并将其发送到我的后端以进行匹配。 这只是我试图避免的更多流量到我的服务器。

此时,任何有关其他人做什么的建议或示例将不胜感激!

ios cordova capacitor
1个回答
0
投票

对于遇到此问题的其他人,对于 iOS,applicationUsername 必须是 UUID(我认为是 v4)。 CDVPurchase 中的 applicationUsername 变量也必须是可调用的。然后,如果设置正确,它将返回 uuid,就像在苹果的服务器到服务器通知中一样:

"appAccountToken":"4758a858-26cc-47a9-ae79-1ad8254b96ea"

我是这样设置的:

store.applicationUsername = () => user.uuid

还要注意这也适用于沙箱。

不要被store.ts中的字符串类型误导。 它不能作为字符串使用:

public applicationUsername?: string | (() => string | undefined)
© www.soinside.com 2019 - 2024. All rights reserved.