V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
smileme
V2EX  ›  React

有没有熟悉 react native 的老哥,求帮忙看个问题

  •  
  •   smileme · 10 天前 · 1034 次点击

    背景是使用 react native + storekit2 (桥接) 开发 APP ,接入苹果订阅。遇到一个奇怪的问题是: 使用沙箱账号测试支付的时候,调用product.purchase(productId)会返回购买成功 success ,但Transaction.currentEntitlements 又取不到生效的订单,我以为是有没过期还在续订的订单。

    但用Transaction.all查到所有订单之后发现所有订单都是过期的。完全没头脑,官方文档也翻了几遍,AI 也问了各种,就是不知道为啥。

    求个老哥帮忙解决下,可付费。

    另外之所以用桥接没有直接用 react-native-iap ,是因为上周遇到一个蜜汁问题,死活查不到在 apple store connect 配置的 sku ,后面按照 github 其他人的教程用了桥接调用就 OK 了。

    这是 purchase 的代码:

    func purchaseProduct(_ productId: NSString,
                             resolver resolve: @escaping RCTPromiseResolveBlock,
                             rejecter reject: @escaping RCTPromiseRejectBlock) {
            Task {
                do {
                    let products = try await Product.products(for: [productId as String])
                    guard let product = products.first else {
                        reject("no_product", "未找到对应产品", nil)
                        return
                    }
                    let result = try await product.purchase()
                    print("[StoreKit2Module] 购买结果: \(result)")
                    switch result {
                    case .success(_):
                        print("[StoreKit2Module] 购买成功")
                        resolve("购买成功")
                    case .userCancelled:
                        print("[StoreKit2Module] 用户取消了购买")
                        reject("cancelled", "用户取消了购买", nil)
                    case .pending:
                        print("[StoreKit2Module] 购买处于等待状态")
                        reject("pending", "购买处于等待状态", nil)
                    @unknown default:
                        print("[StoreKit2Module] 未知的购买结果")
                        reject("unknown", "未知的购买结果", nil)
                    }
                } catch {
                    print("[StoreKit2Module] 购买时发生错误: \(error)")
                    reject("purchase_error", "购买时发生错误: \(error)", error)
                }
            }
        }
    
    2 条回复    2025-04-14 22:22:30 +08:00
    magic3584
        1
    magic3584  
       9 天前
    既然用的桥接,那就跟 rn 没关系了,继续研究下 StoreKit2 吧
    smileme
        2
    smileme  
    OP
       9 天前
    @magic3584 好的,感谢老哥,我在再研究一下 StoreKit2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2378 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.