Files
peko-h5/view/peko/modules/payment/js/index.js
2022-10-22 15:17:05 +08:00

554 lines
17 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let num = $('#num'),
wpContent = $('.wxPayContent'),
shade = $('.shade'),
$content = $('.pop .content'),
cancel = $('#cancel'),
confirm = $('#confirm'),
api = locateJudge(),
$pop = $('.pop'),
lock = false;
let locateObj = getQueryString();
let browser = checkVersion();
const productUrl = 'https://api.pekolive.com'; // 正式环境
const testUrl = 'https://beta.api.pekolive.com'; // 测试环境
//获取域名前缀
function getUrlPrefix() {
if (!EnvCheck()) return undefined;
return EnvCheck() === 'live' ? productUrl : testUrl;
}
const urlPrefix = getUrlPrefix()
// 鉆石比例
var amountPercentage;
// 自定义充值id
var custom_charge_prod;
const toastMsg = (content = '操作完成', time = 2) => {
layer.open({
content,
skin: 'msg',
time
});
}
const showLoading = () => {
layer.open({ type: 2, shadeClose: false });
}
const hideLoading = () => {
layer.closeAll();
}
if (EnvCheck() == 'test') {
let vConsole = new VConsole();
}
//弹窗的函数
function mess(str) {
$('.pop1 .message_').html(str);
$('.pop1').fadeIn(100)
}
//payType = "wx_wap" =>微信支付参数 : payType = "alipay_wap" =>支付宝支付参数
//defaultPayH5 => 决定H5支付页面的payType由后台配置
let payType = "wx_wap" //默认微信选中
let cerruntIndex = 0 //选中的支付方式的索引
let defaultPayH5 //不再由其配置,貌似已经没用了
let chargeList = [] //微信充值列表
let aLiChargeList = [] //支付宝充值列表(高额)
const getChargeList = () => {
showLoading();
$.ajax({
type: 'GET',
url: urlPrefix + '/chargeprod/listV2?channelType=1&position=web',
success: function (res) {
hideLoading()
if (res.code == 200) {
// defaultPayH5 = res.data.defaultPayH5
custom_charge_prod = res.data.customChargeProd[0].chargeProdId;
chargeList = res.data.list
const { bigList } = res.data
aLiChargeList = chargeList.concat(bigList)
//defaultPayH51是支付宝2是微信,微信支付要过滤掉money大于9998的,支付宝不用过滤
// rebuilidList = rebuildData();
renderList(chargeList);
}
if (browser.weixin) {
if (locateObj.code) {
if (browser.ios) {
window.location.href = window.location.href.split('?')[0]
} else {
getOpenId()
}
}
if (browser.ios) {
$('.tips-tit').fadeIn(30);
}
return
} else {
$('.pay-type').css('display', 'block')
}
},
error() {
hideLoading();
toastMsg('網絡錯誤');
}
});
}
function custom() {
$('.max .currency .wxPayContent').append(`
<li class="customBox" custom='custom'>自定义充值</li>
`)
// money
}
function toDecimal2(x) {
var f = parseFloat(x);
if (isNaN(f)) {
return false;
}
var f = Math.round(x * 100) / 100;
var s = f.toString();
var rs = s.indexOf('.');
if (rs < 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + 2) {
s += '0';
}
return s;
}
// 监听自定义充值input
$('.pop2 .content .box input').bind('input propertychange', function () {
var val = $(this).val();
// $('.pop2 .content .box span b').text(val * amountPercentage);
$('.pop2 .content .box span b').text(val * 10);
if (val > 5000) {
$(this).val('');
$('.pop2 .content .box span b').text('0')
toastMsg('金额数值不能大于5000')
} else if (val == '') {
$('.pop2 .content .box span b').text('0')
} else if (!((/^(\+|-)?\d+$/.test(val)) && val > 0)) {
$(this).val('');
$('.pop2 .content .box span b').text('0')
toastMsg('只能输入正整数')
}
// console.log('自定义充值',val);
});
// 取消自定义充值
$('.pop2 .content .butc .pop2_close').click(function () {
lock = false;
$('.pop2').hide()
})
// 确定自定义充值
$('.pop2 .content .butc .pop2_check').click(function () {
var val = $('.pop2 .content .box input').val();
charge = custom_charge_prod;
let reg = /^[0-9]*$/, //输入框的正则匹配
_num = num.val(); //获取输入框的值
if (val < 100) {
$('.pop2 .content .box div input').val('');
$('.pop2 .content .box span b').text('0')
toastMsg('充值金额不能小于100')
}
// else if (!(val % amountPercentage == 0)) {
// $('.pop2 .content .box div input').val('');
// $('.pop2 .content .box span b').text('0')
// toastMsg('只能输入正整数')
// }
else {
$('.pop2 .content .box input').val('');
$('.pop2 .content .box span b').text('0');
$('.pop2').hide()
// lock = !lock;
if (browser.weixin) {
price = val;
} else {
if (payType === "wx_wap") {
price = val; //获取价格
} else if (payType === 'alipay_wap') {
price = val; //获取价格
}
}
let params = {
chargeProdId: charge,
payChannel: payType,
chargeMoney: val,
successUrl: urlPrefix + '/accompany/modules/payment/index.html'
};
if (_num === '') {
$('.pop1 .content').removeClass('shiming')
// mess('请输入正确的手机号或者平台号');
toastMsg('账号不能为空')
lock = !lock;
return;
} else if (!reg.test(_num)) {
$('.pop1 .content').removeClass('shiming')
// mess('请输入正确的手机号或者平台号');
lock = !lock;
return toastMsg('请确定账号是否正确');
}else {
let _reg = /^[1][3,4,5,7,8][0-9]{9}$/;
_reg.test(_num) ? params['phone'] = _num : params['erbanNo'] = _num
}
if (browser.weixin) {
if (browser.ios) {
toastMsg('ios不支持公众号支付');
return;
}
let openid = window.sessionStorage.getItem('user_openid');
console.log(window.sessionStorage);
if (!openid) {
toastMsg('页面未授权,请在公众号菜单进入本页面');
return;
}
params['openId'] = openid;
if (params['phone']) {
params['phone'] = _num;
} else {
params['erban_no'] = _num;
}
delete params['erbanNo'];
delete params.payChannel;
if (locateObj.outerTradeId) {
params['outerTradeId'] = locateObj.outerTradeId
}
submitWxPayment(params);
} else {
if (locateObj.outerTradeId) {
params['outerTradeId'] = locateObj.outerTradeId
}
getPaymentInfo(params)
}
}
})
//渲染充值列表
const renderList = (data) => {
let str = '';
for (let i = 0; i < data.length; i++) {
let chargeProdId = data[i].chargeProdId;
let prodName = data[i].prodName;
let money = data[i].money;
let prodDesc = data[i].prodDesc ? data[i].prodDesc : '';
let $li = $('<li class="charge"></li>');
str += `<li class="charge" data-index="${i}" _charge="${chargeProdId}">
<p class="content"><span class="goldimg"><img src="./images/gold.png"
alt=""></span><span class="sproutCurrency">
${prodName.replace(/^[0-9]*/, function ($) { return `<span class="price-list">${$}</span>` })}
</span><span class="RNB">¥${money}</span></p><p class="tip">${prodDesc}</p>`
// wpContent.append('<li class="charge" data-index="' + i + '" _charge="' + chargeProdId + '">' + '<p class="content"><span class="goldimg"><img src="./images/gold.png" alt=""></span><span class="sproutCurrency">' + prodName + '</span><span class="RNB">¥' + money + '</span></p>' + '<p class="tip">' + prodDesc + '</p>');
// wpContent.append(str)
}
wpContent.html(str)
custom();
}
//获取openid
const getOpenId = () => {
$.ajax({
type: 'GET',
url: urlPrefix + '/getCodeCallbackMsg',
data: {
code: locateObj.code
},
success(res) {
if (res.code === 200) {
let data = res.data;
window.sessionStorage.setItem('user_openid', data.openid);
window.location.href = window.location.href.split('?')[0];
} else {
toastMsg(res.message)
}
},
error() {
toastMsg('網絡錯誤');
}
})
}
//外部浏览器获取订单信息
const getPaymentInfo = (params) => {
$.ajax({
type: 'POST',
url: urlPrefix + '/charge/apply2New?app=peko',
data: params,
success: function (res) {
lock = !lock;
if (res.code == 200) {
let packages = res.data;
let nick = packages.nick;
let erbanNo = packages.erbanNo;
$pop.show();
$content.find('.toPerson').html('<p>向<span> ' + nick + '</span></p> <p>(peko号<span>' + erbanNo + '</span> )</p> <p>充值 <span> ' + price + ' 元?</span></p>');
payInOutter(packages)
} else if (res.code === 10108) {
// $('.cancel1').fadeIn(0)
// $('.check1').html("取消")
// mess('为保护您的财产安全,请先在客户端进行实名认证');
$('.cancel1').fadeOut(0)
$('.pop1 .content').addClass('shiming')
mess('<div>为了保护财产安全请前往app【我的】- 【实名认证】进行实名认证</div><div><img src="./images/shiming.png"></div>');
} else {
$('.pop1 .content').removeClass('shiming')
mess(res.message);
}
},
error: function (res) {
lock = !lock;
$('.pop1 .content').removeClass('shiming')
mess('请链接网络试试');
}
});
}
//外部浏览器唤起 微信支付/支付宝支付
const payInOutter = (packages) => {
$('#confirm').on('click', () => {
num.val('');
$pop.hide();
$('#confirm').unbind('click')
window.location.href = packages.payInfo.mweb_url
})
}
//微信浏览器获取订单信息
const submitWxPayment = (params) => {
$.ajax({
type: 'POST',
url: urlPrefix + '/wx/submitPay?app=peko',
data: params,
success: function (res) {
lock = !lock;
if (res.code == 200) {
console.log(res);
let packages = res.data;
// var timeStamp = packages.timestamp;//时间戳,自1970年开始
// var nonceStr = packages.nonce_str;//随机串
// var prepayId = packages.prepay_id;
// var paySign = packages.sign;//微信签名
let nick = packages.nick;
let erbanNo = packages.erban_no;
// var appId = packages.appid;
// var signType = packages.sign_type;
// shade.toggle();
// $content.toggle();
$pop.show();
$content.find('.toPerson').html('<p>向<span> ' + nick + '</span></p> <p>(peko号<span>' + erbanNo + '</span> )</p> <p>充值 <span> ' + price + ' 元?</span></p>');
payInWxBrowser(packages)
} else if (res.code === 10108) {
// $('.cancel1').fadeIn(0)
// $('.check1').html("取消")
// mess('为保护您的财产安全,请先在客户端进行实名认证');
$('.cancel1').fadeOut(0)
$('.pop1 .content').addClass('shiming')
mess('<div>为了保护财产安全请前往app【我的】- 【实名认证】进行实名认证</div><div><img src="./images/shiming.png"></div>');
} else {
$('.pop1 .content').removeClass('shiming')
mess(res.message);
}
},
error: function (res) {
lock = !lock;
$('.pop1 .content').removeClass('shiming')
mess('请链接网络试试');
}
})
}
//微信浏览器唤起支付
const payInWxBrowser = (packages) => {
$('#confirm').on('click', function () {
num.val('');
$pop.hide();
if ($.isEmptyObject(packages)) {
toastMsg('出错了,请刷新页面重试');
return;
}
const { realPayChannel } = packages;
if (realPayChannel === 'hui_fu_bao') {
const { redirectUrl } = packages;
window.location.href = redirectUrl
} else {
const { appid, timestamp, nonce_str, prepay_id, sign_type, sign } = packages
function onBridgeReady() {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": appid,
"timeStamp": timestamp,
"nonceStr": nonce_str,
"package": prepay_id,
"signType": sign_type,
"paySign": sign
},
function (res) {
window.location.reload();
}
);
}
if (typeof WeixinJSBridge == 'undefined') {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}
}
});
}
$(function () {
setTimeout(() => {
getChargeList();
$('.shade-mask').show();
$('body').css('overflow', 'hidden')
}, 100);
let main = {
init: function () {
// this.getData();
this.eventRegister();
},
eventRegister: function () {
//切换支付类型,是支付宝与微信
$('.pay-type .type').on('click', 'div', function () {
let index = $(this).index();
if (index === cerruntIndex) return;
cerruntIndex = index;
$(this).addClass('active').siblings().removeClass('active');
if ($(this).hasClass('wxpay')) {
payType = "wx_wap";
renderList(chargeList);
} else {
$('.alipay .tip').css({
top: '-1px',
right: '-1px'
})
payType = "alipay_wap";
renderList(aLiChargeList)
}
})
//关闭弹窗
$('.btn').on('click', function () {
$('.shade-mask').hide();
$('body').css('overflow', 'auto')
})
$('.check1').on('click', function () {
$('.pop1').fadeOut(100);
})
$('.cancel1').on('click', function () {
$('.pop1').fadeOut(100);
window.location.href = 'https://www.zhongjialx.com/'
})
$('#cancel').on('click', function () {
$('#confirm').unbind('click')
$pop.toggle();
// window.location.href = window.location.href + '?timestamp=' + (new Date()).valueOf();
});
// $('.failed').on('click', function () {
// $('.pay-reminders').fadeOut(90)
// })
// $('.pay-success').on('click', function () {
// $('.pay-reminders').fadeOut(90)
// })
//点击li,选择要充值的金额,点击出现 向***充值***元 的弹窗
$('.wxPayContent').on('click', 'li', function () {
if (lock) return;
lock = !lock;
let charge = $(this).attr('_charge');//传到后台获取用户是否存在的字符串的参数
let reg = /^[0-9]*$/, //输入框的正则匹配
_num = num.val().trim(); //获取输入框的值
index = $(this).data('index');
// price = aLiChargeList[index].money; //获取数据的钱的值
// 判断是否是自定义充值
if ($(this).attr('custom') == 'custom') {
$('.pop2').show()
} else {
if (browser.weixin) {
// price = wxPubchargeList[index].money
if (payType === "wx_wap") {
price = chargeList[index].money; //获取价格
} else if (payType === 'alipay_wap') {
price = aLiChargeList[index].money; //获取价格
}
} else {
if (payType === "wx_wap") {
price = chargeList[index].money; //获取价格
} else if (payType === 'alipay_wap') {
price = aLiChargeList[index].money; //获取价格
}
}
let params = {
chargeProdId: charge,
payChannel: payType,
successUrl: urlPrefix + '/peko/modules/payment/index.html'
};
if (_num === '' || !reg.test(_num)) {
$('.pop1 .content').removeClass('shiming')
mess('请输入正确的手机号或者peko号');
lock = !lock;
return;
} else {
let _reg = /^[1][3,4,5,7,8][0-9]{9}$/;
_reg.test(_num) ? params['phone'] = _num : params['erbanNo'] = _num
}
if (browser.weixin) {
if (browser.ios) {
toastMsg('ios不支持公众号支付');
return;
}
let openid = window.sessionStorage.getItem('user_openid');
if (!openid) {
toastMsg('页面未授权,请在公众号菜单进入本页面');
return;
}
params['openId'] = openid;
if (params['phone']) {
params['phone'] = _num;
} else {
params['erban_no'] = _num;
}
delete params['erbanNo'];
delete params.payChannel;
submitWxPayment(params);
} else {
getPaymentInfo(params)
}
}
});
}
};
main.init();
})
wx.ready(function () {
//2.3 隐藏不用的按钮
// alert("隐藏不用的按钮");
wx.hideMenuItems({
menuList: ["menuItem:share:timeline", "menuItem:copyUrl", "menuItem:share:appMessage", "menuItem:share:qq", "menuItem:share:weiboApp", "menuItem:favorite", "menuItem:share:facebook", "menuItem:share:QZone", "menuItem:editTag", "menuItem:delete", "menuItem:copyUrl", "menuItem:originPage", "menuItem:readMode", "menuItem:openWithQQBrowser", "menuItem:openWithSafari", "menuItem:share:email", "menuItem:share:brand"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
});
})
// 跳转制定页面的html
function wind_reload(url) {
window.location.assign(url);
}