let parse = function (req) { try { let result = JSON.parse(req.responseText) } catch (e) { let result = req.responseText } return result } let xhr = function (type, url, data) { return new Promise(function(resolve, reject) { var XHR = window.XMLHttpRequest || ActiveXObject var request = new XHR('MSXML2.XMLHTTP.3.0') request.open(type, url, true) request.setRequestHeader('Content-type', 'application/json; charset=utf-8') request.onreadystatechange = function () { if (request.readyState === 4) { if (request.status === 200) resolve(parse(request)) else reject(parse(request)) } } request.send(data) }) } let post = function(url, data, json) { if (json) { return xhr('POST', url, JSON.stringify(data)) }else{ return xhr('POST', url, data) } } let get = function(url) { return xhr('GET', url) } // fake bridges const currentDomain = location.protocol + "//" + location.host; const ALIPAY_NOTIFY_URL = currentDomain + '/alipayNotify'; window.AlipayJSBridge = AlipayJSBridge = {} AlipayJSBridge.call = function(type, payload, callback){ if (type == "tradePay"){ console.info('tradePay payload'); console.group(); console.dir(payload) callback({"resCode": "9000"}) } } window.WeixinJSBridge = WeixinJSBridge = {} const WECHAT_NOTIFY_URL = currentDomain + '/finishedPay'; let WECHAT_NOTIFY_PAYLOAD = ` ]]> ]]> ]]> ]]> ]]> ]]> <%= total_fee %> ]]> ` WeixinJSBridge.invoke = function(type, payload, callback){ if (type == "getBrandWCPayRequest"){ console.info('wechat::getBrandWCPayRequest payload'); console.dir(payload) callback({"err_msg": "get_brand_wcpay_request:ok"}); let payloadTemplate = _.template(WECHAT_NOTIFY_PAYLOAD); let rawMockPayload = /\{.*\}/g.exec(payload.package)[0]; let mockPayload = JSON.parse(rawMockPayload) let notifyPayload = payloadTemplate( { 'mch_id': mockPayload.mch_id, 'sign': payload.sign, 'total_fee': mockPayload.total_fee, 'openid': mockPayload.openid, 'appid': payload.appId, 'transaction_id': mockPayload.transaction_id, 'nonce_str': payload.nonceStr, 'out_trade_no': mockPayload.out_trade_no } ) console.info('sending wechat finish pay receipt') $.post(WECHAT_NOTIFY_URL, notifyPayload) } }