2017-03-01 65 views
0

我與集成使用Authorize.net和Accept.js我想有一個發票#招聘#記錄的信用卡交易簡單的購買形式。該表單提交處理程序類似:Authorize.net Accept.js集成

function getSecureData() { 

    /* Compile Data from Form */ 
    var secureData = {}, 
    authData = {}, 
    cardData = {}; 

    cardData.cardNumber = document.getElementById('CARDNUMBER_ID').value; 
    cardData.month = document.getElementById('EXPIRY_MONTH_ID').value; 
    cardData.year = document.getElementById('EXPIRY_YEAR_ID').value; 
    cardData.zip = document.getElementById('ZIP_CODE').value; 
    cardData.cardCode = document.getElementById('CARD_CODE').value; 

    authData.clientKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 
    authData.apiLoginID = 'XXXXXXXXX'; 

    /* My attempt to attach a job number to the secureData being submitted */ 
    secureData.userFields = { 
    job_number: document.getElementById('JOB_NUMBER').value 
    }; 

    secureData.cardData = cardData; 
    secureData.authData = authData; 

    /* Dispatch Data to Accept.js */ 
    Accept.dispatchData(secureData, 'responseHandler'); 

} 

我試圖從數據結構中documentation推斷從createTransactionRequest。但是,這些信息似乎並不符合商戶的收據。

有沒有人有任何建議或經驗這樣做?

回答

0

你將需要做這個服務器端。您的responseHandler應該將dataDescriptor和dataValue發送到您的服務器端實現。我建議將發票#與他們一起發送,或者將其與服務器進行收集,然後使用平臺特定的API來設置invoiceNumber。對於PHP,它看起來像這樣:

$order = new AnetAPI\OrderType(); 
$order->setInvoiceNumber($invoice_number); 

您提供的文檔的鏈接是針對正常的API,並不真正適用於accept.js。關於accept.js的最佳信息來源似乎是sample implementation on github。這也是Apple Pay的一個實現,可能會讓人困惑。

+0

@ rob-gordon我想知道,您的responseHandler是否提供了userFields? –

+0

我終於嘗試過了,userFields什麼也不做。 –

+1

當你從服務器提交nonce到Authorize.Net來處理事務時,應該包含userFields。 Accept.js用於避免敏感的卡片數據通過您的服務器。 – rhldr