Have ideas to improve npm?Join in the discussion! »

    amazonpay

    1.2.1 • Public • Published

    Amazon Pay SDK (NODE.JS)

    Amazon Pay API Integration

    Requirements

    • Amazon Pay account:

    • To register for Amazon Pay, go to the Amazon Pay website

    • https://pay.amazon.com, choose your region from the

    • drop-down list in the upper right corner,

    • and then click Merchant Sign Up.

    • Node 8.0 or higher

    Documentation

    Integration steps can be found below:

    Quick Start

    Install

    To use this module directly install it as a dependency:

    npm install amazonpay
    

    Testing in Sandbox Mode

    Instantiating the client: The sandbox parameter is defaulted to false if not specified:

    Your Amazon Pay keys are

    available in your Seller Central account

    const Client = require('amazonPayClient').amazonPayClient;
    
    const configArgs = {
        'merchantId' : 'MERCHANT1234567',
        'accessKey' : 'ABCDEFGHI1JKLMN2O7',
        'secretKey' : 'abc123Def456gHi789jKLmpQ987rstu6vWxyz/ds', 
        'clientId' : 'amzn1.application-oa2-client.45789c45a8f34927830be1d9e029f480',
        'region' : 'us',
        'currencyCode' : 'USD',
        'sandbox' : true,
    
        /**
         * Below is a variable that can be passed that will convert 
         *  the XML response to a JSON string or object instead. 
         *  It is not part of the API values. If you specify this value in 
         *  reqParam, this will overide configArgs value
         * jsonResponse can be 'jsonString' for a JSON string
         *  or it can be 'jsonObject' for a JSON object
         * @optional 'jsonResponse' - [String]
         **/
        'jsonResponse' : 'jsonString'
    };
    
    const client = new Client(configArgs);

    Making an API Call

    Below is an example on how to make the SetOrderAtributes API call:

    const reqParam = {
        'amazonOrderReferenceId': amazonOrderReferenceId,
        'amount': amount,
        'orderItemCategory': orderItemCategories,
        'storeName': storeName,
        'sellerOrderId': sellerOrderId,
        'sellerNote': sellerNote,
        'customInformation': customInformation
    };
    
    const response = newClient.setOrderAttributes(reqParam);

    Below is an example on how to make the ConfirmOrderReference API call:

    const reqParam = { 
        'amazonOrderReferenceId': 'S01-8022464-2595273' 
    };
    
    const response = client.confirmOrderReference(reqParam);

    Below is an example on how to make the GetOrderReferenceDetails API call:

    const reqParam = { 
        /** If you call this before Confirm, to get all the buyer
         *   address information you must pass 'accessToken'
         *   after Confirm, 'accessToken' is not used.
         **/
        'accessToken' : 'Atza|IwEBICpkg...', 
        'amazonOrderReferenceId': 'S01-8022464-2595273' 
    };
    
    const response = newClient.getOrderReferenceDetails(reqParam);

    Below is an example on how to make the Authorize API call:

    /** For idempotency the AuthorizationReferenceId must be unique.
     *   To accomplish this we can generate a 32 character unique identifier
     *   using uuid/v4 https://www.npmjs.com/package/uuid and remove 
     *   the dashes.
     **/
    
    const uuidv4 = require('uuid/v4');
    
    const reqParam = { 
        'amazonOrderReferenceId' : 'S01-8022464-2595273',
        'authorizationReferenceId' : uuidv4().toString().replace(/-/g, ''),
        'amount' : '10',
        'sellerNote' : 'Test note',
        'transactionTimeout' : '0',
        'captureNow' : 'false'
    };
    
    const response = client.authorize(reqParam);

    Below is an example on how to make the GetAuthorizationDetails API call:

    const reqParam = {
        'amazonAuthorizationId': amazonAuthorizationId
    };
    
    const response = newClient.getAuthorizationDetails(reqParam);

    Below is an example on how to make the Capture API call:

    /** For idempotency the CaptureReferenceId must be unique.
     *   To accomplish this we can generate a 32 character unique identifier
     *   using uuid/v4 https://www.npmjs.com/package/uuid and remove 
     *   the dashes.
     **/
    
    const uuidv4 = require('uuid/v4');
    
    const reqParam = {
        'amazonAuthorizationId': amazonAuthorizationId,
        'captureReferenceId': uuidv4().toString().replace(/-/g, ''),
        'amount': amount,
        'sellerNote': 'Test note',
    };
    
    const response = newClient.capture(reqParam);

    Below is an example on how to make the GetCaptureDetails API call:

    const reqParam = {
        'amazonCaptureId': amazonCaptureId
    };
    
    const response = newClient.getCaptureDetails(reqParam);

    Below is an example on how to make the Refund API call:

    /** For idempotency the RefundReferenceId must be unique.
     *   To accomplish this we can generate a 32 character unique identifier
     *   using uuid/v4 https://www.npmjs.com/package/uuid and remove 
     *   the dashes.
     **/
    
    const uuidv4 = require('uuid/v4');
    
    const reqParam = {
        'amazonCaptureId': amazonCaptureId,
        'refundReferenceId': uuidv4().toString().replace(/-/g, ''),
        'amount': amount,
        'sellerNote': 'Test note',
    };
    
    const response = newClient.refund(reqParam);

    Below is an example on how to make the GetRefundDetails API call:

    const reqParam = {
        'amazonRefundId': amazonRefundId
    };
    
    const response = newClient.getRefundDetails(reqParam);

    Below is an example on how to make the CreateOrderReferenceForId API call:

    const reqParam = {
        'id': amazonBillingAgreementId,
        'amount': billingAmount,
        'idType': 'BillingAgreement',
        'storeName': storeName,
        'sellerOrderId': sellerOrderId,
        'sellerNote': sellerNote,
        'customInformation': customInformation
    };
    
    const response = newClient.createOrderReferenceForId(reqParam);

    Below is an example on how to make the GetMerchantAccountStatus API call:

    const response = newClient.getMerchantAccountStatus(reqParam);

    Below is an example on how to make the SetBillingAgreementDetails API call:

    const reqParam = {
        'amazonBillingAgreementId': amazonBillingAgreementId,
        'storeName': storeName,
        'sellerOrderId': sellerOrderId,
        'sellerNote': sellerNote,
        'customInformation': customInformation
    };
    
    const response = newClient.setBillingAgreementDetails(reqParam);

    Below is an example on how to make the GetBillingAgreementDetails API call:

    const reqParam = {
        /** If you call this before ConfirmBillingAgreement, 
         *   to get all the buyer address information you 
         *   must pass 'accessToken'.
         *   After Confirm, 'accessToken' is not used.
         **/
        //'accessToken' : accessToken, 
        'amazonBillingAgreementId': amazonBillingAgreementId,
    };
    
    const response = newClient.getBillingAgreementDetails(reqParam);

    Below is an example on how to make the ValidateBillingAgreement API call:

    reqParam = {
        'amazonBillingAgreementId': amazonBillingAgreementId,
    };
    
    const response = newClient.validateBillingAgreement(reqParam);

    Below is an example on how to make the CloseBillingAgreement API call:

    reqParam = {
        'amazonBillingAgreementId': amazonBillingAgreementId,
    };
    
    const response = newClient.closeBillingAgreement(reqParam);

    Below is an example on how to make the AuthorizeOnBillingAgreement API call:

    /** For idempotency the AuthorizationReferenceId must be unique.
     *   To accomplish this we can generate a 32 character unique identifier
     *   using uuid/v4 https://www.npmjs.com/package/uuid and remove 
     *   the dashes.
     **/
    
    const uuidv4 = require('uuid/v4');
    
    reqParam = {
        'amazonBillingAgreementId': amazonBillingAgreementId,
        'authorizationReferenceId': uuidv4().toString().replace(/-/g, ''),
        'amount': billingAmount,
        'transactionTimeout': transactionTimeout,
        'orderItemCategory': orderItemCategories,
        'captureNow': captureNow,
        'storeName': storeName,
        'sellerOrderId': sellerOrderId,
        'sellerNote': sellerNote,
        'customInformation': customInformation
    };
    
    const response = newClient.authorizeOnBillingAgreement(reqParam);

    Below is an example on how to make the GetUserInfo API call:

    const accessToken = 'Atza|IwEBIAplM...';
    
    const response = newClient.getUserInfo(accessToken);

    Parsing the Response for getUserInfo only

    The response will return a Promise containing a JSON object

    response.then(function (result) {
        console.log('User Info:');
        console.log(result);
        console.log('');
    }).catch(err => {
        console.log(err);
    }); 

    Parsing the Response for API calls except for GetUserInfo

    The response will return a Promise containing a XML string

    // no additional processing
    response.then(function (result) {
        responseData = result;
        console.log(responseData);
        parseString(responseData, function (err, parseResult) {
            parsedXML = parseResult;
            const initialParse = JSON.parse(JSON.stringify(parsedXML));
            if (initialParse.CreateOrderReferenceForIdResponse) {
                jsonOutput = initialParse.CreateOrderReferenceForIdResponse.CreateOrderReferenceForIdResult[0];
                const amazonCaptureIdRegion = (OrderReferenceDetails[0].AmazonOrderReferenceId[0]).toString();
                console.log('CreateOrderReferenceForID response data:');
                console.log(responseData);
                console.log(`AmazonOrderReferenceId: ${amazonamazonOrderReferenceIdRegion}`);
            }
        });
    }).catch(err => {
            console.log(`Capture error data ${regionVal}:`);
            console.log(err.body);
    });

    If you set jsonResponse = 'jsonString' in the config or reqParam

    The response will return a Promise containing a JSON string

    // Retrieve the AmazonOrderReferenceId from CreateOrderReferenceForId API response
    response.then(function (result) {
        responseData = result;
        jsonOutput = JSON.parse(responseData).CreateOrderReferenceForIdResult;
        const amazonOrderReferenceIdRegion = (jsonOutput.OrderReferenceDetails.AmazonOrderReferenceId).toString();
        console.log('CreateOrderReferenceForID response data:');
        console.log(responseData);
        console.log(`AmazonOrderReferenceId: ${amazonamazonOrderReferenceIdRegion}`);
    }).catch(err => {
        console.log(err.body);
    });

    Below is an example of what the XML response for CreateOrderReferenceForId would look like

    Draft 2019-02-12T22:10:56.781Z This Store is Mine custom stuff merchant_id:Test 4321 BillingAgreement C01-5824250-2443745 USD 1.00 Sandbox This is a new note S01-9250083-2493397 2018-08-16T22:10:56.781Z false 744ae261-fc4b-40fb-9a0a-6df92c04c694

    Below is an example of what the jsonString string response for CreateOrderReferenceForId would look like

    {"CreateOrderReferenceForIdResult":{"OrderReferenceDetails":{"OrderReferenceStatus":{"State":"Draft"},"ExpirationTimestamp":"2019-02-12T20:39:30.155Z","ParentDetails":{"Type":"BillingAgreement","Id":"C01-5824250-2443745"},"SellerOrderAttributes":{"StoreName":"This Store is Mine","CustomInformation":"custom stuff","SellerOrderId":"merchant_id:Test 4321"},"OrderTotal":{"CurrencyCode":"USD","Amount":"1.00"},"ReleaseEnvironment":"Sandbox","SellerNote":"This is a new note","AmazonOrderReferenceId":"S01-2810315-9040370","CreationTimestamp":"2018-08-16T20:39:30.155Z","RequestPaymentAuthorization":"false"}},"ResponseMetadata":{"RequestId":"b8337637-c45b-4b83-af75-f455d5eac8ca"}}

    Below is an example of what the jsonObject response for CreateOrderReferenceForId would look like

    { CreateOrderReferenceForIdResult: { OrderReferenceDetails: { OrderReferenceStatus: [Object], ExpirationTimestamp: '2019-02-21T03:43:10.305Z', ParentDetails: [Object], SellerOrderAttributes: [Object], OrderTotal: [Object], ReleaseEnvironment: 'Sandbox', SellerNote: 'This is a new note', AmazonOrderReferenceId: 'S01-8434721-2124216', CreationTimestamp: '2018-08-25T03:43:10.305Z', RequestPaymentAuthorization: 'false' } }, ResponseMetadata: { RequestId: 'd42adc19-c0ce-4aac-92b9-c84ce1653d1b' }, statusCode: 200 }

    Keywords

    none

    Install

    npm i amazonpay

    DownloadsWeekly Downloads

    4

    Version

    1.2.1

    License

    ISC

    Unpacked Size

    89.1 kB

    Total Files

    13

    Last publish

    Collaborators

    • avatar