PayPal
クレジットカード決済(ノード)の作成
サーチ…
パラメーター
| パラメータ | 詳細 |
|---|---|
| card_data | トランザクションの支払情報を含むJSONオブジェクト |
| クレジットカードの詳細 | ペイパルに送信されてボールトされるクレジットカードデータを含むJSONオブジェクト |
| クライアントID | PayPalアプリケーションクライアントID(OAuth 2の認証情報) |
| ペイパル | PayPalノードSDKリファレンス |
| 秘密の | あなたのPayPalアプリケーションの秘密(OAuth 2の認証情報) |
| uuid | node-uuidパッケージへの参照 |
備考
このサンプルでは、PayPal SDKを使用した簡単なクレジットカード決済のクレジットをユーザーに提示しています。
ノードサンプル
NPMからPayPalノードモジュールをインストールすることから始める
npm install paypal-rest-sdk
アプリケーションファイルで、SDKの設定情報を追加します
var paypal = require('paypal-rest-sdk');
var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': client_id,
'client_secret': secret
});
SDKの要件を追加し、アプリケーションを作成する際に取得されたクライアントIDとシークレットの変数を設定します 。これらの詳細を使用してアプリケーションを構成し、作業中の環境(ライブまたはサンドボックス)を指定します。
次に、支払人の支払い情報を含むJSONオブジェクトを設定します。
var card_data = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card": {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"cvv2": "874",
"first_name": "Joe",
"last_name": "Shopper",
"billing_address": {
"line1": "52 N Main ST",
"city": "Johnstown",
"state": "OH",
"postal_code": "43210",
"country_code": "US" }}}]},
"transactions": [{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"}},
"description": "This is the payment transaction description."
}]};
saleのintentを追加し、 payment_methodをcredit_cardます。次に、 funding_instrumentsあるクレジットカードのカードと住所の詳細と、 transactionsで課金される金額を追加します。複数のトランザクションオブジェクトをここに配置できます。
最後に、 card_data payment.create(...)リクエストを行い、 card_dataオブジェクトを渡して支払いを処理します。
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(payment);
}
});
トランザクションが成功した場合は、次のような応答オブジェクトが表示されます。
{
"id": "PAY-9BS08892W3794812YK4HKFQY",
"create_time": "2016-04-13T19:49:23Z",
"update_time": "2016-04-13T19:50:07Z",
"state": "approved",
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [
{
"credit_card": {
"type": "visa",
"number": "xxxxxxxxxxxx0331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "Joe",
"last_name": "Shopper",
"billing_address": {
"line1": "52 N Main ST",
"city": "Johnstown",
"state": "OH",
"postal_code": "43210",
"country_code": "US"
}
}
}
]
},
"transactions": [
{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"
}
},
"description": "This is the payment transaction description.",
"related_resources": [
{
"sale": {
"id": "0LB81696PP288253D",
"create_time": "2016-04-13T19:49:23Z",
"update_time": "2016-04-13T19:50:07Z",
"amount": {
"total": "7.47",
"currency": "USD"
},
"state": "completed",
"parent_payment": "PAY-9BS08892W3794812YK4HKFQY",
"links": [
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D",
"rel": "self",
"method": "GET"
},
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D\/refund",
"rel": "refund",
"method": "POST"
},
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
"rel": "parent_payment",
"method": "GET"
}
],
"fmf_details": {
},
"processor_response": {
"avs_code": "X",
"cvv_code": "M"
}
}
}
]
}
],
"links": [
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
"rel": "self",
"method": "GET"
}
],
"httpStatusCode": 201
}
この返品オブジェクトでは、 approved済のstateでトランザクションが成功したことがわかります。 linksオブジェクトの下には、実行されたばかりのアクションで実行される潜在的な次のステップを提供する多数のHATEOASリンクがあります。この場合、提供されたselfエンドポイントへのGET要求を行うことで、支払いに関する情報を取り出すことができます。
アーチ型のクレジットカード(ノード)で支払いを行う
この例では、PayPal保管庫を使用してクレジットカードを保管する方法を検討し、保存されたクレジットカードを参照して、ユーザーのクレジットカード取引を処理する方法を検討します。
金庫を使用する理由は、当社のサーバーに機密クレジットカード情報を保存する必要がないためです。提供されたボールトIDを使用して支払い方法を参照するだけで、クレジットカードの保管に関する多くのPCIコンプライアンス規定に対処する必要はありません。
以前のサンプルと同様に、私たちは環境を設定することから始めます。
var paypal = require('paypal-rest-sdk'),
uuid = require('node-uuid');
var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': client_id,
'client_secret': secret
});
以前のサンプルとの1つの違いは、新しいパッケージnode-uuidが必要であることです。このパッケージは、カードを保管するときに支払人に固有のUUIDを生成するために使用されます。あなたはそのパッケージを以下の方法でインストールすることができます:
npm install node-uuid
次に、PayPal保管庫に保管用に送信されるクレジットカードJSONオブジェクトを定義します。これには、カードからの情報と、 node-uuidを使用して生成する一意の支払人IDが含まれていnode-uuid 。この一意のpayer_idは、アーチ型のカードで支払いを作成する際に使用されるため、独自のデータベースに保存する必要があります。
var create_card_details = {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "John",
"last_name": "Doe",
"payer_id": uuid.v4()
};
最後に、クレジットカードを保管し、そのカードを使用して支払いを処理する必要があります。クレジットカードを保管するために、私たちは今作成したcredit_card_detailsオブジェクトを渡してcredit_card.create(...)を呼び出します。すべてがうまくいけば、ボールトされたカードについての詳細を返すオブジェクトを返さなければなりません。そのカードでの支払いのために、私たちはすでに格納しているpayer_idとボールトIDの2つの情報しか必要としません。これは私たち自身のデータベースの参照としても保存する必要があります。
paypal.credit_card.create(create_card_details, function(error, credit_card){
if(error){
console.error(error);
} else {
var card_data = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
}]
},
"transactions": [{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"
}
},
"description": "This is the payment transaction description."
}]
};
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(JSON.stringify(payment));
}
});
}
});
クレジットカードのボールティングが成功した後のセクションでは、以前のクレジットカード処理の例と同様に、カードの詳細を定義して支払いを処理するだけです。 card_dataオブジェクトの構造の主な違いは、 payer下で定義しているfunding_instrumentsセクションです。クレジットカード情報を定義する代わりに、ボールトID参照と支払人IDを含む以下のオブジェクトを使用します。
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
これは、金銭を処理するために金庫カードを使用する方法です。