分割払い
分割払い
概要
Forterは、分割払い注文を複数の支払い方法を含む注文として定義します。たとえば、顧客がギフトカードで部分的に支払い、クレジットカードで部分的に支払う場合や、クレジットカードで部分的に支払い、別の支払い方法で部分的に支払う場合です。
分割払いのフォーマット
ForterのAPIスキーマでは、paymentは複数の支払いオブジェクトを受け入れることができるARRAYとしてフォーマットされています。
複数の支払いがある場合は、各支払い方法を支払い配列に追加する必要があります。支払い配列内のネストは、split支払い注文の場合、以下のようになります。
"payment": [
{}, // first payment method
{} // second payment method
]各オブジェクトは異なる支払い方法を表します。 両方の支払い方法の請求詳細が一定の場合、支払い方法オブジェクトのoneのみに渡す必要があります。以下は、分割クレジットカード/ギフトカード注文の例です。
SFCCカートリッジでの分割払いのフォーマット
分割払いの具体的なフォーマットは、各商人の既存のアーキテクチャに基づいてForterカートリッジ内でカスタマイズできます。SFRAまたはControllers-basedアーキテクチャを使用している商人の場合、分割払いのロジックはForterOrder.dsファイルに追加する必要があります。ほとんどの商人は、paymentInstrumentを反復処理するロジックをForterOrder()関数内に追加して、個々の取引で使用されるすべての支払い方法を特定し、各方法をpayment配列に追加します。
分割払いのロジックを持つForterOrder.dsファイル(CyberSource)
** このファイルは、既存のチェックアウトフロー、ゲートウェイの承認応答、および受け入れられた支払い方法に応じてカスタマイズする必要があります。
サンプルForterOrder.ds関数
function ForterOrder(args) {
var log = new ForterLogger("ForterOrder.ds"),
order = args.Order,
site = dw.system.Site.getCurrent(),
paymentInstruments = order.getPaymentInstruments(),
payment = null,
authResponse = null,
paymentApplePay = [],
paymentGC = [],
authResponseGC = [],
shipment = null;
for (var paymentInstrument in paymentInstruments) {
if (paymentInstrument.paymentMethod == 'CREDIT_CARD') { //TODO: adjust to the existing payment instruments
payment = paymentInstrument;
if(!empty(paymentInstrument.AuthData)) {
authResponse = new XML(paymentInstrument.AuthData);
}
else if(!empty(paymentInstrument.cyberSourceTransactionBody)){
authResponse = new XML(paymentInstrument.cyberSourceTransactionBody[0]);
}
} else if (paymentInstrument.paymentMethod == 'PayPal' || paymentInstrument.paymentMethod == 'BML') { //TODO: adjust to the existing payment instruments
payment = paymentInstrument;
authResponse = paymentInstrument;
} else if (paymentInstrument.paymentMethod == 'ApplePay' ||
paymentInstrument.paymentMethod == 'AmazonPay') {
payment = paymentInstrument;
if (!empty(paymentInstrument.AuthData)) {
authResponse = new XML (paymentInstrument.AuthData)
}
}
else if (paymentInstrument.paymentMethod == 'GIFT_CERTIFICATE') { // optional if this is an accepted a method in your store
//paymentGC = paymentInstrument;
paymentGC.push(paymentInstrument);
if(!empty(paymentInstrument.custom.cayanTransactionItems)) {
authResponseGC.push(paymentInstrument.custom.cayanTransactionItems[0]);
} else {
authResponseGC.push(paymentInstrument);
}
}
}
}
分割払いの例の支払い配列
{
"orderId":"123-abc-de45"
"payment": [ // payment array
{ // first payment object
"creditCard": {
"nameOnCard": "Or Paul"
"bin": "424242",
"lastFourDigits": "1111"
"countryOfIssuance": "US",
"cardType": "credit",
"expirationMonth": "10",
"expirationYear": "2025",
"verificationResults": {
"authorizationCode": "A",
"avsFullResult": "Y",
"cvvResult": "M",
"processorResponseCode": "1683V2"
"processorResponseText": "Authorized"
}
},
"billingDetails": {
"personalDetails": {
"fullName": "Or Paul",
"email": "[email protected]"
},
"phone": [],
"address": {
"zip": "90043",
"address1": "123 17th St",
"city": "Santa Monica",
"region": "CA",
"country": "US"
}
},
"amount": {
"currency": "EUR",
"amountLocalCurrency": "90.00",
"amountUSD": "100.00"
}
},
{ // second payment object
"giftCard": {
"merchnantPaymentId": "eab12-ba9a-367",
"value": {
"amountUSD": "25.00"
}
},
"amount": {
"amountUSD": "25.00"
}
}
]
}分割注文の表示
支払い方法のオブジェクトが payment 配列内に正しくネストされていない場合、追加の支払い方法がポータルの詳細な取引ビューに正しく表示されない可能性があります。これは、注文がForterの機械学習モデルによって正確に判断されなかったことを意味するものではありません。しかし、最適な透明性と最も正確なデータおよび報告のために、分割注文が正しいフォーマットに従うことを強くお勧めします。
