(function () {
var baseurl=''
var course_id
var code
var jwt_token
var token
var data = {}
var order_type = 'course'
var order_sn
var pay_type
var datapar
var jwt_tokentime
var openid
var flag =false
// 获取code 课程course_id
var query = window.location.search.substring(1);
if (query) {
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
data[pair[0]] = pair[1]
}
code = data.code
course_id = data.course_id
var codecourse_id = { code: code, course_id: course_id }
localStorage.setItem('codecourse_id', JSON.stringify(codecourse_id))
}
if (!course_id) {
codecourse_id = localStorage.getItem('codecourse_id')
codecourse_id = JSON.parse(codecourse_id)
code = codecourse_id.code
course_id = codecourse_id.course_id
}
// 微信浏览器 获取支付价格
var weixinAndbrowser = false
is_weixin();
function is_weixin() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
// 微信 打开浏览器 跳微信链接
if(!code){
var weixinurl = 'https://open.weixin.qq.com'
weixinurl = weixinurl.replace('course_id=90', `course_id=${course_id}`);
window.location.href=weixinurl
}
pay_type = 1
weixinAndbrowser = true
gettoken(course_id)
} else {
pay_type = 4
// 浏览器
weixinAndbrowser = false
gettoken(course_id)
}
}
//是否授权过
function openUserMsg(code) {
$.ajax({
url: `${baseurl}/api/app/v/1.0/wechatLoginGetUserinfo`,
method: 'get',
dataType: "json",
data: ({
code: code
}),
success: function (res) {
if (res.code == -2) {
//让去登录 存储订单信息
localStorage.setItem('userShopCar', JSON.stringify(res.data))
window.location.href = '/pay/login.html'
} else if (res.code == 1) {
jwt_tokentime = JSON.parse(localStorage.getItem('jwt_token'))
//授权过直接下单
jwt_tokentime = {
token: null,
time: Date.now(),
expire: 1000 * 60 * 100,
openid:res.data.openid
}
jwt_tokentime.token = res.data.jwt_token
token = res.data.jwt_token
localStorage.setItem('jwt_token', JSON.stringify(jwt_tokentime))
gettoken(course_id)
if(flag){
place(order_type, course_id, token)
}
}
}
})
}
$('.priceSubmit').click(function () {
jwt_tokentime = JSON.parse(localStorage.getItem('jwt_token'))
if (jwt_tokentime) {
let newTime = Date.now()
let oldTime = jwt_tokentime.time
let expire = jwt_tokentime.expire
let diffTime = newTime - oldTime
openid = jwt_tokentime.openid
if (diffTime > expire) {
//token过期走授权
localStorage.removeItem('jwt_token');
if(weixinAndbrowser){
// token 过期 走价格 走下单
flag = true
openUserMsg(code)
}else{
window.location.href = '/pay/login.html'
}
} else {
//token不过期下单
token = jwt_tokentime.token
place(order_type, course_id, token)
}
}
})
// 下单
function place(order_type, course_id, token) {
$.ajax({
url: `${baseurl}/api/app/v/1.0/addOrder`,
headers: {
Accept: "application/json; charset=utf-8",
token: token
},
method: 'post',
dataType: "json",
data: ({
order_type: order_type,
item_id: course_id
}),
success: function (res) {
if (res.code == 1) {
order_sn = res.data.order_sn
if(weixinAndbrowser){
weixinpay(token, order_sn, order_type, pay_type,openid)
}else{
$('.modePayType').fadeIn()
}
}else{
console.log('addOrder',res.message)
$('.bedefeated').html(res.message)
$('.bedefeated').fadeIn()
setTimeout(function () {
$('.bedefeated').fadeOut()
}, 2000)
}
}
})
}
$('.paycolse').click(function(){
$('.modePayType').fadeOut()
})
// 选择微信支付宝
$('.modePayTypLink .payType').click(function(){
$(this).find('.select img').fadeIn()
$(this).siblings().find('.select img').fadeOut()
let payType =$(this).data('paytype')
if(payType=='weixin'){
weixinpay(token, order_sn, order_type, pay_type)
}else if(payType=='zhifubao'){
Alipay(token, order_sn)
}
})
// 微信 浏览器微信支付
function weixinpay(token, order_sn, order_type, pay_type,openid) {
$.ajax({
url: `${baseurl}/api/app/v/1.0/unifiedorder`,
headers: {
Accept: "application/json; charset=utf-8",
token: token
},
method: 'get',
dataType: "json",
data: ({
order_sn: order_sn,
order_type: order_type,
pay_type: pay_type,
openid:openid
}),
success: function (res) {
if (res.code == 1) {
datapar = res.data
if(weixinAndbrowser){
onBridgeReady(datapar)
}else{
window.location.href = res.data.mweb_url
}
}else{
console.log('unifiedorder',res.message)
$('.bedefeated').html('请稍后再试',res)
$('.bedefeated').fadeIn()
setTimeout(function () {
$('.bedefeated').fadeOut()
}, 2000)
}
}
})
}
// 支付宝
function Alipay(token, order_sn){
$.ajax({
url: `${baseurl}/api/app/v/1.0/wappay`,
headers: {
Accept: "application/json; charset=utf-8",
token: token
},
method: 'post',
dataType: "json",
data: ({
order_sn: order_sn,
}),
success: function (res) {
if (res.code == 1) {
window.location.href = res.data
}else{
console.log('wappay',res.message)
$('.bedefeated').html('请稍后再试')
$('.bedefeated').fadeIn()
setTimeout(function () {
$('.bedefeated').fadeOut()
}, 2000)
}
}
})
}
// 去微信支付
function onBridgeReady(datapar) {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": datapar.appId, //公众号ID,由商户传入
"timeStamp": datapar.timeStamp, //时间戳,自1970年以来的秒数
"nonceStr": datapar.nonceStr, //随机串
"package": datapar.package,
"signType": datapar.signType, //微信签名方式:
"paySign": datapar.paySign //微信签名
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
} else {
}
});
}
//获取价格
function riseInPrice(token, course_id) {
$.ajax({
url: `${baseurl}/api/app/v/1.0/courseDetail`,
headers: {
Accept: "application/json; charset=utf-8",
token: token
},
method: 'get',
dataType: "json",
data: ({
cid: course_id
}),
success: function (res) {
if(res.code==1){
var coursePrice =res.data.price
$('.pricelogin .price').html('¥'+coursePrice)
}else{
$('.bedefeated').html('请稍后再试')
$('.bedefeated').fadeIn()
setTimeout(function () {
$('.bedefeated').fadeOut()
}, 2000)
}
}
})
}
// 获取token
function gettoken(course_id) {
jwt_tokentime = JSON.parse(localStorage.getItem('jwt_token'))
if (jwt_tokentime) {
let newTime = Date.now()
let oldTime = jwt_tokentime.time
let expire = jwt_tokentime.expire
let diffTime = newTime - oldTime
if (diffTime > expire) {
//token过期删除localStorage
localStorage.removeItem('jwt_token');
window.location.href = '/pay/login.html'
} else {
token = jwt_tokentime.token
riseInPrice(token,course_id)
}
}else{
if(weixinAndbrowser){
openUserMsg(code)
}else{
window.location.href = '/pay/login.html'
}
}
}
}())
js调用微信支付
最新推荐文章于 2024-05-28 15:10:28 发布