接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でPayPal Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module PayPalCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module PayPalCmdlets;
Connect-PayPal cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-PayPal -Schema 'REST' -InitiateOAuth 'GETANDREFRESH' -OAuthClientId 'MyOAuthClientId' -OAuthClientSecret 'MyOAuthClientSecret' -UseSandbox 'true'
PayPal への接続
プロバイダーは2つのPayPal API のテーブルを表示します。これらのAPI は、それぞれ異なる認証方法を使用します。- SOAP API にはSignature API 認証情報が必要です。SOAP API を認証するには、AuthScheme をBasic に設定し、Username、Password、およびSignature プロパティを設定する必要があります。SOAP API を有効にすると、これらのAPI 認証情報が生成されます。
- REST API はOAuth 認証標準を使用しています。REST API を認証するには、AuthScheme をOAuth に設定し、OAuthClientId およびOAuthClientSecret プロパティを設定する必要があります。
希望のAPI を指定するには、Schema プロパティをREST またはSOAP のいずれかに設定します。Schema が設定されていない場合、PayPal はSOAP スキーマを使用します。
テスト目的では、UseSandbox をtrue に設定してSandbox 認証情報を使用します。
SOAP API
SOAP API を使用して、現在の口座のすべての取引を取得できます。SOAP API は、3 つのクレデンシャル値を持つSignature API-credentials タイプを使用します。
- API ユーザー名
- API パスワード
- API 署名
API 認証情報を生成するには:
- PayPal ビジネスアカウントにログインして、Profile -> My Selling Tools を選択します。
- Selling Online セクションで、API Access 項目のUpdate をクリックします。
- API 署名を生成するには、API Access ページでRequest API Credentials をクリックします。
- Request API Signature を選択し、Agree and Submit をクリックしてAPI 署名を生成します。
次の接続プロパティを設定して、接続してください。
- User = API ユーザー名。
- Password = API パスワード。
- Signature = 署名。
- UseSandbox = Sandbox の認証情報を利用している場合はtrue。
REST API
次の接続プロパティを設定して、接続してください。
- OAuthClientId = アプリケーション設定のクライアントID。
- OAuthClientSecret = アプリケーション設定のクライアントシークレット。
- UseSandbox = Sandbox の認証情報を利用している場合はtrue。
接続すると、本製品 がOAuth プロセスを完了します。 PayPal は、REST API で使用するOAuth 認証のみをサポートします。この認証を有効にするには、すべてのOAuth フローでAuthScheme をOAuth に設定し、カスタムOAuth アプリケーションを作成する必要があります。
以下のサブセクションでは、3つの標準的な認証フローでのPayPal への認証について詳しく説明します。 カスタムOAuth アプリケーションの作成については、カスタムOAuth アプリケーションの作成 を参照してください。PayPal で利用可能な接続文字列プロパティの全リストは、Connection を参照してください。
デスクトップアプリケーション
カスタムOAuth アプリケーションの資格情報を使用して認証するには、OAuth アクセストークンを取得し、更新する必要があります。これらを設定すると、接続の準備が整います。OAuth アクセストークンの取得およびリフレッシュ:
- InitiateOAuth = GETANDREFRESH。OAuthAccessToken を自動的に取得およびリフレッシュするために使用します。
- OAuthClientId = アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret = アプリケーションの登録時に割り当てられたクライアントシークレット。
- CallbackURL = アプリケーションの登録時に定義されたリダイレクトURI。
接続すると、本製品 はデフォルトブラウザでPayPal のOAuth エンドポイントを開きます。ログインして、アプリケーションにアクセス許可を与えます。
アクセストークンの期限が切れたときは、本製品 は自動でアクセストークンをリフレッシュします。
OAuth アクセストークンの自動リフレッシュ:
本製品 がOAuth アクセストークンを自動的にリフレッシュするようにするには、次のように設定します。
- はじめてデータに接続する前に、次の接続プロパティを設定します。
- InitiateOAuth = REFRESH。
- OAuthClientId = アプリケーション設定のクライアントId。
- OAuthClientSecret = アプリケーション設定のクライアントシークレット。
- OAuthAccessToken = GetOAuthAccessToken によって返されたアクセストークン。
- OAuthSettingsLocation = 本製品 がOAuth 値を保存する場所のパス。これは接続間で維持されます。
- その後のデータ接続では、以下を設定します。
- InitiateOAuth
- OAuthSettingsLocation
OAuth アクセストークンの手動リフレッシュ:
OAuth アクセストークンを手動でリフレッシュするために必要な唯一の値は、OAuth リフレッシュトークンです。
- ExpiresIn 期間(GetOAuthAccessToken が返す)が経過した後にOAuthAccessToken を手動でリフレッシュするには、RefreshOAuthAccessToken ストアドプロシージャを呼び出します。
- 次の接続プロパティを設定します。
- OAuthClientId = アプリケーション設定のクライアントId。
- OAuthClientSecret = アプリケーション設定のクライアントシークレット。
- RefreshOAuthAccessToken を呼び出し、OAuthRefreshToken にGetOAuthAccessToken によって返されたOAuth リフレッシュトークンを設定します。
- 新しいトークンが取得できたら、OAuthAccessToken プロパティにRefreshOAuthAccessToken によって返された値を設定します。Open は、新規接続を開きます。
OAuth リフレッシュトークンを保存し、OAuth アクセストークンの有効期限が切れた後に手動でリフレッシュできるようにします。
ヘッドレスマシン
ヘッドレスマシンに置かれているリソースにログインする必要がある場合は、インターネットブラウザに対応した別の端末で認証する必要があります。 これを行うには、インターネットブラウザに対応したマシンに本製品 をインストールし、通常のブラウザベースのフローで認証した後でOAuth 認証値を転送します。 上述の「デスクトップアプリケーション」の説明に従って、接続プロパティを設定します。
「デスクトップアプリケーション」の手順が完了すると、生成された認証値は、OAuthSettingsLocation で指定されたパスに暗号化されて書き込まれます。デフォルトのファイル名はOAuthSettings.txt です。
接続をテストしてOAuth 設定ファイルを生成し、OAuth 設定ファイルをヘッドレスマシンにコピーします。
ヘッドレスマシンでデータに接続するには、次の接続プロパティを設定します。
- InitiateOAuth = REFRESH。
- OAuthSettingsLocation = ブラウザでマシンからコピーしたOAuth 設定ファイルへのパス。アクセストークンの自動リフレッシュを有効にするために、このファイルが本製品 に読み書きのアクセス許可を与えることを確認してください。
- OAuthClientId = カスタムOAuth アプリケーションの登録時に割り当てられたクライアントId。
- OAuthClientSecret = カスタムOAuth アプリケーションの登録時に割り当てられたクライアントシークレット。
完了後、ヘッドレスマシンからアクセストークンを自動的にリフレッシュするようにドライバーを設定します。
データの取得
Select-PayPal cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-PayPal -Connection $conn -Table "Payments" -Columns @("Id, State") -Where "CreateTime='2016-01-15'"Invoke-PayPal cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-PayPal -Connection $conn -Table Payments -Where "CreateTime > '2016-01-15'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myPaymentsData.csv -NoTypeInformation
Select-PayPal からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-PayPal -Schema 'REST' -InitiateOAuth 'GETANDREFRESH' -OAuthClientId 'MyOAuthClientId' -OAuthClientSecret 'MyOAuthClientSecret' -UseSandbox 'true' PS C:\> $row = Select-PayPal -Connection $conn -Table "Payments" -Columns (Id, State) -Where "CreateTime > '2016-01-15'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Payments", "Columns": [ ], "Id": "MyId", "State": "MyState" }