Reactjs 试图找出如何与PayGate API接口

Reactjs 试图找出如何与PayGate API接口,reactjs,api,axios,Reactjs,Api,Axios,我可以看到,当我调用支付网关API时,这些参数是必需的,但我不知道如何在Javascript中实现这一点(特别是React)。有能帮忙的翻译吗 以下是PHP中的示例代码: $encryptionKey = 'secret'; $DateTime = new DateTime(); $data = array( 'PAYGATE_ID' => 10011072130, 'REFERENCE' => 'pgtest_123456789',

我可以看到,当我调用支付网关API时,这些参数是必需的,但我不知道如何在Javascript中实现这一点(特别是React)。有能帮忙的翻译吗

以下是PHP中的示例代码:

$encryptionKey = 'secret';

$DateTime = new DateTime();

$data = array(
    'PAYGATE_ID'        => 10011072130,
    'REFERENCE'         => 'pgtest_123456789',
    'AMOUNT'            => 3299,
    'CURRENCY'          => 'ZAR',
    'RETURN_URL'        => 'https://my.return.url/page',
    'TRANSACTION_DATE'  => $DateTime->format('Y-m-d H:i:s'),
    'LOCALE'            => 'en-za',
    'COUNTRY'           => 'ZAF',
    'EMAIL'             => 'customer@paygate.co.za',
);

$checksum = md5(implode('', $data) . $encryptionKey);

$data['CHECKSUM'] = $checksum;

$fieldsString = http_build_query($data);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, 'https://secure.paygate.co.za/payweb3/initiate.trans');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['HTTP_HOST']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fieldsString);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);
我一直在尝试使用axios发出请求,但任何方法都可以。我试图创建一个axios实例,如下所示:


export default axios.create({
    baseURL: 'https://secure.paygate.co.za/payweb3/initiate.trans',
    headers:{
      //I guess this is where PAYGATE_ID etc would go, but I'm not sure how to format it
    }
})```

对于React,处理此问题的方法是生成MD5校验和,并在发送之前将其附加到有效负载,可能使用CryptoJS或其他方法。我创建此函数是为了生成MD5:

const generateMD5 = (obj, secret = 'paygateSecret') => {
    let str = ''
    for (let val in obj){
        str += obj[val]
    }
    
    str += secret

    return CryptoJS.MD5(str).toString()
}
我有一个包含我的数据的对象:

var data = {
      PAYGATE_ID: 10011072130,
      REFERENCE: ref,
      AMOUNT: amount,
      CURRENCY: 'ZAR',
      RETURN_URL: window.location.href,
      TRANSACTION_DATE: new Date().toISOString(),
      LOCALE: 'en-za',
      COUNTRY: 'ZAF',
      EMAIL: email,
}
请注意订单。这是非常重要的。 然后,我使用以下方法生成校验和:

const CHECKSUM = generateMD5(data)
然后进行axios调用:

axios.post('https://secure.paygate.co.za/payweb3/initiate.trans', { ...data, CHECKSUM }).then(...).catch(...)

我想这应该管用

对于React,处理此问题的方法是生成MD5校验和,并在发送之前将其附加到有效负载,可能使用CryptoJS或其他方法。我创建此函数是为了生成MD5:

const generateMD5 = (obj, secret = 'paygateSecret') => {
    let str = ''
    for (let val in obj){
        str += obj[val]
    }
    
    str += secret

    return CryptoJS.MD5(str).toString()
}
我有一个包含我的数据的对象:

var data = {
      PAYGATE_ID: 10011072130,
      REFERENCE: ref,
      AMOUNT: amount,
      CURRENCY: 'ZAR',
      RETURN_URL: window.location.href,
      TRANSACTION_DATE: new Date().toISOString(),
      LOCALE: 'en-za',
      COUNTRY: 'ZAF',
      EMAIL: email,
}
请注意订单。这是非常重要的。 然后,我使用以下方法生成校验和:

const CHECKSUM = generateMD5(data)
然后进行axios调用:

axios.post('https://secure.paygate.co.za/payweb3/initiate.trans', { ...data, CHECKSUM }).then(...).catch(...)
我想这应该管用