1
0
Fork 0
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:
Lukasz Kozakiewicz 2017-10-24 08:56:28 +02:00
parent 523a5992cf
commit e0088c12b2

View file

@ -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)
{