UNPKG

h5-cli

Version:

hello

410 lines (348 loc) 14.9 kB
"use strict"; /** \u5c01\u88c5\u652f\u4ed8\u63a5\u53e3\u7684\u8c03\u7528 * \u53c2\u8003\u652f\u4ed8\u63a5\u53e3 http://gitlab.yuantutech.com/yuantu/usercenter/wikis/fee_interface \u652f\u4ed8\u65b9\u5f0f\uff0c\u4e1a\u52a1\u7c7b\u578b\uff0c\u4e1a\u52a1\u53c2\u6570 .pay(feeChannel, optType, optParam); .onPayComplate */ define("mods/pay/pay", function (require, exports, module) { var STATUS_CODE = { //\u652f\u4ed8\u5b9d "9000": "\u8ba2\u5355\u652f\u4ed8\u6210\u529f", "8000": "\u8ba2\u5355\u5904\u7406\u4e2d...", "4000": "\u8ba2\u5355\u652f\u4ed8\u5931\u8d25", "6001": "\u5df2\u53d6\u6d88\u652f\u4ed8", //\u7528\u6237\u4e2d\u9014\u53d6\u6d88 "6002": "\u7f51\u7edc\u9519\u8bef\uff0c\u672a\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c", //\u5fae\u4fe1 "0": "\u8ba2\u5355\u652f\u4ed8\u6210\u529f", "-1": "\u652f\u4ed8\u5931\u8d25", "-2": "\u53d6\u6d88\u652f\u4ed8", //\u4f59\u989d "100": "\u5f85\u5904\u7406", "101": "\u652f\u4ed8\u4e2d...", "200": "\u652f\u4ed8\u6210\u529f\uff0c\u7b49\u5f85\u533b\u9662\u5904\u7406", "201": "\u652f\u4ed8\u5931\u8d25", "202": "\u5145\u503c\u64a4\u9500\u6210\u529f", "203": "\u6d88\u8d39\u51b2\u6b63\u6210\u529f", "300": "\u652f\u4ed8\u6210\u529f", "301": "\u652f\u4ed8\u6210\u529f\uff0c\u533b\u9662\u5904\u7406\u5931\u8d25", "400": "\u5931\u6548\u8ba2\u5355", "605": "\u533b\u9662\u624b\u52a8\u9000\u8d39\u6210\u529f", "606": "\u533b\u9662\u624b\u52a8\u9000\u8d39\u5931\u8d25", "500": "\u9000\u8d39\u6210\u529f", "501": "\u9000\u6b3e\u5931\u8d25" }; var domainName = config.domainName; //\u652f\u4ed8\u573a\u666f /** \u516c\u4f17\u53f7\u5185\uff1a JSAPI, \u5728\u8fdc\u56fe\u7684app\u4e2d: APP */ var TRADE_TYPE = { "JSAPI": "JSAPI", // \u516c\u4f17\u53f7\u5185 "APP": "APP", "DEFAULT": "default" }; var PageModule = require("component/PageModule"); var payModule = PageModule.render({ STATUS_CODE: STATUS_CODE, /** feeChannel \u652f\u4ed8\u65b9\u5f0f //1\u3001\u652f\u4ed8\u5b9d 2\u3001\u5fae\u4fe1 3\u3001\u4f59\u989d 5\u3001\u5230\u9662\u652f\u4ed8 6\u652f\u4ed8\u5b9d\u7f51\u9875\u652f\u4ed8 optType \u4e1a\u52a1\u7c7b\u578b //1\u3001\u5145\u503c 2\u3001\u7f34\u8d39 3\u3001\u6302\u53f7 5\u3001\u9884\u7ea6 optParam \u4e1a\u52a1\u53c2\u6570 */ pay: function pay(feeChannel, optType, optParam) { this.feeChannel = feeChannel; this.optType = optType; this.optParam = optParam; //todo // optParam.corpId="549" var param = $.extend({ feeChannel: feeChannel, optType: optType, corpId: this.query.corpId, unionId: this.query.unionId }, optParam || {}); //JSAPI \u5982\u679c\u5728\u5fae\u4fe1\u4e2d \u4f7f\u7528\u5fae\u4fe1\u652f\u4ed8\uff0c\u5219\u4f7f\u7528JSAPI\u7684\u65b9\u5f0f //\u5982\u679c\u5728\u5fae\u4fe1\u4e2d\uff0c\u53c8\u9009\u62e9\u4e86\u5fae\u4fe1\u652f\u4ed8\uff0c\u5c31\u8d70\u516c\u4f17\u53f7\u652f\u4ed8\u6d41\u7a0b if (this.util.isInMicroMessenger() && feeChannel == 5) { param.tradeType = "JSAPI"; // this.preCharge(param); } else { param.tradeType = "APP"; } //\u652f\u4ed8\u5b9d\u7f51\u9875\u652f\u4ed8 \u652f\u4ed8\u5b8c\u6210\u540e\u9700\u8981\u4e00\u4e2a\u524d\u7aef\u8fd4\u56de\u9875\u9762 if (feeChannel == 6 && !param.returnUrl) { // param.returnUrl = window.location.href; //\u53ea\u7528web\u652f\u4ed8\u7684\u7ed3\u679c\u90fd\u8df3\u8f6c\u5230\u8d26\u5355\u8be6\u60c5\u9875\u9762 param.returnUrl = this.util.h5URL("/pay-status.html?" + this.util.flat({ unionId: this.query.unionId, successUrl: encodeURIComponent(window.location.href) })); } this.preCharge(param); }, preCharge: function preCharge(param) { this.util.waitAlert("\u6b63\u5728\u751f\u6210\u8ba2\u5355..."); this.get("/user-web/restapi/account/preCharge", param); }, //\u68c0\u67e5\u5fae\u4fe1\u652f\u4ed8\uff0c\u652f\u4ed8\u5b9d\u652f\u4ed8 \u7684\u8fd4\u56de\u53c2\u6570 checkPayResult: function checkPayResult(data) { if (this.feeChannel == 1) { if (!data.notify_url || !data.partner || !data.total_fee) { this.util.alert("notify_url, partner, total_fee"); return false; } } if (this.feeChannel == 2) { if (!data.appid || !data.mch_id || !data.notify_url || !data.partner || !data.prepayId) { this.util.alert("appid, mch_id, notify_url, partner, prepayId"); return false; } } return true; }, onSuccess: function onSuccess(result) { var tradeData = result.data; var self = this; //\u533b\u4fdd\u652f\u4ed8\u6d41\u7a0b //\u533b\u4fdd\u652f\u4ed8\u9700\u8981\u8df3\u8f6c\u5230\u7b2c\u4e09\u65b9\u533b\u4fdd\u9875\u9762\u8fdb\u884c\u652f\u6301 var feeChannel = tradeData.feeChannel || this.feeChannel; if (feeChannel == 7) { this.payType7Action(result); return; } //\u76f4\u63a5\u8fd4\u56de 200\u6807\u793a\u652f\u4ed8\u6210\u529f\uff0c\u5230\u9662\u652f\u4ed8\u6ca1\u6709id \u8bf7\u6ce8\u610f if (tradeData.status == 200) { self.onPayComplate(true, tradeData.id, result, "\u6210\u529f"); return; } //101 \uff0c100 \u624d\u662f\u65b0\u8ba2\u5355\u7684\u72b6\u6001 if (tradeData.status == 101 || tradeData.status == 100) { //\u68c0\u67e5\u5fc5\u8981\u53c2\u6570 this.checkPayResult(tradeData.data); //\u4f59\u989d\u652f\u4ed8 \u5230\u9662\u652f\u4ed8 \u4e0d\u9700\u8981\u8d70\u4e00\u4e0b\u6d41\u7a0b if (feeChannel == 3 || feeChannel == 4) { //\u8f6e\u8bad\u652f\u4ed8\u7ed3\u679c //\u652f\u4ed8\u6d41\u6c34\u53f7 this.roundGetStatus(tradeData.id); return; } //\u5fae\u4fe1\u5185 \u5fae\u4fe1 \u652f\u4ed8 if (feeChannel == 5 && this.util.isInMicroMessenger()) { this.micorMessengerPay(tradeData); return; } //\u652f\u4ed8\u5b9d\u670d\u52a1\u7a97 if (feeChannel == 6) { this.aliPayWebPay(tradeData); } this.yuanTuPay(tradeData); } else { //\u5df2\u7ecf\u521b\u5efa\u8fc7\u7684\u8ba2\u5355 \u76f4\u63a5\u67e5\u8be2\u8ba2\u5355\u72b6\u6001 this.util.waitAlert("\u6b63\u5728\u83b7\u53d6\u4e0a\u6b21\u652f\u4ed8\u7ed3\u679c"); setTimeout(function () { self.roundGetStatus(tradeData.id); }, 1500); } }, //\u5fae\u4fe1\u73af\u5883\u4e2d\u652f\u4ed8 micorMessengerPay: function micorMessengerPay(tradeData) { //\u8c03\u7528\u5fae\u4fe1\u652f\u4ed8\u903b\u8f91 var self = this; seajs.use("mods/pay/MicorMessengerPay", function (MicorMessengerPay) { MicorMessengerPay.onPayComplate = function (status) { if (status == "ok") { self.roundGetStatus(tradeData.id); } else if (status == "cancel") { self.util.alert("\u53d6\u6d88\u652f\u4ed8"); } else { self.util.alert("\u652f\u4ed8\u5931\u8d25"); } }; MicorMessengerPay.pay(tradeData.data); }); // alert("\u5fae\u4fe1\u5185\u652f\u4ed8"); }, //\u8fdc\u56feapp\u4e2d\u652f\u4ed8 yuanTuPay: function yuanTuPay(tradeData) { var self = this; //\u6d41\u6c34\u53f7id var id = tradeData.id; this.util.waitAlert("\u6b63\u5728\u652f\u4ed8..."); // key \u6539\u53d8 \u9002\u914d app //tradeData.data.out_trade_no = tradeData.data.outTradeNo; //tradeData.data.out_trade_no = tradeData.outTradeNo; //\u8c03\u7528\u652f\u4ed8brige this.util.pay(this.feeChannel, tradeData.data, function (result) { try { var data = result.data ? JSON.parse(result.data) : null; self.util.waitHide(); if (result.ret == "SUCCESS" && data) { // (\u652f\u4ed8\u5b9d) || (\u5fae\u4fe1) if (self.feeChannel == 1 && data.resultStatus == "9000" || self.feeChannel == 2 && data.resultStatus == "0") { self.roundGetStatus(id); } else if (data && data.resultStatus) { self.util.alert(STATUS_CODE[data.resultStatus] || "\u652f\u4ed8\u5931\u8d25\uff0c\u9519\u8bef\u7801:" + data.resultStatus); } else { self.util.alert("\u7531\u4e8e\u7f51\u7edc\u95ee\u9898\u672a\u80fd\u83b7\u53d6\u8ba2\u5355\u72b6\u6001"); } } else { self.util.alert("\u652f\u4ed8\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5"); } } catch (e) { // self.util.alert("\u6ca1\u6709\u6b63\u786e\u83b7\u53d6\u652f\u4ed8\u72b6\u6001\uff0c\u8bf7\u5230\u8d26\u5355\u4e2d\u67e5\u770b!"); self.roundGetStatus(id); } }, function (result) { result = result || {}; self.util.alert(result.msg || "\u8c03\u7528\u652f\u4ed8\u63a5\u53e3\u5931\u8d25"); }); }, //\u8f6e\u8bad\u652f\u4ed8\u7ed3\u679c roundGetStatus: function roundGetStatus(id) { this.util.waitAlert("\u6b63\u5728\u83b7\u53d6\u652f\u4ed8\u7ed3\u679c..."); var io = this.io; var self = this; var timeid = null; var corpId = this.query.corpId; var unionId = this.query.unionId || ''; function round() { io.get("/user-web/restapi/pay/query/status", { id: id, corpId: corpId, unionId: unionId }, function (result) { if (result && result.success) { var status = result.data.status; var isOkay = status == "300"; //\u5931\u8d25\u6216\u8005\u6210\u529f\u5c31\u4e0d\u518d\u5237\u65b0\u4e86 // if( status == "300" || status == "301" || status == "201" || status == "400" ){ if (status != "101") { //\u4e0d\u662f\u652f\u4ed8\u4e2d.. \u5c31\u4e0d\u7528\u8f6e\u8bad\u4e86\u3002 clearTimeout(timeid); self.onPayComplate(isOkay, id, result, STATUS_CODE[status] || "\u5931\u8d25"); } } }, function () {}); timeid = setTimeout(function () { round(); }, 3000); } round(); //60\u79d2\u4ee5\u540e\u4e0d\u8fd4\u56de ==> \u65e0\u6cd5\u53d1\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c setTimeout(function () { self.onPayComplate(false, id, { msg: "\u65e0\u6cd5\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c" }, "\u65e0\u6cd5\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c"); }, 1000 * 60); }, payType7Action: function payType7Action(result) { if (result.success && result.data.data) { var tradeData; var keys; (function () { tradeData = result.data.data; tradeData.RedirectUrl = window.location.href; keys = Object.keys(tradeData); var form = document.createElement("form"); form.method = "post"; form.action = tradeData["postUrl"]; form.id = "J_Pay7"; keys.map(function (key) { var input = document.createElement("input"); input.type = "hidden"; input.name = key; input.value = tradeData[key]; form.appendChild(input); }); $(document.body).append(form); $('#J_Pay7').submit(); //\u628a\u652f\u4ed8\u6570\u636e\u63d0\u4ea4\u5230\u7b2c\u4e09\u65b9 })(); } else { this.util.alert("\u652f\u4ed8\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5"); } }, roundGetStatusByOutId: function roundGetStatusByOutId(out_trade_no) { this.util.waitAlert("\u6b63\u5728\u83b7\u53d6\u652f\u4ed8\u7ed3\u679c..."); var io = this.io; var self = this; var timeid = null; var corpId = this.query.corpId; var unionId = this.query.unionId || ''; function round() { io.get("/user-web/restapi/pay/query/status", { out_trade_no: out_trade_no, corpId: corpId, unionId: unionId }, function (result) { if (result && result.success) { var status = result.data.status; var isOkay = status == "300"; //\u5931\u8d25\u6216\u8005\u6210\u529f\u5c31\u4e0d\u518d\u5237\u65b0\u4e86 // if( status == "300" || status == "301" || status == "201" || status == "400" ){ if (status != "101") { //\u4e0d\u662f\u652f\u4ed8\u4e2d.. \u5c31\u4e0d\u7528\u8f6e\u8bad\u4e86\u3002 clearTimeout(timeid); self.onPayComplate(isOkay, result.data.id, result, STATUS_CODE[status] || "\u5931\u8d25"); } } }, function () {}); timeid = setTimeout(function () { round(); }, 3000); } round(); //60\u79d2\u4ee5\u540e\u4e0d\u8fd4\u56de ==> \u65e0\u6cd5\u53d1\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c setTimeout(function () { self.onPayComplate(false, id, { msg: "\u65e0\u6cd5\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c" }, "\u65e0\u6cd5\u83b7\u5f97\u652f\u4ed8\u7ed3\u679c"); }, 1000 * 60); }, //\u652f\u4ed8\u5b9d\u7f51\u9875\u652f\u4ed8 aliPayWebPay: function aliPayWebPay(tradeData) { /** paramMap.put("service", "alipay.wap.create.direct.pay.by.user"); paramMap.put("partner", zfbPartner); paramMap.put("seller_id", zfbSellerId); paramMap.put("input_charset", AlipayConfig.input_charset); paramMap.put("payment_type", payment_type); paramMap.put("notify_url", AlipayConfig.ALIPAY_NOTIFY_URL); paramMap.put("return_url", AlipayConfig.ALIPAY_RETURN_URL); paramMap.put("out_trade_no", platfomFeeLogDO.getOutTradeNo()); paramMap.put("subject", platfomFeeLogDO.getSubject()); paramMap.put("total_fee", String.valueOf(platfomFeeLogDO.getFee())); paramMap.put("show_url", AlipayConfig.ALIPAY_SHOW_URL); paramMap.put("it_b_pay", "90m"); //\u4ea4\u6613\u8d85\u65f6\u65f6\u95f4\uff0c\u4ece\u70b9\u51fb\u4ed8\u6b3e\u5f00\u59cb\uff0c\u5230\u4e86\u8d85\u65f6\u65f6\u95f4\uff0c\u5982\u679c\u8fd8\u6ca1\u6709\u652f\u4ed8\uff0c\u4ea4\u6613\u8ba2\u5355\u5c06\u5173\u95ed paramMap.put("body", platfomFeeLogDO.getSubject()); String createLinkString = AlipayCore.createLinkString(AlipayCore.paraFilter(paramMap)); String sign = RSA.sign(createLinkString, alipayPrivateRsa, AlipayConfig.CHARSET); log.info("\u751f\u6210\u652f\u4ed8\u5b9d\u7b7e\u540d{}", sign); paramMap.put("sign_type", "RSA"); paramMap.put("sign", sign); **/ var postData = tradeData.data; // postData.gateway_url = "https://openapi.alipay.com/gateway.do"; // postData.return_url=window.location.href; var keys = this.util.keys(postData); //enctype="application/x-www-form-urlencoded" //\u8fd9\u91cc\u7528get\u63d0\u4ea4\uff0c\u5c31\u4e0d\u7528\u6784\u5efaform\u8868\u5355\u4e86 var gateway_url = postData.gateway_url; postData.gateway_url = null; var getPayUrl = gateway_url + "?" + this.util.flat(postData); window.location.href = getPayUrl; // let fromHTML = ` // <form id="alipaysubmit" style="display:none;" name="alipaysubmit" action="${postData["gateway_url"]}" method="POST" > // ${ // keys.map((key)=>{ // if(key == "gateway_url"){ // return "" // } // return `<input type="hidden" name="${key}" value="${postData[key]}"/>` // }).join("") // } // <input type="submit" value="ok" style="display:none;"/> // </form> // ` // $(document.body).append(fromHTML); // $('#alipaysubmit').submit(); }, /** \u652f\u4ed8\u5b8c\u6210\u4ee5\u540e\u51fa\u53d1 onPayComplate isOkay: true, false, id: "11111", \u652f\u4ed8\u6d41\u6c34\u53f7 result:{} \u652f\u4ed8\u7684\u53c2\u6570 */ onPayComplate: function onPayComplate(isOkay, id, result, msg) {} }); module.exports = payModule; });