mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
InAppPurchases: handle the case with AppStore where purchase time in a receipt is a string.
This commit is contained in:
parent
523a5992cf
commit
e0088c12b2
1 changed files with 24 additions and 2 deletions
|
|
@ -588,12 +588,14 @@ struct InAppPurchases::Pimpl : public SKDelegateAndPaymentObserver
|
|||
{
|
||||
if (auto productId = getAs<NSString> (purchaseData[nsStringLiteral ("product_id")]))
|
||||
{
|
||||
if (auto purchaseTime = getAs<NSNumber> (purchaseData[nsStringLiteral ("purchase_date_ms")]))
|
||||
auto purchaseTime = getPurchaseDateMs (purchaseData[nsStringLiteral ("purchase_date_ms")]);
|
||||
|
||||
if (purchaseTime > 0)
|
||||
{
|
||||
purchases.add ({ { nsStringToJuce (transactionId),
|
||||
nsStringToJuce (productId),
|
||||
nsStringToJuce (bundleId),
|
||||
Time ([purchaseTime integerValue]).toString (true, true, true, true),
|
||||
Time (purchaseTime).toString (true, true, true, true),
|
||||
{} }, {} });
|
||||
}
|
||||
else
|
||||
|
|
@ -625,6 +627,26 @@ struct InAppPurchases::Pimpl : public SKDelegateAndPaymentObserver
|
|||
{}, false, NEEDS_TRANS ("Receipt fetch failed")); });
|
||||
}
|
||||
|
||||
static int64 getPurchaseDateMs (id date)
|
||||
{
|
||||
if (auto dateAsNumber = getAs<NSNumber> (date))
|
||||
{
|
||||
return [dateAsNumber longLongValue];
|
||||
}
|
||||
else if (auto dateAsString = getAs<NSString> (date))
|
||||
{
|
||||
auto* formatter = [[NSNumberFormatter alloc] init];
|
||||
[formatter setNumberStyle: NSNumberFormatterDecimalStyle];
|
||||
dateAsNumber = [formatter numberFromString: dateAsString];
|
||||
[formatter release];
|
||||
return [dateAsNumber longLongValue];
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
static Product SKProductToIAPProduct (SKProduct* skProduct)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue