サーチ…


パラメーター

パラメータ詳細
billingAgreementAttributes 請求契約書を作成する設定オブジェクト
請求プランクエリ文字列からの請求プランID
billingPlanAttribs 請求計画を作成する設定オブジェクト
billingPlanUpdateAttributes 課金プランを有効な状態に変更するための設定オブジェクト
クライアントID アプリケーションクライアントID(OAuthキー)
http シンプルなサーバーをセットアップするためのhttpパッケージへの参照
isoDate サブスクリプションの開始日を設定するためのISO日付
リンク PayPalへのリダイレクトURLを抽出するためのHATEOASリンクオブジェクト
パラメータクエリ文字列パラメータ
ペイパル PayPal SDKへの参照
秘密のアプリケーションの秘密(OAuthキー)
トークン PayPalのリダイレクト後に提供された請求契約書承認トークンが、請求契約書を実行します。

備考

これらの例は、PayPalを使用して定期購読/定期支払いシステムを作成するプロセスを示しています。

サブスクリプションを作成するプロセスは次のとおりです。

  1. 請求計画を作成します。これは、サブスクリプションの詳細を概説する再利用可能なモデルです。
  2. 請求プランを有効にします。
  3. ユーザーのサブスクリプションを作成する場合は、サブスクリプションする必要のある請求計画のIDを使用して、請求契約を作成します。
  4. 作成したら、ユーザーをPayPalにリダイレクトして、購読を確認します。確認されると、ユーザはマーチャントのウェブサイトにリダイレクトされる。
  5. 最後に、請求契約を実行してサブスクリプションを開始します。

ステップ2:請求契約書を使用してユーザのサブスクリプションを作成する(ノードサンプル)

ユーザのサブスクリプションを作成するための第2のステップは、既存の有効な請求計画に基づいて請求契約を作成して実行することです。この例では、前の例ですでに請求計画を実行して有効化しており、この例ではその請求計画のIDを参照することを前提としています。

ユーザーの定期購入を作成するための請求契約を設定する場合は、次の3つの手順に従います。これは、PayPal支払いの処理を思い起こさせるものです。

  1. IDを使用して基本請求プランを参照して、請求契約を登録します。
  2. 作成したら、ユーザをPayPalにリダイレクトして(PayPal経由で支払っている場合)、契約を確認します。確認が済むと、PayPalは、基本の請求プランで提供されているリダイレクトを使用して、ユーザーをサイトにリダイレクトします。
  3. その後、PayPalリダイレクトを介して戻ってきたトークンを使用して請求契約を実行します。

この例では、ExpressベースのHTTPサーバーを設定して請求契約プロセスを紹介しています。

この例を開始するには、まず設定を行う必要があります。 PayPal SDK、JSONエンコードされたボディを扱うbody-parser 、シンプルなサーバー統合のためのhttp 、Expressフレームワークのためのexpress 4つの要件を追加します。次に、クライアントIDとシークレットをアプリケーションの作成から定義し、SDKをサンドボックス用に構成し、bodyParserをJSON本体の処理用に構成します。

var paypal = require('paypal-rest-sdk'),
    bodyParser = require('body-parser'),
    http = require('http'),
    app = require('express')();

var clientId = 'YOUR APPLICATION CLIENT ID';
var secret = 'YOUR APPLICATION SECRET';

paypal.configure({
  'mode': 'sandbox', //sandbox or live
  'client_id': clientId,
  'client_secret': secret
});

app.use(bodyParser.json());

請求契約の最初のステップは、請求契約の作成を処理するルートを作成し、ユーザーをPayPalにリダイレクトしてサブスクリプションを確認することです。前の例の計画IDで次のURLをロードするなど、クエリプランのIDがクエリ文字列パラメータとして渡されると仮定しています。

http://localhost:3000/createagreement?plan=P-3N543779E9831025ECYGDNVQ

この情報を使用して請求契約を作成する必要があります。

app.get('/createagreement', function(req, res){
    var billingPlan = req.query.plan;
    
    var isoDate = new Date();
    isoDate.setSeconds(isoDate.getSeconds() + 4);
    isoDate.toISOString().slice(0, 19) + 'Z';

    var billingAgreementAttributes = {
        "name": "Standard Membership",
        "description": "Food of the World Club Standard Membership",
        "start_date": isoDate,
        "plan": {
            "id": billingPlan
        },
        "payer": {
            "payment_method": "paypal"
        },
        "shipping_address": {
            "line1": "W 34th St",
            "city": "New York",
            "state": "NY",
            "postal_code": "10001",
            "country_code": "US"
        }
    };

    // Use activated billing plan to create agreement
    paypal.billingAgreement.create(billingAgreementAttributes, function (error, billingAgreement){
        if (error) {
            console.error(error);
            throw error;
        } else {
            //capture HATEOAS links
            var links = {};
            billingAgreement.links.forEach(function(linkObj){
                links[linkObj.rel] = {
                    'href': linkObj.href,
                    'method': linkObj.method
                };
            })

            //if redirect url present, redirect user
            if (links.hasOwnProperty('approval_url')){
                res.redirect(links['approval_url'].href);
            } else {
                console.error('no redirect URI present');
            }
        }
    });
});

まず、クエリ文字列から請求計画IDを抽出し、計画を開始する日付を作成します。

次のオブジェクト定義であるbillingAgreementAttributesは、サブスクリプションの情報で構成されています。これには、計画に関する情報、請求プランIDへの参照情報、支払い方法、および出荷詳細(購読に必要な場合)が表示されます。

