Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No transactions in response, Payment completed with no transactions #4524

Closed
7 of 12 tasks
TobiasPalludan opened this issue Nov 27, 2024 · 10 comments
Closed
7 of 12 tasks
Labels

Comments

@TobiasPalludan
Copy link

TobiasPalludan commented Nov 27, 2024

Describe the bug
A clear and concise description of what the bug is. The more detail you can provide the faster our team will be able to triage and resolve the issue. Do not remove any of the steps from the template below. If a step is not applicable to your issue, please leave that step empty.

I'm quite inexperienced with RevenueCat, so I apologize if I am not following proper form, and it is likely what is tripping me up.
In production on iOS, when users start trial of my only product they successfully complete the purchase, but the purchase screen stays, and the user is not registered as paid even when the app is reopened.
I can see the trial in iOS settings under subscriptions.
I am unable to recreate the issue in sandbox mode where payment works without problems.
It is not caught by Apples review process either.

  1. Environment
    1. Platform: iOS
    2. SDK version: 5.6.0
    3. StoreKit version:
      • StoreKit 1 (default on versions <5.0.0. Can be enabled in versions >=5.0.0 with .with(storeKitVersion: .storeKit1))
      • StoreKit 2 (default on versions >=5.0.0)
    4. OS version: 18.0
    5. Xcode version: 15.4
    6. Device and/or simulator:
      • Device
      • Simulator
    7. Environment:
      • Sandbox
      • TestFlight
      • Production
    8. How widespread is the issue. Percentage of devices affected.
      I have multiple reports from my separate users, so I fear it's everyone.
  2. Debug logs that reproduce the issue. Complete logs with Purchases.logLevel = .verbose will help us debug this issue.

What I captured from Xcode in production environment:

default	09:26:14.068383-0500	storekitd	AMSPurchaseTask: [9CD3F2E1_SK2] Purchase completed successfully
default	09:26:14.068572-0500	storekitd	AMSPurchaseTask: [9CD3F2E1_SK2] === Finished ===
default	09:26:14.068636-0500	storekitd	[9CD3F2E1_SK2] Payment complete
default	09:26:14.068700-0500	storekitd	[9CD3F2E1_SK2] 0 transactions in response
default	09:26:14.073381-0500	storekitd	[9CD3F2E1_SK2] Forcing server transaction sync for legacy purchase
default	09:26:14.073445-0500	storekitd	[9CD3F2E1_SK2] Syncing server transactions
error	09:26:14.073820-0500	storekitd	[9CD3F2E1_SK2] Payment completed with no transactions
default	09:26:14.073422-0500	storekitd	[9CD3F2E1_SK2] Forcing server transaction sync for legacy purchase
default	09:26:14.073491-0500	storekitd	[9CD3F2E1_SK2] Syncing server transactions
error	09:26:14.073860-0500	storekitd	[9CD3F2E1_SK2] Payment completed with no transactions
default	09:26:14.073402-0500	storekitd	[9CD3F2E1_SK2] Forcing server transaction sync for legacy purchase
default	09:26:14.073470-0500	storekitd	[9CD3F2E1_SK2] Syncing server transactions
error	09:26:14.073841-0500	storekitd	[9CD3F2E1_SK2] Payment completed with no transactions
error	09:26:14.075148-0500	Runner	Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=825 "No transactions in response" UserInfo={NSDebugDescription=No transactions in response}
error	09:26:14.075186-0500	Runner	Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=825 "No transactions in response" UserInfo={NSDebugDescription=No transactions in response}
error	09:26:14.075166-0500	Runner	Purchase did not return a transaction: Error Domain=ASDErrorDomain Code=825 "No transactions in response" UserInfo={NSDebugDescription=No transactions in response}
default	09:26:14.076987-0500	storekitd	AMSURLRequestEncoder: [9CD3F2E1_SK2] Encoding request for URL: https://mzstorekit.itunes.apple.com/inApps/v1/history?guid=00008130-000278D13EDA001C&reason=purchase
 { 
	account = <ACAccount: 0xbc63289a0 type = iTunesStore | backingID = 6E9B6AF3-7DB1-4D0A-82ED-5ED1781B16C7 | username = [email protected] | altDSID = 000518-08-59ae2873-c936-44f6-bdd0-0423268e133b | DSID = 17320517425 | active = true | storefront = 143458-11,29> 
	mediaType = com.apple.AppleMediaServices.accountmediatype.production 
}
default	09:26:14.077050-0500	storekitd	AMSURLRequestEncoder: [9CD3F2E1_SK2] Encoding request for URL: https://mzstorekit.itunes.apple.com/inApps/v1/history?guid=00008130-000278D13EDA001C&reason=purchase
 { 
	account = <ACAccount: 0xbc63289a0 type = iTunesStore | backingID = 6E9B6AF3-7DB1-4D0A-82ED-5ED1781B16C7 | username = [email protected] | altDSID = 000518-08-59ae2873-c936-44f6-bdd0-0423268e133b | DSID = 17320517425 | active = true | storefront = 143458-11,29> 
	mediaType = com.apple.AppleMediaServices.accountmediatype.production 
}
default	09:26:14.077018-0500	storekitd	AMSURLRequestEncoder: [9CD3F2E1_SK2] Encoding request for URL: https://mzstorekit.itunes.apple.com/inApps/v1/history?guid=00008130-000278D13EDA001C&reason=purchase
 { 
	account = <ACAccount: 0xbc63289a0 type = iTunesStore | backingID = 6E9B6AF3-7DB1-4D0A-82ED-5ED1781B16C7 | username = [email protected] | altDSID = 000518-08-59ae2873-c936-44f6-bdd0-0423268e133b | DSID = 17320517425 | active = true | storefront = 143458-11,29> 
	mediaType = com.apple.AppleMediaServices.accountmediatype.production 
}
error	09:26:14.077811-0500	Runner	ERROR: 💰 Product purchase for 'monthlystar1' failed with error: unknown
error	09:26:14.077790-0500	Runner	ERROR: 💰 Product purchase for 'monthlystar1' failed with error: unknown
error	09:26:14.077832-0500	Runner	ERROR: 💰 Product purchase for 'monthlystar1' failed with error: unknown

