From c2990e538391212a11819ff7aef471c0d144b643 Mon Sep 17 00:00:00 2001 From: p-tsai Date: Wed, 29 Nov 2017 10:21:18 -0800 Subject: [PATCH] Add refresh receipt --- InAppUtils/InAppUtils.m | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/InAppUtils/InAppUtils.m b/InAppUtils/InAppUtils.m index 073d174..00342b3 100644 --- a/InAppUtils/InAppUtils.m +++ b/InAppUtils/InAppUtils.m @@ -179,6 +179,35 @@ - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue callback(@[@(canMakePayments)]); } +RCT_EXPORT_METHOD(refreshReceipt:(BOOL)testExpired + testRevoked:(BOOL)testRevoked + callback:(RCTResponseSenderBlock)callback) +{ + SKReceiptRefreshRequest *refreshRequest; + if (testExpired || testRevoked) { + NSDictionary *properties = @{ + SKReceiptPropertyIsExpired:@(testExpired), + SKReceiptPropertyIsRevoked:@(testRevoked) + }; + refreshRequest = [[SKReceiptRefreshRequest alloc] initWithReceiptProperties:properties]; + } else { + refreshRequest = [[SKReceiptRefreshRequest alloc] init]; + } + refreshRequest.delegate = self; + _callbacks[RCTKeyForInstance(refreshRequest)] = callback; + [refreshRequest start]; +} + +- (void)requestDidFinish:(SKRequest *)request +{ + NSString *key = RCTKeyForInstance(request); + RCTResponseSenderBlock callback = _callbacks[key]; + if (callback) { + callback(@[[NSNull null], @"finished"]); + [_callbacks removeObjectForKey:key]; + } +} + RCT_EXPORT_METHOD(receiptData:(RCTResponseSenderBlock)callback) { NSURL *receiptUrl = [[NSBundle mainBundle] appStoreReceiptURL];