بروزرسانی مهم در کد رهگیری پرداخت ها

  • توسط
  • ۱۹۶ بازدید
  • دیدگاه غیر فعال شده است
بروزرسانی مهم در کد رهگیری پرداخت ها

با توجه به تغییرات اعمال شده کد رهگیری پرداخت های آنلاین سامانه وندپرداخت لازم است توسعه دهندگانی که از زبان های برنامه نویسی بر مبنای جاوا اسکریپت استفاده میکنند جهت جلوگیری از بروز مشکلات این تغییرات را اعمال نمایند .

کد رهگیری اعلام شده در بروزرسانی جدید سامانه یک عدد 18 رقمی می باشد این عدد در پلتفرم هایی که بر مبنای جاواسکریپت باشند دو رقم اخر کد رهگیری را رند می کنند و این امر باعث می شود در تایید تراکنش توسط پذیرنده به مشکل برخورد کنند .

به طور مثال در پاسخ سرویس /purchase پاسخ زیر را دریافت خواهید کرد

{
    “url”: “https://api.vandacenter.ir/purchase/start/175627803200010667/”,
    “vanda_tracking_code”: 175627803200010670,
    “method”: “GET”

}

همانطور که در پاسخ دریافتی از وب سرویس /purchase مشاهده میکنید کد رهگیری موجود در پارامتر url با کد رهگیری موجود در vanda_tracking_code متفاوت می باشد که مقدار صحیح آن در URL می باشد و علت این رند شدن در پارامتر vanda_tracking_code ضعف زبان های برنامه نویسی بر پایه جاواسکریپت می باشد که از اعداد 18 رقمی پشتیبانی نمی کنند .

راه حل جایگزین برای جلوگیری از رند شدن کد رهگیری استفاده از نمونه کد زیر و با تایپ اسکریپت می باشد .


export function convertTrackingCodesToString(response)
{
let transactionListStr = response?.data;
transactionListStr = transactionListStr.replace( /("vanda_tracking_code":)(\d{18})/g, '$1"$2"' );
const parsedData = JSON.parse(transactionListStr);
return parsedData;
}

در صورت استفاده از کد بالا حتما در هدر درخواست نوع محتوا را متن قرار دهید

‘Accept’: ‘text/plain’
نمونه درخواست کامل به صورت زیر می باشد :


const axios = require('axios');
let data = JSON.stringify({
"pin": "YOUR_PIN_CODE",
"callback": "YOUR CALLBACK URL",
"amount": 100000,
"order_number": "1"
});

let config = {
method: ‘post’,
maxBodyLength: Infinity,
url: ‘https://api.vandacenter.ir/purchase’,
headers: {
‘Accept’: ‘text/plain’,
‘Content-Type’: ‘application/json’
},
data : data
};

axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});