我想通过使用javascript文件的发布请求从客户端自动使用动态值访问api。我该如何实现?

发布时间:2020-07-07 17:40

我正在使用一个通过节点运行事务的JavaScript文件。 (终端中的节点create-transaction.js返回200 :)现在,我有一个发布请求,该请求将从客户端将名为opaquedata的内容发布到我的route文件中的api,它的工作原理类似于charm!我唯一的问题是,如何用在a​​pi发布请求中收到的动态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;

回答1