Skip to content
This repository has been archived by the owner on May 5, 2020. It is now read-only.

Latest commit

 

History

History
executable file
·
186 lines (134 loc) · 9.32 KB

profile_sharing_mobile.md

File metadata and controls

executable file
·
186 lines (134 loc) · 9.32 KB

個人設定共有のためのモバイルの統合

ここでは、PayPalアカウントの個人設定を共有するためにユーザーの同意を得る方法を説明します。

まだ実行していない場合は、プロジェクトにSDKを追加するための基本的な概要と手順のREADMEを参照してください。

概要

PayPalアカウントの情報を共有するため、お客さまの同意を得る必要があります。これは以下のように実行されます。

注:

  1. PayPal iOS SDKで使用できるスコープ値の完全なリストはPayPalOAuthScopes.hを参照してください。
  2. 使用できるスコープ属性の完全なリストは、PayPalユーザー属性によるログインを参照してください。

共有する情報の指定

  1. PayPalデベロッパーサイトにログインします。
  2. アプリを選択します。
  3. APP CAPABILITIESの下で、Log In with PayPalを選択してAdvanced optionsをクリックします。
  4. Information requested from customersの下で、共有する必要がある項目(スコープ属性)を選択します。
  5. Links shown on customer consent pageの下にプライバシーポリシーおよびユーザー規約のURLを入力すると、PayPalConfigurationオブジェクトに入力する対応URLが無効になります。

お客さまの同意を得る

  1. 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の項目を省略できます。

  2. PayPalProfileSharingDelegateの下位のクラス(UIViewControllerのサブクラスなど)を作成します。

    // SomeViewController.h
    #import "PayPalMobile.h"
    
    @interface SomeViewController : UIViewController<PayPalProfileSharingDelegate>
    // ...
    @end
  3. 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;
    }
  4. 環境を確立し、PayPalのサーバーに事前接続します。

    ユーザーが支払いを開始する可能性のあるビューコントローラーを最初に表示する際に行うことをおすすめします。 (接続時間は制限されているため、コントローラーの表示よりもかなり前に事前接続することはしないでください。)

    // SomeViewController.m
    
    - (void)viewWillAppear:(BOOL)animated {
      [super viewWillAppear:animated];
    
      // モック環境で作業を開始してください。準備完了後、PayPalEnvironmentProductionに切り替えます。
      [PayPalMobile preconnectWithEnvironment:PayPalEnvironmentNoNetwork];
    }
  5. 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];
    }
  6. 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];
    }
  7. プロセスを完了するため、サーバーに認可応答を送信します。

    // SomeViewController.m
    
    - (void)sendAuthorizationToServer:(NSDictionary *)authorization {
      // 認可応答全体を送信します
      NSData *consentJSONData = [NSJSONSerialization dataWithJSONObject:authorization
                                                                options:0
                                                                  error:nil];
    
      // (ここにネットワークコードを記述します)
      //
      // 認可応答をサーバーに送信すると
      // 認可コードをOAuthのアクセストークンおよびリフレッシュトークンと交換できます。
      //
      // サーバーは、これらのトークンを使用してPayPalから顧客情報を取り出す必要があります。
    }

次の手順

個人設定共有のためのサーバー側の統合を読んで、認可コードとOAuth2のトークンを交換して、PayPalから顧客情報を取り出します。