What I'm getting from the simulator:

DEBUG: ℹ️ SDK Version - 5.6.0
DEBUG: ℹ️ Bundle ID - dk.themusicstar.themusicstar
DEBUG: ℹ️ System Version - Version 17.5 (Build 21F79)
DEBUG: ℹ️ Observing StoreKit.Transaction.updates
DEBUG: ℹ️ Using a simulator. Ensure you have a StoreKit Config file set up before trying to fetch products or make purchases.
See https://errors.rev.cat/testing-in-simulator
 for more details.
DEBUG: 👤 No initial App User ID
DEBUG: ℹ️ Purchases is configured with response verification disabled
DEBUG: ℹ️ Purchases is configured with StoreKit version 2
VERBOSE: Purchases.init: created new Purchases instance: Purchases (0x0000000106b0ec30)
StoreKit Wrapper: right(<RevenueCat.PaymentQueueWrapper: 0x6000002a0c60>)
VERBOSE: Purchases.deinit: Purchases (0x000000010671e150)
VERBOSE: Closing FileHandler for: file:///Users/louisejensen/Library/Developer/CoreSimulator/Devices/F486CAA9-1E40-48CA-AF94-36307C76D75C/data/Containers/Data/Application/D3A91E66-6ABB-45BE-8684-FF88A747ADA6/Library/Application%20Support/revenuecat/paywall_event_store
VERBOSE: PurchasesOrchestrator.deinit: PurchasesOrchestrator (0x0000000106b06860)
VERBOSE: DeviceCache.deinit: DeviceCache (0x000060000291dd50)
DEBUG: ℹ️ Delegate set
VERBOSE: Updating all caches
DEBUG: ℹ️ No cached Offerings, fetching from network
DEBUG: ℹ️ Offerings cache is stale, updating from network in foreground
VERBOSE: Enqueing network operation 'GetOfferingsOperation' with cache key: 'GetOfferingsOperation $RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3'
DEBUG: ℹ️ Network operation 'GetOfferingsOperation' found with the same cache key 'GetOfferingsOperation $RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3'. Skipping request.
DEBUG: ℹ️ GetOfferingsOperation: Started
DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3/offerings
VERBOSE: Using etag '54a08b56ddb353c3' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3/offerings
'. Validation time: 2024-11-27 15:58:50 +0000
DEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3/offerings'
VERBOSE: Enqueing network operation 'GetCustomerInfoOperation' with cache key: 'GetCustomerInfoOperation $RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3'
VERBOSE: Storing etag '54a08b56ddb353c3' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3/offerings
' (success)
DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3/offerings' (304)
Request-ID: 'bff4ad17-93d1-4006-a5c8-f50c11f42de7'; Amzn-Trace-ID: 'Root=1-674741bc-174abd654848ee6b6e1e4a9e'
DEBUG: ℹ️ No existing products cached, starting store products request for: ["monthlystar1"]
DEBUG: ℹ️ Found an existing request for products: ["monthlystar1"], appending to completion
DEBUG: ℹ️ GetOfferingsOperation: Finished
DEBUG: ℹ️ Serial request done: GET /v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3/offerings, 0 requests left in the queue
DEBUG: ℹ️ GetCustomerInfoOperation: Started
DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3
VERBOSE: Using etag 'acda4979a4583516' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3
'. Validation time: 2024-11-27 15:58:50 +0000
DEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3'
DEBUG: 😻 Store products request received response
DEBUG: ℹ️ Store products request finished
DEBUG: 😻 Offerings updated from network.
DEBUG: 😻 Offerings updated from network.
flutter: Offerings(all: {default: Offering(identifier: default, serverDescription: The default offering to the user., metadata: {}, availablePackages: [Package(identifier: $rc_monthly, packageType: PackageType.monthly, storeProduct: StoreProduct(identifier: monthlystar1, description: Full access to all features in the Music Star, title: Monthly subscription, price: 6.49, priceString: $6.49, currencyCode: USD, introductoryPrice: IntroductoryPrice(price: 0.0, priceString: $0.00, period: P3D, cycles: 1, periodUnit: PeriodUnit.day, periodNumberOfUnits: 3), discounts: [], productCategory: ProductCategory.subscription, defaultOption: null, subscriptionOptions: null, presentedOfferingContext: null, subscriptionPeriod: P1M), presentedOfferingContext: PresentedOfferingContext(offeringIdentifier: default, placementIdentifier: null, targetingContext: null))], lifetime: null, annual: null, sixMonth: null, threeMonth: null, twoMonth: null, monthly: Package(identifier: $rc_monthly, packageType: PackageType.monthly, storeProduct: StoreProduct(identifier: monthlystar1, description: Full access to all features in the Music Star, title: Monthly subscription, price: 6.49, priceString: $6.49, currencyCode: USD, introductoryPrice: IntroductoryPrice(price: 0.0, priceString: $0.00, period: P3D, cycles: 1, periodUnit: PeriodUnit.day, periodNumberOfUnits: 3), discounts: [], productCategory: ProductCategory.subscription, defaultOption: null, subscriptionOptions: null, presentedOfferingContext: null, subscriptionPeriod: P1M), presentedOfferingContext: PresentedOfferingContext(offeringIdentifier: default, placementIdentifier: null, targetingContext: null)), weekly: null)}, current: Offering(identifier: default, serverDescription: The default offering to the user., metadata: {}, availablePackages: [Package(identifier: $rc_monthly, packageType: PackageType.monthly, storeProduct: StoreProduct(identifier: monthlystar1, description: Full access to all features in the Music Star, title: Monthly subscription, price: 6.49, priceString: $6.49, currencyCode: USD, introductoryPrice: IntroductoryPrice(price: 0.0, priceString: $0.00, period: P3D, cycles: 1, periodUnit: PeriodUnit.day, periodNumberOfUnits: 3), discounts: [], productCategory: ProductCategory.subscription, defaultOption: null, subscriptionOptions: null, presentedOfferingContext: null, subscriptionPeriod: P1M), presentedOfferingContext: PresentedOfferingContext(offeringIdentifier: default, placementIdentifier: null, targetingContext: null))], lifetime: null, annual: null, sixMonth: null, threeMonth: null, twoMonth: null, monthly: Package(identifier: $rc_monthly, packageType: PackageType.monthly, storeProduct: StoreProduct(identifier: monthlystar1, description: Full access to all features in the Music Star, title: Monthly subscription, price: 6.49, priceString: $6.49, currencyCode: USD, introductoryPrice: IntroductoryPrice(price: 0.0, priceString: $0.00, period: P3D, cycles: 1, periodUnit: PeriodUnit.day, periodNumberOfUnits: 3), discounts: [], productCategory: ProductCategory.subscription, defaultOption: null, subscriptionOptions: null, presentedOfferingContext: null, subscriptionPeriod: P1M), presentedOfferingContext: PresentedOfferingContext(offeringIdentifier: default, placementIdentifier: null, targetingContext: null)), weekly: null))
VERBOSE: Storing etag 'acda4979a4583516' for request to 'https://api.revenuecat.com/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3
' (createdSuccess)
DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3' (304)
Request-ID: 'f76e4da2-b8d1-45e4-8450-444e0fa8590e'; Amzn-Trace-ID: 'Root=1-674741bc-416701923cdb6dd6651fd2fa'
VERBOSE: Updating CustomerInfo '$RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3' request date: 2024-11-27 15:58:52 +0000
DEBUG: 😻 CustomerInfo updated from network.
DEBUG: ℹ️ GetCustomerInfoOperation: Finished
DEBUG: ℹ️ Serial request done: GET /v1/subscribers/$RCAnonymousID%3Ab57d2ffb50b442128c419d105eb4ffc3, 0 requests left in the queue
flutter: Buy package button pressed for package: monthlystar1
DEBUG: ℹ️ Vending Offerings from memory cache
INFO: 💰 Purchasing Product 'monthlystar1' from package in Offering 'default'
DEBUG: ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3
DEBUG: ℹ️ TransactionPoster: handling transaction '0' for product 'monthlystar1' (date: 2024-11-27 15:59:55 +0000) in Offering 'default'
DEBUG: ℹ️ Skipping products request for these products because they were already cached: ["monthlystar1"]
VERBOSE: Enqueing network operation 'PostReceiptDataOperation' with cache key: 'PostReceiptDataOperation $RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3-true-5770219e1e9d9bb59bb3ccd4616110e9ad0bc4b1bd72a4127601c9ae5a9f57e0
-monthlystar1-6.49-USD-USA-2-0-20578275-P1M-P3D-2
-default-false
-["$attConsentStatus": [SubscriberAttribute] key: $attConsentStatus value: notDetermined setTime: 2024-11-27 15:59:57 +0000]'
DEBUG: ℹ️ PostReceiptDataOperation: Started
DEBUG: ℹ️ PostReceiptDataOperation: Posting StoreKit 2 receipt (source: 'purchase'):
{
  "bundle_id" : "dk.themusicstar.themusicstar",
  "environment" : "xcode",
  "original_application_version" : "56",
  "original_purchase_date" : "1970-01-01T00:00:00Z",
  "subscription_status" : {
    "20578275" : [
      {
        "renewal_info" : "eyJ0eXAiOiJKV1QiLCJ4NWMiOlsiTUlJQnl6Q0NBWEdnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCSU1TSXdJQVlEVlFRREV4bFRkRzl5WlV0cGRDQlVaWE4wYVc1bklHbHVJRmhqYjJSbE1TSXdJQVlEVlFRS0V4bFRkRzl5WlV0cGRDQlVaWE4wYVc1bklHbHVJRmhqYjJSbE1CNFhEVEkwTVRFeU56RTFOVGsxTlZvWERUSTFNVEV5TnpFMU5UazFOVm93U0RFaU1DQUdBMVVFQXhNWlUzUnZjbVZMYVhRZ1ZHVnpkR2x1WnlCcGJpQllZMjlrWlRFaU1DQUdBMVVFQ2hNWlUzUnZjbVZMYVhRZ1ZHVnpkR2x1WnlCcGJpQllZMjlrWlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBSaWdiVFkyZUZkVGVWUE5VMDYySDBwOHl1Y1ZBXC9NaE4yOHc3eHlMOGc5Q0lhMkVqZDFaaUh1eGlyanp5WTc4RFp2Q1h6bXp3SmZ1eTNjeENXd3hwK2pUREJLTUJJR0ExVWRFd0VCXC93UUlNQVlCQWY4Q0FRQXdKQVlEVlIwUkJCMHdHNEVaVTNSdmNtVkxhWFFnVkdWemRHbHVaeUJwYmlCWVkyOWtaVEFPQmdOVkhROEJBZjhFQkFNQ0I0QXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTDJ1aFhjRmRJamZhMWtpSVduVml0eGNaYTh0MTVsZ1lWTklESkRLYVZ2UkFpQnhiQUVsVUh0SFFXeTlpSlBpZFd1RFh6azFSWHlVSTFyMHVvOG9pOE9ENmc9PSJdLCJhbGciOiJFUzI1NiIsImtpZCI6IkFwcGxlX1hjb2RlX0tleSJ9.eyJwcm9kdWN0SWQiOiJtb250aGx5c3RhcjEiLCJzaWduZWREYXRlIjoxNzMyNzIzMTk3MzE1LCJyZW5ld2FsRGF0ZSI6MTczMjk4MjM5NTUzMCwiYXV0b1JlbmV3UHJvZHVjdElkIjoibW9udGhseXN0YXIxIiwicmVjZW50U3Vic2NyaXB0aW9uU3RhcnREYXRlIjoxNzMyNzIzMTk1NTMwLCJvcmlnaW5hbFRyYW5zYWN0aW9uSWQiOiIwIiwiYXV0b1JlbmV3U3RhdHVzIjoxLCJkZXZpY2VWZXJpZmljYXRpb25Ob25jZSI6Ijg1NTEyYjQwLWY0MTktNGI0MC05NWY4LWI1NDg2ZWRkZWY0ZSIsImVudmlyb25tZW50IjoiWGNvZGUiLCJkZXZpY2VWZXJpZmljYXRpb24iOiJwZTViSm1GMzA3UXVOY3dpdk1KSzZsSXZBYm15OFdzRHNcL0ZRTGJcL09iVXZrZGlkNzAreGVITVdZSjc4c2Q0b1UifQ.eVhVSucGYvJOitve_aInUsU9Xa2Qiw_qYdHz1Z8MYnMTV84kVO51tfEOt9n1v61a6sn4yrj_RmCbayitI40cxg",
        "state" : 1,
        "transaction" : "eyJ0eXAiOiJKV1QiLCJ4NWMiOlsiTUlJQnl6Q0NBWEdnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCSU1TSXdJQVlEVlFRREV4bFRkRzl5WlV0cGRDQlVaWE4wYVc1bklHbHVJRmhqYjJSbE1TSXdJQVlEVlFRS0V4bFRkRzl5WlV0cGRDQlVaWE4wYVc1bklHbHVJRmhqYjJSbE1CNFhEVEkwTVRFeU56RTFOVGsxTlZvWERUSTFNVEV5TnpFMU5UazFOVm93U0RFaU1DQUdBMVVFQXhNWlUzUnZjbVZMYVhRZ1ZHVnpkR2x1WnlCcGJpQllZMjlrWlRFaU1DQUdBMVVFQ2hNWlUzUnZjbVZMYVhRZ1ZHVnpkR2x1WnlCcGJpQllZMjlrWlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBSaWdiVFkyZUZkVGVWUE5VMDYySDBwOHl1Y1ZBXC9NaE4yOHc3eHlMOGc5Q0lhMkVqZDFaaUh1eGlyanp5WTc4RFp2Q1h6bXp3SmZ1eTNjeENXd3hwK2pUREJLTUJJR0ExVWRFd0VCXC93UUlNQVlCQWY4Q0FRQXdKQVlEVlIwUkJCMHdHNEVaVTNSdmNtVkxhWFFnVkdWemRHbHVaeUJwYmlCWVkyOWtaVEFPQmdOVkhROEJBZjhFQkFNQ0I0QXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTDJ1aFhjRmRJamZhMWtpSVduVml0eGNaYTh0MTVsZ1lWTklESkRLYVZ2UkFpQnhiQUVsVUh0SFFXeTlpSlBpZFd1RFh6azFSWHlVSTFyMHVvOG9pOE9ENmc9PSJdLCJhbGciOiJFUzI1NiIsImtpZCI6IkFwcGxlX1hjb2RlX0tleSJ9.eyJzaWduZWREYXRlIjoxNzMyNzIzMTk3MzE1LCJzdWJzY3JpcHRpb25Hcm91cElkZW50aWZpZXIiOiIyMDU3ODI3NSIsImlzVXBncmFkZWQiOmZhbHNlLCJ0eXBlIjoiQXV0by1SZW5ld2FibGUgU3Vic2NyaXB0aW9uIiwib3JpZ2luYWxQdXJjaGFzZURhdGUiOjE3MzI3MjMxOTU1MzAsIm9yaWdpbmFsVHJhbnNhY3Rpb25JZCI6IjAiLCJvZmZlclR5cGUiOjEsInByaWNlIjowLCJzdG9yZWZyb250SWQiOiIxNDM0NDEiLCJxdWFudGl0eSI6MSwiaW5BcHBPd25lcnNoaXBUeXBlIjoiUFVSQ0hBU0VEIiwiZW52aXJvbm1lbnQiOiJYY29kZSIsInByb2R1Y3RJZCI6Im1vbnRobHlzdGFyMSIsImN1cnJlbmN5IjoiVVNEIiwiYnVuZGxlSWQiOiJkay50aGVtdXNpY3N0YXIudGhlbXVzaWNzdGFyIiwicHVyY2hhc2VEYXRlIjoxNzMyNzIzMTk1NTMwLCJkZXZpY2VWZXJpZmljYXRpb25Ob25jZSI6ImJmYTIzNjZhLWViMzYtNGU5Ni05ZmMzLWNmNDA2M2EzNWQ2ZCIsInRyYW5zYWN0aW9uUmVhc29uIjoiUFVSQ0hBU0UiLCJkZXZpY2VWZXJpZmljYXRpb24iOiJYRHV2QkZkclwvZVp5NHpyRFQ1SXcwWTdmVm1HQSt4MEZGVnZtXC9DYThpazFqM0twRzRUK1VPeTBqXC9mR0h2SVRzIiwic3RvcmVmcm9udCI6IlVTQSIsInRyYW5zYWN0aW9uSWQiOiIwIiwid2ViT3JkZXJMaW5lSXRlbUlkIjoiMCIsImV4cGlyZXNEYXRlIjoxNzMyOTgyMzk1NTMwLCJvZmZlckRpc2NvdW50VHlwZSI6IkZSRUVfVFJJQUwifQ.0y4-msKgONQw2Nq1r6LfLbWQPOEbGzzi_eE6adbs-hJmUGWxNkuu0tZc4j0WbOyJ_WDI9PrO7MgX412NAC9M6w"
      }
    ]
  },
  "transactions" : [
    "eyJ0eXAiOiJKV1QiLCJ4NWMiOlsiTUlJQnl6Q0NBWEdnQXdJQkFnSUJBVEFLQmdncWhrak9QUVFEQWpCSU1TSXdJQVlEVlFRREV4bFRkRzl5WlV0cGRDQlVaWE4wYVc1bklHbHVJRmhqYjJSbE1TSXdJQVlEVlFRS0V4bFRkRzl5WlV0cGRDQlVaWE4wYVc1bklHbHVJRmhqYjJSbE1CNFhEVEkwTVRFeU56RTFOVGsxTlZvWERUSTFNVEV5TnpFMU5UazFOVm93U0RFaU1DQUdBMVVFQXhNWlUzUnZjbVZMYVhRZ1ZHVnpkR2x1WnlCcGJpQllZMjlrWlRFaU1DQUdBMVVFQ2hNWlUzUnZjbVZMYVhRZ1ZHVnpkR2x1WnlCcGJpQllZMjlrWlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBSaWdiVFkyZUZkVGVWUE5VMDYySDBwOHl1Y1ZBXC9NaE4yOHc3eHlMOGc5Q0lhMkVqZDFaaUh1eGlyanp5WTc4RFp2Q1h6bXp3SmZ1eTNjeENXd3hwK2pUREJLTUJJR0ExVWRFd0VCXC93UUlNQVlCQWY4Q0FRQXdKQVlEVlIwUkJCMHdHNEVaVTNSdmNtVkxhWFFnVkdWemRHbHVaeUJwYmlCWVkyOWtaVEFPQmdOVkhROEJBZjhFQkFNQ0I0QXdDZ1lJS29aSXpqMEVBd0lEU0FBd1JRSWhBTDJ1aFhjRmRJamZhMWtpSVduVml0eGNaYTh0MTVsZ1lWTklESkRLYVZ2UkFpQnhiQUVsVUh0SFFXeTlpSlBpZFd1RFh6azFSWHlVSTFyMHVvOG9pOE9ENmc9PSJdLCJhbGciOiJFUzI1NiIsImtpZCI6IkFwcGxlX1hjb2RlX0tleSJ9.eyJzaWduZWREYXRlIjoxNzMyNzIzMTk3MzE1LCJzdWJzY3JpcHRpb25Hcm91cElkZW50aWZpZXIiOiIyMDU3ODI3NSIsImlzVXBncmFkZWQiOmZhbHNlLCJ0eXBlIjoiQXV0by1SZW5ld2FibGUgU3Vic2NyaXB0aW9uIiwib3JpZ2luYWxQdXJjaGFzZURhdGUiOjE3MzI3MjMxOTU1MzAsIm9yaWdpbmFsVHJhbnNhY3Rpb25JZCI6IjAiLCJvZmZlclR5cGUiOjEsInByaWNlIjowLCJzdG9yZWZyb250SWQiOiIxNDM0NDEiLCJxdWFudGl0eSI6MSwiaW5BcHBPd25lcnNoaXBUeXBlIjoiUFVSQ0hBU0VEIiwiZW52aXJvbm1lbnQiOiJYY29kZSIsInByb2R1Y3RJZCI6Im1vbnRobHlzdGFyMSIsImN1cnJlbmN5IjoiVVNEIiwiYnVuZGxlSWQiOiJkay50aGVtdXNpY3N0YXIudGhlbXVzaWNzdGFyIiwicHVyY2hhc2VEYXRlIjoxNzMyNzIzMTk1NTMwLCJkZXZpY2VWZXJpZmljYXRpb25Ob25jZSI6ImJmYTIzNjZhLWViMzYtNGU5Ni05ZmMzLWNmNDA2M2EzNWQ2ZCIsInRyYW5zYWN0aW9uUmVhc29uIjoiUFVSQ0hBU0UiLCJkZXZpY2VWZXJpZmljYXRpb24iOiJYRHV2QkZkclwvZVp5NHpyRFQ1SXcwWTdmVm1HQSt4MEZGVnZtXC9DYThpazFqM0twRzRUK1VPeTBqXC9mR0h2SVRzIiwic3RvcmVmcm9udCI6IlVTQSIsInRyYW5zYWN0aW9uSWQiOiIwIiwid2ViT3JkZXJMaW5lSXRlbUlkIjoiMCIsImV4cGlyZXNEYXRlIjoxNzMyOTgyMzk1NTMwLCJvZmZlckRpc2NvdW50VHlwZSI6IkZSRUVfVFJJQUwifQ.0y4-msKgONQw2Nq1r6LfLbWQPOEbGzzi_eE6adbs-hJmUGWxNkuu0tZc4j0WbOyJ_WDI9PrO7MgX412NAC9M6w"
  ]
}
DEBUG: ℹ️ There are no requests currently running, starting request POST /v1/receipts
VERBOSE: Found no etag for request to 'https://api.revenuecat.com/v1/receipts
'
DEBUG: ℹ️ API request started: POST '/v1/receipts'
VERBOSE: Storing etag '69043b3378decb85' for request to 'https://api.revenuecat.com/v1/receipts
' (success)
DEBUG: ℹ️ API request completed: POST '/v1/receipts' (200)
Request-ID: '6f01bcaf-e86e-472d-87d5-f8686f9d0bf9'; Amzn-Trace-ID: 'Root=1-674741fe-405a6ea463d677912b3976c9'
VERBOSE: Updating CustomerInfo '$RCAnonymousID:b57d2ffb50b442128c419d105eb4ffc3' request date: 2024-11-27 15:59:58 +0000
DEBUG: ℹ️ PostReceiptDataOperation: Finished
INFO: 💰 Finishing transaction '0' for product 'monthlystar1'
DEBUG: ℹ️ Serial request done: POST /v1/receipts, 0 requests left in the queue
DEBUG: ℹ️ Sending updated CustomerInfo to delegate.
INFO: 😻💰 Purchased product - 'monthlystar1'
DEBUG: ℹ️ Detected active subscriptions changed. Clearing trial or intro eligibility cache.
DEBUG: ℹ️ PurchasedProductsFetcher: invalidating cache
  1. Steps to reproduce, with a description of expected vs. actual behavior
  • New user presses "start trial"
  • Apple payment popup shows
  • User chooses payment method and double taps button to acknowledge with Face ID
  • Purchase goes through, and user is told that the purchase was successful
  • Paywall screen persists, and a restart of the app leads the user to the paywall again
  1. Other information (e.g. stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, etc.)
    I have spotted that I'm erroneously calling init twice, both here:
