JavaScript to App
injected javascript
LendMN аппаас дуудагдаж байгаа web-хуудас болгон дээр дараах үйлдлийг inject хийж байгааг анхаарна уу
ачааллах болгонд:
if (
typeof ANDembedded !== 'undefined' &&
!!ANDembedded &&
!!ANDembedded.setEmbedded
) {
ANDembedded.setEmbedded();
}
ямарваа нэг дуудагдсан API хариу өгөх үед
if(typeof ANDembedded !== 'undefined' && !!ANDembedded &&!!ANDembedded.dispatchEvent) {
ANDembedded.dispatchEvent(${JSON.stringify(params)});
}
Үүнээс анзаарвал зөвхөн LendMN APP and-ds.js 2 хоорондоо харилцах үүднээс хийж байгаа үйлдлүүд.
isEmbedded
and-ds.js задалж харвал, setEmbedded үйлдэл нь isEmbedded эсэхийг үнэн болгож байгаа функц. Тэгэхээр redirect хэлбэрээр invoice төлөлт хийхдээ шинээр дуудагдах хуудсын html дотроо шууд дараах байдлаар хийгдэнэ:
ANDembedded.payInvoice(
{
invoiceNumber: '9226b721-fb98-49e2-b9e1-20c8fc833f5f',
amount: 6000,
description: 'Тасалбар',
},
(params) => {
if (params.error) {
alert(params.error_message);
}
},
);
дээрх injected javascript window load эсвэл Dom loaded үед одоогийн байдлаар дуудагдаж амжихгүй байгаа болохоор дээрх код дангаараа ажиллахгүй. Иймээс window load хийснээс хойш хэсэг хугацааны дараа, одоогийн байдлаар 200ms хангалттай гэж үзэн isEmbedded == true эсэхийг шалгаж байгаад embedded API дуудна. isEmbedded ачааллаж амжаагүй тохиолдолд workaround буюу тухайн нэхэмжлэлийг deeplink хэлбэрээр төлүүлж болно.
<html>
<head>
<script
type="application/javascript"
src="https://cdn.lend.mn/3rdparty/embedded/and-ds.js"
></script>
</head>
<body>
<script type="application/javascript">
let invoiceNumber = '9226b721-fb98-49e2-b9e1-20c8fc833f5f';
window.onload = function() {
setTimeout(function() {
if (typeof ANDembedded !== 'undefined' && !!ANDembedded) {
if (ANDembedded.isEmbedded && ANDembedded.payInvoice) {
ANDembedded.payInvoice(
{
invoiceNumber: invoiceNumber,
amount: 6000,
description: 'Тасалбар',
},
(params) => {
if (params.error) {
alert(params.error_message);
}
},
);
} else {
//deep link workaround
let deep_link = 'andpay://lend.mn/i/m/';
window.location = deep_link.concat(invoiceNumber);
}
}
}, 200); //200 ms delay
};
</script>
</body>
</html>