Files
peko-h5/view/peko/modules/payment_new/js/index.js
2023-08-07 16:04:25 +08:00

397 lines
12 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()
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_pub2_h5" =>微信支付参数 : payType = "alipay_wap" =>支付宝支付参数
//defaultPayH5 => 决定H5支付页面的payType由后台配置
let payType = "wx_pub2_h5" //默认微信选中
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
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){
getOpenId()
// 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('網絡錯誤');
}
});
}
//渲染充值列表
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)
}
//获取openid
const getOpenId = () => {
$.ajax({
type: 'GET',
url: urlPrefix + '/getCodeCallbackMsgFroPub2',
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=piko',
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>(piko号<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/submitPayForPub2?app=piko',
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>(piko号<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_pub2_h5";
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; //获取数据的钱的值
let params = {
chargeProdId: charge,
payChannel: payType,
successUrl: urlPrefix + '/peko/modules/payment_new/index.html'
};
if (_num === '' || !reg.test(_num)) {
$('.pop1 .content').removeClass('shiming')
mess('请输入正确的手机号或者piko号');
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);
}