ここでは、PayPalアカウントの個人設定を共有するためにユーザーの同意を得る方法を説明します。
まだ実行していない場合は、プロジェクトにSDKを追加するための基本的な概要と手順のREADMEを参照してください。
PayPalアカウントの情報を共有するため、お客さまの同意を得る必要があります。これは以下のように実行されます。
- PayPalデベロッパーサイトで
- お客さまに共有を求める情報を指定します。 PayPal iOS SDKは
- ユーザーがPayPalアカウントの使用を承認するためのUIを表示します。
- PayPalを使用して個人設定を共有するためのOAuthアクセストークンスコープに対する同意をユーザーに求めます。
- アプリに、OAuth2の認可コードを返します。
- アプリは
- SDKからOAuth2の認可コードを受け取ります。
- サーバーに認可コードを送ります。サーバーはコードをOAuth2のアクセストークンおよびリフレッシュトークンと交換します。
- サーバーは、OAuth2のトークンを使用してPayPalから該当する顧客情報を要求します。
注:
- PayPal iOS SDKで使用できるスコープ値の完全なリストは
PayPalOAuthScopes.h
を参照してください。 - 使用できるスコープ属性の完全なリストは、PayPalユーザー属性によるログインを参照してください。
- PayPalデベロッパーサイトにログインします。
- アプリを選択します。
APP CAPABILITIES
の下で、Log In with PayPal
を選択してAdvanced options
をクリックします。Information requested from customers
の下で、共有する必要がある項目(スコープ属性)を選択します。Links shown on customer consent page
の下にプライバシーポリシーおよびユーザー規約のURLを入力すると、PayPalConfiguration
オブジェクトに入力する対応URLが無効になります。
-
SDKを初期化し、クライアントIDを入力します。この操作は通常、AppDelegateの
didFinishLaunchingWithOptions:
メソッドで行います。- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // ... [PayPalMobile initializeWithClientIdsForEnvironments:@{PayPalEnvironmentProduction : @"YOUR_CLIENT_ID_FOR_PRODUCTION", PayPalEnvironmentSandbox : @"YOUR_CLIENT_ID_FOR_SANDBOX"}]; // ... return YES; }
注: 本番環境からクライアントIDを取得していない場合は、
PayPalEnvironmentProduction
の項目を省略できます。 -
PayPalProfileSharingDelegate
の下位のクラス(UIViewControllerのサブクラスなど)を作成します。// SomeViewController.h #import "PayPalMobile.h" @interface SomeViewController : UIViewController<PayPalProfileSharingDelegate> // ... @end
-
PayPalConfiguration
オブジェクトを作成します。このオブジェクトにより、SDKのさまざまな側面を設定できます。// SomeViewController.m @interface SomeViewController () // ... @property (nonatomic, strong, readwrite) PayPalConfiguration *payPalConfiguration; // ... @end @implementation SomeViewController - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { _payPalConfiguration = [[PayPalConfiguration alloc] init]; // 値の詳細とデフォルト値はPayPalConfiguration.hを参照してください。 // 最低限3つのマーチャント情報プロパティを設定する必要があります。 // これらは、アプリを登録した際にPayPalに提供した値と同じである必要があります。 _payPalConfiguration.merchantName = @"Ultramagnetic Omega Supreme"; _payPalConfiguration.merchantPrivacyPolicyURL = [NSURL URLWithString:@"https://www.omega.supreme.example/privacy"]; _payPalConfiguration.merchantUserAgreementURL = [NSURL URLWithString:@"https://www.omega.supreme.example/user_agreement"]; } return self; }
-
環境を確立し、PayPalのサーバーに事前接続します。
ユーザーが支払いを開始する可能性のあるビューコントローラーを最初に表示する際に行うことをおすすめします。 (接続時間は制限されているため、コントローラーの表示よりもかなり前に事前接続することはしないでください。)
// SomeViewController.m - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // モック環境で作業を開始してください。準備完了後、PayPalEnvironmentProductionに切り替えます。 [PayPalMobile preconnectWithEnvironment:PayPalEnvironmentNoNetwork]; }
-
PayPalConfiguration
オブジェクトと適切なスコープ値を使用してPayPalProfileSharingViewController
を作成し、表示します。// SomeViewController.m - (IBAction)obtainConsent { // 自分の場合に適用するスコープ値を選択します。使用可能なスコープ値の完全なリストは`PayPalOAuthScopes.h`を参照してください。 NSSet *scopeValues = [NSSet setWithArray:@[kPayPalOAuth2ScopeOpenId, kPayPalOAuth2ScopeEmail, kPayPalOAuth2ScopeAddress, kPayPalOAuth2ScopePhone]]; PayPalProfileSharingViewController *psViewController; psViewController = [[PayPalProfileSharingViewController alloc] initWithScopeValues:scopeValues configuration:self.payPalConfiguration delegate:self]; // PayPalProfileSharingViewControllerを表示します。 [self presentViewController:psViewController animated:YES completion:nil]; }
-
PayPalProfileSharingDelegate
デリゲートメソッドを実装し、成功時の認可応答やユーザーによるキャンセルの通知を受信します。 実装により、モーダルビューコントローラーを破棄する必要があります。// SomeViewController.m #pragma mark - PayPalProfileSharingDelegateメソッド - (void)userDidCancelPayPalProfileSharingViewController:(PayPalProfileSharingViewController *)profileSharingViewController { // ユーザーがログインをキャンセルしました。PayPalProfileSharingViewControllerを破棄します。 [self dismissViewControllerAnimated:YES completion:nil]; } - (void)payPalProfileSharingViewController:(PayPalProfileSharingViewController *)profileSharingViewController userDidLogInWithAuthorization:(NSDictionary *)profileSharingAuthorization { // ユーザーはPayPalにログインし、個人設定の共有に同意しました。 // ここでコードはサーバーに認可応答を送信する必要があります。 [self sendAuthorizationToServer:profileSharingAuthorization]; // 必ずPayPalProfileSharingViewControllerを破棄してください。 [self dismissViewControllerAnimated:YES completion:nil]; }
-
プロセスを完了するため、サーバーに認可応答を送信します。
// SomeViewController.m - (void)sendAuthorizationToServer:(NSDictionary *)authorization { // 認可応答全体を送信します NSData *consentJSONData = [NSJSONSerialization dataWithJSONObject:authorization options:0 error:nil]; // (ここにネットワークコードを記述します) // // 認可応答をサーバーに送信すると // 認可コードをOAuthのアクセストークンおよびリフレッシュトークンと交換できます。 // // サーバーは、これらのトークンを使用してPayPalから顧客情報を取り出す必要があります。 }
個人設定共有のためのサーバー側の統合を読んで、認可コードとOAuth2のトークンを交換して、PayPalから顧客情報を取り出します。