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>