首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SET2Checkout身份验证标头?

如何使用SET2Checkout身份验证标头?
EN

Stack Overflow用户
提问于 2019-09-16 07:11:53
回答 1查看 842关注 0票数 5

我正在尝试使用2 2checkout

Reference#/introduction/authentication/json-encoded-requests

以下是我如何尝试请求的片段

代码语言:javascript
复制
const axios = require('axios')
const moment = require('moment')
const saltedMd5 = require('salted-md5');

let now = moment().format('YYYY-MM-DD HH:MM:SS')
let vendorCode = '250207358831'

let toHash = vendorCode.length + vendorCode + now.length + now

let salt = '~0CSl)!M@4rZ|zX5QR&s'
const hash = saltedMd5(toHash, salt)

axios.get('https://api.2checkout.com/rest/5.0/subscriptions/?Email=customer%40email.com&AvangateCustomerReference=1234567&ExternalCustomerReference=abcdefg&Page=1&Limit=10&PurchasedBefore=2015-12-29&PurchasedAfter=2015-01-15&ExpireBefore=2016-05-22&ExpireAfter=2015-07-23&Type=regular&Aggregate=false', {
  headers: {
    'X-Avangate-Authentication': `code="${vendorCode}" date="${now}" hash="${hash}"`,
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
}).then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})

它返回状态代码500。有人知道如何使用2 subscriptions检索订阅吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-07 02:17:52

代码语言:javascript
复制
class TwoCheckoutService {
    tco: {
        domain:string;
        apiUrl: string,
        apiUser:string,
        apiPass:string,
        sellerId:string,
        privateKey:string,
        secretKey:string,
        demo:boolean,
    };

    constructor(private userService: UserService) {
        this.tco = {=
            apiUrl: 'https://api.2checkout.com/rest/6.0',
            apiUser: "=",                              
            apiPass: "=",                              
            sellerId: "=",                                    
            privateKey: "=",     
            secretKey: "=",                                  
            demo: true,                                             
            // sandbox: false                                         
        };
    }

    private async _getAuthHeaders(): Promise<{[key:string]: string}> {

        var code = this.tco.sellerId;
        var date = moment().utc().format('YYYY-MM-DD hh:mm:ss');
        var stringToHash = code.toString().length + code + date.toString().length + date;
        var hmac = crypto.createHmac('md5', this.tco.secretKey);
        hmac.update(stringToHash, 'utf8');
        
        var hash  = hmac.digest('hex')
        var authHeader = `code="${code}" date="${date}" hash="${hash}"`

        return {
            'X-Avangate-Authentication': authHeader,
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        };
    }

    async getProducts() {
        var url = this.tco.apiUrl + '/products/';
        var headers = await this._getAuthHeaders();
        console.log(headers);
        var res = await Axios.get(url, {
            headers: headers,
            params: {
                'Limit': 10,
                'Page': 1,
            },
            validateStatus: (status)=>true
        });

        if(res.status === 200) return res.data;
        return {
            error:  true,
            data: res.data,
            url: url,
            headers: headers
        }
    }
}

#这是类型记录nodejs ##requirements中的一个示例

  • 加密
  • axios
  • 2签出api凭据
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57951960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档