HBIAPManager 0.0.1

HBIAPManager 0.0.1

jiutianhuanpei 维护。



  • jiutianhuanpei

HBIAPManager

应用内购买

一、初始化 HBIAPManager

建议在方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中调用初始化方法

[HBIAPManager.sharedInstance addMissingOrderCallback:^(SKPaymentTransaction * _Nonnull transaction, NSDictionary * _Nonnull receiptInfo) {
    NSLog(@"这单漏掉了:\n%@", receiptInfo);
    [transaction finish];
}];

它内部添加了对 SKPaymentQueueSKPaymentTransactionObserver 协议监听,必须先调用此方法,同时这里也处理了漏单的情况。参考 购买商品 ,开发者可以将这次交易的验证信息进行记录或发送给服务器进行验证,操作结束后需要结束本次交易,否则,在下次启动 app 时,这次交易将会走漏单流程。


二、查询苹果后台里的商品列表

[HBIAPManager.sharedInstance.productService fetchProducts:@[@"hejiawang07", @"hejiawang30", @"a00702e725e94d3a9691f456c5ee6027", @"92df4fafd3e04baf8c4165897c035f76"] complete:^(NSError * _Nullable error, SKProductsResponse * _Nullable response) {

}];

传入的不再是系统方法要求的集合,方便语法糖入参。


三、购买商品

[UIApplication.sharedApplication setNetworkActivityIndicatorVisible:true];
[HBIAPManager.sharedInstance buyProduct:pro iapCallback:^(BOOL bIsPurchased) {
    NSLog(@"购买%@", bIsPurchased ? @"成功" : @"失败");
    [UIApplication.sharedApplication setNetworkActivityIndicatorVisible:false];
} complete:^(NSError * _Nullable error, SKPaymentTransaction * _Nullable transaction, NSDictionary * _Nullable receiptInfo) {
    
    if (error || transaction.error) {
        NSLog(@"校验失败:%@", error ?: transaction.error);
    } else {
        NSLog(@"校验成功,对应信息为:\n%@", receiptInfo);
        
        /*
         校验成功之后,可以在此处把收据传给自己的服务器记录,或者再次校验
         成功之后需要结束本次交易
         */
        //结束交易
        [transaction finish];
    }
}];

调用购买商品的接口后,将唤起系统的确认购买弹窗。在用户进行密码(指纹、人脸)验证并确认购买后,如果支付失败,将结束本次交易;如果支付成功,将会有回调输出,方便 UI 进行更新。之后会在苹果端对交易进行验证,验证成功后会将对应的验证信息返回。开发者可以将此验证信息发送到自己的服务器进行存储或验证。交易流程完成后,开发者需要手动结束本次交易,否则,下次启动 app 时,此次交易将会走漏单流程。