h5-cli
Version:
hello
410 lines (348 loc) • 14.9 kB
JavaScript
"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;
});