class _SubscriptionPageState extends State<SubscriptionPage> {
  late final Future<void> initFuture = getIt<SubscriptionService>().init();
...

@override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: initFuture,
      builder: (BuildContext context, AsyncSnapshot<void> snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(child: CircularProgressIndicator());
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        }

        var _subscriptionService = getIt<SubscriptionService>();
...

and here

Future<void> setupServiceLocator() async {
...

  // subscriptions
  final subscriptionService = SubscriptionService();
  getIt.registerSingleton<SubscriptionService>(subscriptionService);
  await subscriptionService.init();
...
}

But I'm unsure if this is the issue, and I'm not super thrilled about testing in production to find out, so I haven't published a fix for this yet.

  1. Additional context
    Add any other context about the problem here.
    As I said, I'm pretty inexperienced, so please let me know if there's anything I can do to add further information.
@RCGitBot
Copy link
Contributor

👀 We've just linked this issue to our internal tracker and notified the team. Thank you for reporting, we're checking this out!

@TobiasPalludan TobiasPalludan changed the title No transactions in in response, Payment completed with no transactions No transactions in response, Payment completed with no transactions Dec 4, 2024
@nyeu
Copy link
Contributor

nyeu commented Dec 4, 2024

Hi @TobiasPalludan, would you mind opening a support ticket with this case? We'll be able to help you better that way since it looks like an implementation issue.

@nyeu nyeu closed this as completed Dec 4, 2024
@giacomopoppi
Copy link

I'm having the same issue - @TobiasPalludan did you find a solution?

@TobiasPalludan
Copy link
Author

I'm having the same issue - @TobiasPalludan did you find a solution?

I'm magically not having the issue today, and I'm trying to acquire a new phone to test if that's also the case on there. But nothing I tested worked, so my next step would be contacting their support.

@lennondong
Copy link

I have to say Apple is idiot.

@lucaslupo
Copy link

I am having the same issue on simulator and Apple reviewers also had the same issue when testing my app

@nyeu
Copy link
Contributor

nyeu commented Dec 9, 2024

Do you have this issue consistently or is more like a temporary error?

@TobiasPalludan
Copy link
Author

@nyeu I had the issue consistently for all users when it occurred - but since it's disappeared by itself I haven't heard of any more issues from users

@keleftheriou
Copy link
Contributor

I have to say Apple is idiot.

@lennondong what do you mean, exactly? Did you confirm that it was an issue on Apple’s end?

@keleftheriou
Copy link
Contributor

What I captured from Xcode in production environment

@TobiasPalludan how did you capture those? Do you use verbose logging in production? And did you use some profile in order to retrieve the logs? Or some other way?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants