// // FGIAPVerifyTransaction.h // MaltBaby // // Created by FoneG on 2021/5/8. // #import #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, FGIAPVerifyTransactionRusult) { FGIAPManagerVerifyRusultCREATED = 0, FGIAPManagerVerifyRusultFail, FGIAPManagerVerifyRusultSuccess, }; typedef NS_ENUM(NSInteger, FGIAPServiceErrorType) { FGIAPServiceErrorTypeNone, ///Failed to validate receipt FGIAPServiceErrorTypeTransactionIdentifierNotExist, ///No matching receipt data was found FGIAPServiceErrorTypeReceiptNotExist, ///Failed to validate receipt FGIAPServiceErrorTypeVerifyTradeFail, }; typedef void(^FGIAPVerifyTransactionBlock)(NSString *message, FGIAPVerifyTransactionRusult result); typedef void(^FGIAPVerifyTransactionPushCallBack)(NSString *message, NSError * _Nullable result); @protocol FGIAPVerifyTransaction /// 苹果支付流程结束后,需要根据返回的票据等数据去自己的服务器校验 /// @param receipt 票据 /// @param transaction 支付事务 /// @param handler 检验回调 - (void)pushSuccessTradeReultToServer:(NSString *)receipt transaction:(SKPaymentTransaction *)transaction complete:(FGIAPVerifyTransactionPushCallBack)handler; @optional /// 推送失败日志 /// @param logStatistics 日志 - (void)pushServiceErrorLogStatistics:(NSDictionary *)logStatistics error:(FGIAPServiceErrorType)error; /** Promoting In-App Purchases 用户如果在 App下载页面点击购买你推广的内购商品,如果用户已经安装过你的 App 则会直接跳转你的App并调用上述代理方法;如果用户还没有安装你的 App 那么就会去下载你的 App,下载完成之后系统会推送一个通知,如果用户点击该通知就会跳转到你的App并且调用上面的代理方法 上面的代理方法返回 true 则表示跳转到你的 App,IAP 继续完成交易,如果返回 false 则表示推迟或者取消购买,实际开发中因为可能还需要用户登录自己的账号、生成订单等,一般都是返回 false,之后通过 FGIAPService 的. -tryShouldAddStorePayments 在合适的时机触发。 */ - (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product API_AVAILABLE(ios(11.0)); @end NS_ASSUME_NONNULL_END