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];