Skip to content

Latest commit

 

History

History
172 lines (131 loc) · 8.6 KB

profile_sharing_mobile.md

File metadata and controls

172 lines (131 loc) · 8.6 KB

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

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

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

概要

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

注:

  1. PayPal Android SDKで使用できるスコープ値の完全なリストはPayPalOAuthScopesを参照してください。
  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. AndroidManifest.xmlファイルに許可を追加します。

    <!-- for most things, including card.io & paypal -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
  2. AndroidManifest.xmlファイルの<application>タグでSDKのサービスとアクティビティを宣言します。

    <service android:name="com.paypal.android.sdk.payments.PayPalService"
            android:exported="false" />
        
    <activity android:name="com.paypal.android.sdk.payments.LoginActivity" />
    <activity android:name="com.paypal.android.sdk.payments.PayPalProfileSharingActivity" />
    <activity android:name="com.paypal.android.sdk.payments.ProfileSharingConsentActivity" />
  3. PayPalConfigurationオブジェクトを作成します。このオブジェクトにより、SDKのさまざまな側面を設定できます。

    private static PayPalConfiguration config = new PayPalConfiguration()
    
    		// モック環境で開始します。準備完了後、sandbox (ENVIRONMENT_SANDBOX)
    		// または本番 (ENVIRONMENT_PRODUCTION)環境に切り替えます。
            .environment(PayPalConfiguration.ENVIRONMENT_NO_NETWORK)
    
            .clientId("<YOUR_CLIENT_ID>")
            
            // 最低限3つのマーチャント情報プロパティを設定する必要があります。
    		// これらは、アプリを登録した際にPayPalに提供した値と同じである必要があります。
            .merchantName("Example Store")
            .merchantPrivacyPolicyUri(Uri.parse("https://www.example.com/privacy"))
            .merchantUserAgreementUri(Uri.parse("https://www.example.com/legal"));
  4. アクティビティの作成時にPayPalServiceを開始し、破棄の際に停止します。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        Intent intent = new Intent(this, PayPalService.class);
    
        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
    
        startService(intent);
    }
    
    @Override
    public void onDestroy() {
        stopService(new Intent(this, PayPalService.class));
        super.onDestroy();
    }
  5. PayPalの個人設定の共有アクティビティを、たとえばボタンが押された場合などに起動します。

    public void onProfileSharingPressed(View pressed) {
        Intent intent = new Intent(SampleActivity.this, PayPalProfileSharingActivity.class);
        intent.putExtra(PayPalProfileSharingActivity.EXTRA_REQUESTED_SCOPES, getOauthScopes());
        startActivityForResult(intent, REQUEST_CODE_PROFILE_SHARING);
    }

    一連のスコープ名でPayPalOAuthScopesが初期化されます。

    private PayPalOAuthScopes getOauthScopes() {
        /* 必要なスコープセットの作成
         * 注: このアプリで選択する属性とここで必要なスコープ間のマッピングについては、
         * PayPalデベロッパーサイトのhttps://developer.paypal.com/docs/integration/direct/identity/attributes/を参照してください。
         */
        Set<String> scopes = new HashSet<String>(
                Arrays.asList(PayPalOAuthScopes.PAYPAL_SCOPE_EMAIL, PayPalOAuthScopes.PAYPAL_SCOPE_ADDRESS) );
        return new PayPalOAuthScopes(scopes);
    }
  6. onActivityResult()を実装します。

    @Override
    protected void onActivityResult (int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {
            PayPalAuthorization auth = data
                    .getParcelableExtra(PayPalProfileSharingActivity.EXTRA_RESULT_AUTHORIZATION);
            if (auth != null) {
                try {
                    String authorization_code = auth.getAuthorizationCode();
    
                    sendAuthorizationToServer(auth);
    
                } catch (JSONException e) {
                    Log.e("ProfileSharingExample", "非常にまれなエラーが発生しました: ", e);
                }
            }
        } else if (resultCode == Activity.RESULT_CANCELED) {
            Log.i("ProfileSharingExample", "ユーザーがキャンセルしました。");
        } else if (resultCode == PayPalProfileSharingActivity.RESULT_EXTRAS_INVALID) {
            Log.i("ProfileSharingExample",
                    "PayPalServiceを前に開始するための処理で無効なPayPalConfigurationが含まれていた可能性があります。ドキュメントを参照してください。");
        }
    }
  7. プロセスを完了するため、サーバーに認可応答を送信します。

    private void sendAuthorizationToServer(PayPalAuthorization authorization) {
        
        // TODO:
        // 認可応答をサーバーに送信します。サーバーは認可コードを
        // OAuthのアクセストークンおよびリフレッシュトークンと交換できます。
        //
        // サーバーはこれらのトークンを保管するので、サーバーコードは、これを使用して、
        // 今後ユーザーの個人設定データを取得できます。
        
    }

次の手順

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