UNPKG

rapid-unipay

Version:

UnionPay module

66 lines (63 loc) 1.98 kB
/** * Copyright (c) 2017 Lucky Byte, Inc. */ const debug = require('debug')('unipay'); const winston = require('winston'); /** * 构造前台通知 HTML 响应 * * 参数 * succeed: 是否是成功响应 * * 返回 * 返回一个 HTML 文件,其中会调用 postMessage() 方法传递消息. * 这个函数主要与 React Native WebView 组件 API 配合工作, * 如果采用其它 WebView API(Android 或 iOS 原生 API),不要使用这个函数. */ const front_html = async (succeed) => { const message = succeed ? 'success' : 'failed'; return ` <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <meta name="author" content="Lucky Byte, Inc."> </head> <body> <script type='text/javascript'> function awaitPostMessage() { var isReactNativePostMessageReady = false; var queue = []; var currentPostMessageFn = function store(message) { queue.push(message); }; if (!isReactNativePostMessageReady) { Object.defineProperty(window, "postMessage", { configurable: true, enumerable: true, get() { return currentPostMessageFn; }, set(fn) { currentPostMessageFn = fn; isReactNativePostMessageReady = true; setTimeout(sendQueue, 0); } }); } function sendQueue() { while (queue.length > 0) { window.postMessage(queue.shift()); } } } awaitPostMessage(); window.postMessage('${message}'); </script> <noscript> 非常抱歉,您的浏览器未开启 JavaScript 支持! </noscript> </body> </html> `; } module.exports = front_html;