123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 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 = `
- <xml>
- <appid><![CDATA[<%= appid %>]]></appid>
- <attach><![CDATA[支付测试]]></attach>
- <bank_type><![CDATA[CFT]]></bank_type>
- <fee_type><![CDATA[CNY]]></fee_type>
- <is_subscribe><![CDATA[Y]]></is_subscribe>
- <mch_id><![CDATA[<%= mch_id %>]]></mch_id>
- <nonce_str><![CDATA[<%= nonce_str %>]]></nonce_str>
- <openid><![CDATA[<%= openid %>]]></openid>
- <out_trade_no><![CDATA[<%= out_trade_no %>]]></out_trade_no>
- <result_code><![CDATA[SUCCESS]]></result_code>
- <return_code><![CDATA[SUCCESS]]></return_code>
- <sign><![CDATA[<%= sign %>]]></sign>
- <sub_mch_id><![CDATA[10000100]]></sub_mch_id>
- <time_end><![CDATA[20140903131540]]></time_end>
- <total_fee><%= total_fee %></total_fee><coupon_fee><![CDATA[10]]]></coupon_fee>
- <coupon_count><![CDATA[1]]></coupon_count>
- <coupon_type><![CDATA[CASH]]></coupon_type>
- <coupon_id><![CDATA[10000]]></coupon_id>
- <coupon_fee_0><![CDATA[100]]></coupon_fee_0>
- <trade_type><![CDATA[JSAPI]]></trade_type>
- <transaction_id><![CDATA[<%= transaction_id %>]]></transaction_id>
- </xml>`
- 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)
- }
- }
|