使用拱形信用卡付款(節點)
在這個例子中,我們將研究如何使用 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
});
與之前的樣本的一個不同之處在於,我們需要一個新的包 node-uuid
,用於在儲存卡時為付款人生成唯一的 UUID。你可以通過以下方式安裝該包:
npm install node-uuid
接下來,我們定義將傳送到 PayPal 保管庫進行儲存的信用卡 JSON 物件。它包含來自卡的資訊,以及我們使用 node-uuid
生成的唯一付款人 ID。你應該將這個獨特的 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.create(...)
,傳遞我們剛剛建立的 credit_card_details
物件。如果一切順利,我們應該有一個物件返回給我們,其中包含有關拱形卡的詳細資訊。為了使用該卡付款,我們只需要兩條資訊:我們已經儲存的 payer_id 和保險庫 ID,它們也應該作為參考儲存在我們自己的資料庫中。
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
物件結構的主要區別是 funding_instruments
部分,我們在 payer
下定義。我們使用包含保險庫 ID 參考和付款人 ID 的以下物件,而不是定義信用卡資訊:
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
這就是我們使用拱形卡處理付款的方式。