Reactjs 试图找出如何与PayGate API接口
我可以看到,当我调用支付网关API时,这些参数是必需的,但我不知道如何在Javascript中实现这一点(特别是React)。有能帮忙的翻译吗 以下是PHP中的示例代码: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',
$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(...)
我想这应该管用