ApplePay蘋果內支付集成和測試賬號申請


 

ApplePay集成和測試賬號申請:

第一步

//1.首先在項目工程中加入“storekit.framework”,加入頭文件#import <StoreKit/StoreKit.h>
//2.在.h文件中加入“SKPaymentTransactionObserver,SKProductsRequestDelegate”監聽機制

#import "HKBaseViewController.h"
#import <StoreKit/StoreKit.h>
@interface HKApplePayViewController : HKBaseViewController<SKPaymentTransactionObserver,SKProductsRequestDelegate>
@property (nonatomic, strong) UITextField *productID;
@end

第二步

#import "HKApplePayViewController.h"
#import "HKPayTools.h"
@interface HKApplePayViewController ()

@end

@implementation HKApplePayViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self setupNav];
    [self setupUI];
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    self.productID.text = @"com.games.ztyxs.product_point.1";
}
- (void)applePay {
    NSString *product = self.productID.text;
    if([SKPaymentQueue canMakePayments]){
        [self requestProductData:product];
    }else{
        NSLog(@"不允許程序內付費");
    }
}

//請求商品
- (void)requestProductData:(NSString *)type{
    NSLog(@"-------------請求對應的產品信息----------------");
    NSArray *product = [[NSArray alloc] initWithObjects:type, nil];
    
    NSSet *nsset = [NSSet setWithArray:product];
    SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];
    request.delegate = self;
    [request start];
}

//收到產品返回信息
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
    
    NSLog(@"--------------收到產品反饋消息---------------------");
    NSArray *product = response.products;
    if([product count] == 0){
        NSLog(@"--------------沒有商品------------------");
        return;
    }
    NSLog(@"productID:%@", response.invalidProductIdentifiers);
    NSLog(@"產品付費數量:%lu",(unsigned long)[product count]);
    
    SKProduct *p = nil;
    for (SKProduct *pro in product) {
        NSLog(@"%@", [pro description]);
        NSLog(@"%@", [pro localizedTitle]);
        NSLog(@"%@", [pro localizedDescription]);
        NSLog(@"%@", [pro price]);
        NSLog(@"%@", [pro productIdentifier]);
        
        if([pro.productIdentifier isEqualToString:self.productID.text]){
            p = pro;
        }
    }
    
    SKPayment *payment = [SKPayment paymentWithProduct:p];
    NSLog(@"發送購買請求");
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

//請求失敗
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error{
    NSLog(@"------------------錯誤-----------------:%@", error);
}

- (void)requestDidFinish:(SKRequest *)request{
    NSLog(@"------------反饋信息結束-----------------");
}

//監聽購買結果
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction{
    for(SKPaymentTransaction *tran in transaction){
        
        switch (tran.transactionState) {
            case SKPaymentTransactionStatePurchased:
                NSLog(@"交易完成");
                
                break;
            case SKPaymentTransactionStatePurchasing:
                NSLog(@"商品添加進列表");
                
                break;
            case SKPaymentTransactionStateRestored:
                NSLog(@"已經購買過商品");
                
                break;
            case SKPaymentTransactionStateFailed:
                NSLog(@"交易失敗");
                
                break;
            default:
                break;
        }
    }
}

//交易結束
- (void)completeTransaction:(SKPaymentTransaction *)transaction{
    NSLog(@"交易結束");
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

- (void)dealloc{
    [[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self applePay];
}
- (void)setupUI {
    self.view.backgroundColor = kWhiteColor;
}
-(void)setupNav {
    self.navTitle = @"ApplePay蘋果內支付";
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

第三步:注意事項

/*

 注意:

 1.沙盒環境測試appStore內購流程的時候,請使用沒越獄的設備。

 2.請務必使用真機來測試,一切以真機為准。

 3.項目的Bundle identifier需要與您申請AppID時填寫的bundleID一致,不然會無法請求到商品信息。

*/

相關截圖:

手機截屏:

//要求輸入AppStore帳密,使用測試生成的即可

確認購買

 

測試賬號申請

 

在ItunesConnect中選擇“用戶和職能”選項~

隨后在左上角的選項中選擇沙盒測試者,點擊左上角的加號圖標增加一位測試者,如圖

 

 

編輯好相應的內容,點擊保存,就創建了一個測試賬號,是不是很簡單啊!當然這個賬號如果你忘記了密碼可以重新生成一個,無關緊要。

順帶多句嘴,千萬不要在正式的appstore上面用沙盒測試的賬號來登錄,不然后果很嚴重,千萬要牢記在心,此賬號只用於測試環境下~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM