我正在使用一个通过节点运行事务的JavaScript文件。 (终端中的节点create-transaction.js返回200 :)现在,我有一个发布请求,该请求将从客户端将名为opaquedata的内容发布到我的route文件中的api,它的工作原理类似于charm!我唯一的问题是,如何用在api发布请求中收到的动态opaqudata替换如下样板的create-transaction.js文件中的静态不透明数据。然后,如何获取它以自动运行文件,或者在命中api时由它自己完成。感谢您的帮助
routes.js
router.post('/', function(req, res) {
res.json({response: "You sent me a POST request",
opaqueData:req.body.createTransactionRequest.transactionRequest.payment.opaqueData,
body: req.body});//Do whatever...
});
create-transaction.js
var ApiContracts = require('authorizenet').APIContracts;
var ApiControllers = require('authorizenet').APIControllers;
var SDKConstants = require('authorizenet').Constants;
var utils = require('./utils.js');
var constants = require('./constants.js');
function createAnAcceptPaymentTransaction(callback) {
var merchantAuthenticationType = new ApiContracts.MerchantAuthenticationType();
merchantAuthenticationType.setName(constants.apiLoginKey);
merchantAuthenticationType.setTransactionKey(constants.transactionKey);
var opaqueData = new ApiContracts.OpaqueDataType();
opaqueData.setDataDescriptor('COMMON.ACCEPT.INAPP.PAYMENT');
//needs to change into dynamic value from my post request in routes.js
opaqueData.setDataValue('eyJjb2RlIjoiNTBfMl8wNjAwMDUzRDdFMDU4NzVBMkYxQjNBM0NBQUU2N0RFNEYxMTgwQzQzRDk2NTZEREQ5MjdEODU2NTExQ0YyQzBBMDY0QUM2MUZEMUM3RTczNDI1QTQyNzA0M0FDNEM2MDk3MEI4RDZGIiwidG9rZW4iOiI5NTk0MTQwMTE2NDE4MzM1NzAzNjAxIiwidiI6IjEuMSJ9');
var createRequest = new ApiContracts.CreateTransactionRequest();
createRequest.setMerchantAuthentication(merchantAuthenticationType);
createRequest.setTransactionRequest(transactionRequestType);
//pretty print request
console.log(JSON.stringify(createRequest.getJSON(), null, 2));
var ctrl = new ApiControllers.CreateTransactionController(createRequest.getJSON());
//Defaults to sandbox
//ctrl.setEnvironment(SDKConstants.endpoint.production);
ctrl.execute(function(){
var apiResponse = ctrl.getResponse();
var response = new ApiContracts.CreateTransactionResponse(apiResponse);
//pretty print response
console.log(JSON.stringify(response, null, 2));
if(response != null){
if(response.getMessages().getResultCode() == ApiContracts.MessageTypeEnum.OK){
if(response.getTransactionResponse().getMessages() != null){
console.log('Successfully created transaction with Transaction ID: ' + response.getTransactionResponse().getTransId());
console.log('Response Code: ' + response.getTransactionResponse().getResponseCode());
console.log('Message Code: ' + response.getTransactionResponse().getMessages().getMessage()[0].getCode());
console.log('Description: ' + response.getTransactionResponse().getMessages().getMessage()[0].getDescription());
}
else {
console.log('Failed Transaction.');
if(response.getTransactionResponse().getErrors() != null){
console.log('Error Code: ' + response.getTransactionResponse().getErrors().getError()[0].getErrorCode());
console.log('Error message: ' + response.getTransactionResponse().getErrors().getError()[0].getErrorText());
}
}
}
else {
console.log('Failed Transaction. ');
if(response.getTransactionResponse() != null && response.getTransactionResponse().getErrors() != null){
console.log('Error Code: ' + response.getTransactionResponse().getErrors().getError()[0].getErrorCode());
console.log('Error message: ' + response.getTransactionResponse().getErrors().getError()[0].getErrorText());
}
else {
console.log('Error Code: ' + response.getMessages().getMessage()[0].getCode());
console.log('Error message: ' + response.getMessages().getMessage()[0].getText());
}
}
}
else {
console.log('Null Response.');
}
callback(response);
});
}
if (require.main === module) {
createAnAcceptPaymentTransaction(function(){
console.log('createAnAcceptPaymentTransaction call complete.');
});
}
module.exports.createAnAcceptPaymentTransaction = createAnAcceptPaymentTransaction;