2017-03-01 63 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