次に、 billingAgreement.create(...)呼び出しが行われ、作成したbillingAgreementAttributesオブジェクトがbillingAgreementAttributesれます。すべて成功した場合は、新しく作成されたサブスクリプションに関する詳細を含む請求契約オブジェクトを私達に送り返す必要があります。このオブジェクトには、この新しく作成された契約で取ることができる次のステップを提供する多数のHATEOASリンクも含まれています。ここで気になるのは、 approval_urlです。

提供されたすべてのリンクをループして、それらを簡単に参照できるオブジェクトに入れます。 approval_urlがこれらのリンクの1つである場合、ユーザーをそのリンク(PayPal)にリダイレクトします。

この時点で、ユーザはPayPalで購読を確認し、基本請求プランに記載されているURLにリダイレクトされます。そのURLに加えて、PayPalはクエリ文字列に沿ってトークンも渡します。そのトークンは、サブスクリプションを実行(または開始)するために使用するものです。

以下のルートでその機能を設定しましょう。

app.get('/processagreement', function(req, res){
    var token = req.query.token;
    
    paypal.billingAgreement.execute(token, {}, function (error, billingAgreement) {
        if (error) {
            console.error(error);
            throw error;
        } else {
            console.log(JSON.stringify(billingAgreement));
            res.send('Billing Agreement Created Successfully');
        }
    });
});

クエリ文字列からトークンを抽出し、 billingAgreement.execute呼び出して、そのトークンを渡します。すべて成功した場合は、そのユーザーに対して有効なサブスクリプションが作成されます。返品オブジェクトには、有効な請求契約に関する情報が含まれています。

最後に、HTTPサーバを設定してルートへのトラフィックを待ち受けます。

//create server
http.createServer(app).listen(3000, function () {
   console.log('Server started: Listening on port 3000');
});

手順1:請求計画を使用したサブスクリプションモデルの作成(ノードサンプル)

ユーザーのサブスクリプションを作成するときは、まず、ユーザーが請求契約書を使用してサブスクライブしている料金プランを作成して有効化する必要があります。サブスクリプションを作成するための全プロセスは、このトピックの解説で詳しく説明しています。

この例では、 PayPalノードSDKを使用します 。次のコマンドを使用して、NPMから取得できます。

npm install paypal-rest-sdk

.jsファイル内では、最初にSDKの要件を追加し、クライアントIDとシークレットを定義してアプリケーション作成した後、SDKをサンドボックス環境用に設定するなど、SDK設定を行います。

var paypal = require('paypal-rest-sdk');

var clientId = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';

paypal.configure({
  'mode': 'sandbox', //sandbox or live
  'client_id': clientId,
  'client_secret': secret
});

次に、2つのJSONオブジェクトを設定する必要があります。 billingPlanAttribsオブジェクトには、ユーザーをサブスクライブすることができる請求プランの情報と支払いの内訳が含まれていますbillingPlanUpdateAttributesオブジェクトには、請求プランをアクティブな状態に設定して使用できるようにする値が含まれています。

var billingPlanAttribs = {
    "name": "Food of the World Club Membership: Standard",
    "description": "Monthly plan for getting the t-shirt of the month.",
    "type": "fixed",
    "payment_definitions": [{
        "name": "Standard Plan",
        "type": "REGULAR",
        "frequency_interval": "1",
        "frequency": "MONTH",
        "cycles": "11",
        "amount": {
            "currency": "USD",
            "value": "19.99"
        }
    }],
    "merchant_preferences": {
        "setup_fee": {
            "currency": "USD",
            "value": "1"
        },
        "cancel_url": "http://localhost:3000/cancel",
        "return_url": "http://localhost:3000/processagreement",
        "max_fail_attempts": "0",
        "auto_bill_amount": "YES",
        "initial_fail_amount_action": "CONTINUE"
    }
};

var billingPlanUpdateAttributes = [{
    "op": "replace",
    "path": "/",
    "value": {
        "state": "ACTIVE"
    }
}];

billingPlanAttribsオブジェクト内には、関連する情報がいくつかあります。

  • 名前/説明/タイプ :プランを記述するための基本的なビジュアル情報、およびプランのタイプ。
  • payment_definitions :プランがどのように機能し、請求されるべきかに関する情報。フィールドの詳細はこちら
  • merchant_preferences :追加費用構造、リダイレクトURL、およびサブスクリプションプランの設定。フィールドの詳細はこちら

これらのオブジェクトを使用して、請求計画を作成して有効化することができます。

paypal.billingPlan.create(billingPlanAttribs, function (error, billingPlan){
    if (error){
        console.log(error);
        throw error;
    } else {
        // Activate the plan by changing status to Active
        paypal.billingPlan.update(billingPlan.id, billingPlanUpdateAttributes, function(error, response){
            if (error) {
                console.log(error);
                throw error;
            } else {
                console.log(billingPlan.id);
            }
        });
    }
});

billingPlan.create(...)を呼び出して、作成したばかりのbillingPlanAttribsオブジェクトをbillingPlanAttribsます。それが成功した場合、返品オブジェクトには請求計画に関する情報が含まれます。この例では、使用計画を有効にするために請求プランIDを使用するだけです。

次に、前に作成した請求プランIDとbillingPlanUpdateAttributesオブジェクトを渡してbillingPlan.update(...)を呼び出します。それが成功した場合、当社の課金プランは現在有効で、すぐに使用できます。

このプランでユーザー(または複数のユーザー)のサブスクリプションを作成するには、上記のbillingPlan.idを参照する必要があります。そのため、簡単に参照できる場所に保管してください。

2番目のサブスクリプション・ステップでは、作成した計画に基づいて請求契約を作成し、それを実行してユーザーのサブスクリプションの処理を開始する必要があります。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow