提交
This commit is contained in:
9
src/jtools/api/pay.js
Normal file
9
src/jtools/api/pay.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import request from '../request/index.js';
|
||||
|
||||
export function prePay(data) {
|
||||
return request({
|
||||
url: 'driver-api/applet/pay/prepay',
|
||||
method: 'POST',
|
||||
data,
|
||||
});
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
import request from '../request/index.js';
|
||||
// #ifdef H5
|
||||
import wxsdk from '@/jtools/wechat/sdk'
|
||||
// import wxsdk from '@/jtools/wechat/sdk'
|
||||
// #endif
|
||||
import wechat from '@/jtools/wechat/wechat'
|
||||
// import wechat from '@/jtools/wechat/wechat'
|
||||
import $platform from '@/jtools/platform';
|
||||
|
||||
import {prePay} from '@/jtools/api/pay'
|
||||
/**
|
||||
* 支付
|
||||
*
|
||||
@@ -16,150 +16,142 @@ import $platform from '@/jtools/platform';
|
||||
export default class JtoolsPay {
|
||||
|
||||
|
||||
// wxOfficialAccount wxMiniProgram App H5
|
||||
// wechat 公众号JSSDK支付 小程序支付 微信开放平台支付 H5网页支付
|
||||
// alipay 复制网址 复制网址 支付宝开放平台支付 直接跳转链接
|
||||
// wallet v v v v
|
||||
// wxOfficialAccount wxMiniProgram App H5
|
||||
// wechat 公众号JSSDK支付 小程序支付 微信开放平台支付 H5网页支付
|
||||
// alipay 复制网址 复制网址 支付宝开放平台支付 直接跳转链接
|
||||
// wallet v v v v
|
||||
|
||||
|
||||
constructor(payment, order, orderType) {
|
||||
this.payment = payment;
|
||||
this.order = order;
|
||||
this.orderType = orderType;
|
||||
this.platform = $platform.get();
|
||||
let payMehod = this.getPayMethod();
|
||||
payMehod();
|
||||
constructor(payment, order, orderType) {
|
||||
this.payment = payment;
|
||||
this.order = order;
|
||||
this.orderType = orderType;
|
||||
this.platform = $platform.get();
|
||||
let payMehod = this.getPayMethod();
|
||||
payMehod();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
getPayMethod() {
|
||||
var payMethod = {
|
||||
'wxMiniProgram': {
|
||||
'wechat': () => {
|
||||
this.wxMiniProgramPay()
|
||||
},
|
||||
},
|
||||
'App': {
|
||||
'wechat': () => {
|
||||
this.wechatPay()
|
||||
},
|
||||
'alipay': () => {
|
||||
this.aliPay()
|
||||
},
|
||||
},
|
||||
}
|
||||
return payMethod[this.platform][this.payment];
|
||||
}
|
||||
getPayMethod() {
|
||||
var payMethod = {
|
||||
'wxMiniProgram': {
|
||||
'wechat': () => {
|
||||
this.wxMiniProgramPay()
|
||||
},
|
||||
},
|
||||
'App': {
|
||||
'wechat': () => {
|
||||
this.wechatPay()
|
||||
},
|
||||
'alipay': () => {
|
||||
this.aliPay()
|
||||
},
|
||||
},
|
||||
}
|
||||
return payMethod[this.platform][this.payment];
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 预支付
|
||||
prepay() {
|
||||
let that = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
const p = $platform.device()
|
||||
const tradeInfoType = p == 'android' ? 'Android' : p == 'ios' ? 'iOS' : 'Wap'
|
||||
let params = {
|
||||
orderId: this.order.orderId,
|
||||
orderPayType: this.order.orderPayType,
|
||||
money: this.order.money,
|
||||
microServiceName: this.order.microServiceName,
|
||||
prepayParamUrl: this.order.prepayParamUrl,
|
||||
paymentType: 'weChatPay',
|
||||
payType: 'JSAPI',
|
||||
tradeInfoType: tradeInfoType,
|
||||
tenantId: '-1',
|
||||
clientType: 'miniWx'
|
||||
}
|
||||
if (uni.getStorageSync('openId')) {
|
||||
params.openId = uni.getStorageSync('openId');
|
||||
}
|
||||
request({
|
||||
url: 'driver-api/applet/pay/prepay',
|
||||
method: 'POST',
|
||||
param,
|
||||
}).then(res => {
|
||||
if (res.code == 'SUCCESS') {
|
||||
// 预支付
|
||||
prepay() {
|
||||
let that = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
const p = $platform.device()
|
||||
const tradeInfoType = p == 'android' ? 'Android' : p == 'ios' ? 'iOS' : 'Wap'
|
||||
let params = {
|
||||
"code":this.order.code,
|
||||
"description": this.order.description,
|
||||
"money": this.order.money,
|
||||
"outTradeNo": this.order.outTradeNo,
|
||||
"userId": this.order.userId
|
||||
}
|
||||
if (uni.getStorageSync('openId')) {
|
||||
params.openId = uni.getStorageSync('openId');
|
||||
}
|
||||
prePay(params).then(res => {
|
||||
if (res.code == '0000') {
|
||||
resolve(res);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 微信小程序支付
|
||||
async wxMiniProgramPay() {
|
||||
let that = this;
|
||||
let result = await this.prepay();
|
||||
const params = result.data.jsApiResult
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
...{
|
||||
appId: params.appId, //公众号名称,由商户传入
|
||||
timeStamp: params.timestamp, //时间戳,自1970年以来的秒数
|
||||
nonceStr: params.nonceStr, //随机串
|
||||
package: `prepay_id=${params.prepay_id}`,
|
||||
signType: params.signType, //微信签名方式:
|
||||
paySign: params.paySign, //微信签名
|
||||
},
|
||||
success: res => {
|
||||
that.payResult('success', result.data.orderPayNo)
|
||||
},
|
||||
fail: err => {
|
||||
console.log('支付取消或者失败:', err);
|
||||
err.errMsg !== "requestPayment:fail cancel" && that.payResult('fail')
|
||||
}
|
||||
});
|
||||
}
|
||||
// 微信小程序支付
|
||||
async wxMiniProgramPay() {
|
||||
let that = this;
|
||||
let result = await this.prepay();
|
||||
const params = result.data
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
...{
|
||||
appId: params.appId, //公众号名称,由商户传入
|
||||
timeStamp: params.timeStamp, //时间戳,自1970年以来的秒数
|
||||
nonceStr: params.nonceStr, //随机串
|
||||
package: params.packageVal,
|
||||
signType: params.signType, //微信签名方式:
|
||||
paySign: params.paySign, //微信签名
|
||||
},
|
||||
success: res => {
|
||||
console.log(res);
|
||||
that.payResult('success', result.data.orderPayNo)
|
||||
},
|
||||
fail: err => {
|
||||
console.log('支付取消或者失败:', err);
|
||||
err.errMsg !== "requestPayment:fail cancel" && that.payResult('fail')
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 支付宝支付
|
||||
async aliPay() {
|
||||
let that = this;
|
||||
let result = await this.prepay();
|
||||
if (result.code === 1) {
|
||||
uni.requestPayment({
|
||||
provider: 'alipay',
|
||||
orderInfo: result.data.pay_data, //支付宝订单数据
|
||||
success: res => {
|
||||
that.payResult('success')
|
||||
},
|
||||
fail: err => {
|
||||
console.log('支付取消或者失败:', err);
|
||||
err.errMsg !== "requestPayment:fail cancel" && that.payResult('fail')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
// 支付宝支付
|
||||
async aliPay() {
|
||||
let that = this;
|
||||
let result = await this.prepay();
|
||||
if (result.code === 1) {
|
||||
uni.requestPayment({
|
||||
provider: 'alipay',
|
||||
orderInfo: result.data.pay_data, //支付宝订单数据
|
||||
success: res => {
|
||||
that.payResult('success')
|
||||
},
|
||||
fail: err => {
|
||||
err.errMsg !== "requestPayment:fail cancel" && that.payResult('fail')
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 微信支付
|
||||
async wechatPay() {
|
||||
let that = this;
|
||||
let result = await this.prepay();
|
||||
if (result.code === 1) {
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
orderInfo: JSON.parse(result.data.pay_data), //微信订单数据(官方说是string。实测为object)
|
||||
success: res => {
|
||||
that.payResult('success')
|
||||
},
|
||||
fail: err => {
|
||||
err.errMsg !== "requestPayment:fail cancel" && that.payResult('fail')
|
||||
console.log('支付取消或者失败:', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
// 微信支付
|
||||
async wechatPay() {
|
||||
let that = this;
|
||||
let result = await this.prepay();
|
||||
console.log('微信支付');
|
||||
if (result.code === 1) {
|
||||
uni.requestPayment({
|
||||
provider: 'wxpay',
|
||||
orderInfo: JSON.parse(result.data.pay_data), //微信订单数据(官方说是string。实测为object)
|
||||
success: res => {
|
||||
that.payResult('success')
|
||||
},
|
||||
fail: err => {
|
||||
err.errMsg !== "requestPayment:fail cancel" && that.payResult('fail')
|
||||
console.log('支付取消或者失败:', err);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 支付结果跳转,success:成功,fail:失败
|
||||
payResult(resultType, orderPayNo) {
|
||||
const that = this;
|
||||
let path = ''
|
||||
// 支付结果跳转,success:成功,fail:失败
|
||||
payResult(resultType, orderPayNo) {
|
||||
const that = this;
|
||||
let path = 'paySuccess'
|
||||
uni.navigateTo({
|
||||
url:path
|
||||
url: path
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -21,10 +21,27 @@ const question = defineStore({
|
||||
getOrderQuestion(val) {
|
||||
queryQuestion({
|
||||
carTypeId: this.currentCartype,
|
||||
subject: val
|
||||
subject: val,
|
||||
// questionIdList:[10982,10983,10985,10986]
|
||||
}).then(res => {
|
||||
if (res.code == '0000') {
|
||||
this.orderQuestion = res.data
|
||||
const falseList =storage.get(`wrongList_subject${val}`) || []
|
||||
const trueList =storage.get(`rightList_subject${val}`) || []
|
||||
const falseArr=[]
|
||||
const rightArr=[]
|
||||
this.orderQuestion.forEach(item=>{
|
||||
if(falseList.includes(item.questionId)){
|
||||
falseArr.push(item.questionId)
|
||||
}
|
||||
if(trueList.includes(item.questionId)){
|
||||
rightArr.push(item.questionId)
|
||||
}
|
||||
})
|
||||
console.log('falseArr',falseArr);
|
||||
storage.set(`wrongList_subject${val}`,falseArr)
|
||||
storage.set(`rightList_subject${val}`,rightArr)
|
||||
console.log(storage.get(`wrongList_subject${val}`));
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
261
src/jtools/wechat/wechat.js
Normal file
261
src/jtools/wechat/wechat.js
Normal file
@@ -0,0 +1,261 @@
|
||||
/**
|
||||
* Wechat v1.1.0
|
||||
* @Class Wechat
|
||||
* @description jtools-wechat 1.1.0 wehcat第三方登录组件
|
||||
* @Author lidongtony
|
||||
* @Date 2020-05-20
|
||||
* @Email lidongtony@qq.com
|
||||
*/
|
||||
import api from "@/jtools/request/index";
|
||||
import $platform from "@/jtools/platform";
|
||||
import store from "@/jtools/store";
|
||||
import {
|
||||
API_URL
|
||||
} from "@/env";
|
||||
|
||||
export default {
|
||||
eventMap(event) {
|
||||
let map = "";
|
||||
switch (event) {
|
||||
case "login":
|
||||
map = "登录中...";
|
||||
break;
|
||||
case "refresh":
|
||||
map = "更新中...";
|
||||
break;
|
||||
case "bind":
|
||||
map = "绑定中...";
|
||||
break;
|
||||
}
|
||||
return map;
|
||||
},
|
||||
|
||||
async login() {
|
||||
let token = "";
|
||||
// #ifdef MP-WEIXIN
|
||||
token = await this.wxMiniProgramOauth("login");
|
||||
return token;
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.wxOfficialAccountOauth("login");
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
token = await this.wxOpenPlatformOauth("login");
|
||||
return token;
|
||||
// #endif
|
||||
},
|
||||
async refresh() {
|
||||
let token = "";
|
||||
// #ifdef MP-WEIXIN
|
||||
token = await this.wxMiniProgramOauth("refresh");
|
||||
return token;
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.wxOfficialAccountOauth("refresh");
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
token = await this.wxOpenPlatformOauth("refresh");
|
||||
return token;
|
||||
// #endif
|
||||
},
|
||||
async bind() {
|
||||
let token = "";
|
||||
// #ifdef MP-WEIXIN
|
||||
token = await this.wxMiniProgramOauth("bind");
|
||||
return token;
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
this.wxOfficialAccountOauth("bind");
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
token = await this.wxOpenPlatformOauth("bind");
|
||||
return token;
|
||||
// #endif
|
||||
},
|
||||
|
||||
// #ifdef H5
|
||||
// 微信公众号网页登录&刷新头像昵称&绑定
|
||||
wxOfficialAccountOauth(event = "login") {
|
||||
if ($platform.get() !== "wxOfficialAccount") {
|
||||
uni.showToast({
|
||||
title: "请在微信浏览器中打开",
|
||||
icon: "none"
|
||||
});
|
||||
throw false;
|
||||
}
|
||||
let host = $platform.host();
|
||||
let payloadObject = {
|
||||
host: host,
|
||||
event,
|
||||
token: (event !== "login" && store.getters.isLogin) ? uni.getStorageSync("token") : ""
|
||||
};
|
||||
let payload = encodeURIComponent(JSON.stringify(payloadObject));
|
||||
let redirect_uri = encodeURIComponent(`${API_URL}user/wxOfficialAccountOauth?payload=${payload}`);
|
||||
let oauthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + store.getters.initWechat.appid +
|
||||
`&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=1`;
|
||||
uni.setStorageSync("lastPage", window.location.href);
|
||||
window.location = oauthUrl;
|
||||
},
|
||||
|
||||
// 微信公众号网页静默登录:临时登录获取OpenId 不入库不绑定用户
|
||||
wxOfficialAccountBaseLogin() {
|
||||
let state = encodeURIComponent(window.location.href);
|
||||
window.location = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + store.getters.initWechat.appid +
|
||||
`&redirect_uri=${API_URL}user/wxOfficialAccountBaseLogin&response_type=code&scope=snsapi_base&state=${state}`;
|
||||
throw "stop";
|
||||
},
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
// 微信开放平台登录
|
||||
wxOpenPlatformOauth(event = "login") {
|
||||
let that = this;
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.login({
|
||||
provider: "weixin",
|
||||
success: function(loginRes) {
|
||||
if (loginRes.errMsg === "login:ok") {
|
||||
let authResult = loginRes.authResult;
|
||||
api("user.wxOpenPlatformOauth", {
|
||||
authResult,
|
||||
event
|
||||
}, that.eventMap(event)).then(res => {
|
||||
if (res.code === 1) {
|
||||
resolve(res.data.token);
|
||||
} else {
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
fail: function(res) {
|
||||
uni.showToast({
|
||||
title: "登录失败,请稍后再试"
|
||||
});
|
||||
resolve(false);
|
||||
api("common.debug", {
|
||||
info: res
|
||||
});
|
||||
},
|
||||
complete: function(res) {}
|
||||
});
|
||||
});
|
||||
},
|
||||
// #endif
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
// 微信小程序静默登录
|
||||
async getWxMiniProgramSessionKey(autoLogin = true) {
|
||||
let sessionStatus = false;
|
||||
let session_key = "";
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.checkSession({
|
||||
success(res) {
|
||||
if (res.errMsg === "checkSession:ok") sessionStatus = true;
|
||||
},
|
||||
complete() {
|
||||
if (uni.getStorageSync("session_key") && sessionStatus && !autoLogin) {
|
||||
resolve(uni.getStorageSync("session_key"));
|
||||
} else {
|
||||
uni.login({
|
||||
success: function(info) {
|
||||
let code = info.code;
|
||||
api("user.getWxMiniProgramSessionKey", {
|
||||
code: code,
|
||||
autoLogin: autoLogin
|
||||
}).then(res => {
|
||||
if (res.code === 1) {
|
||||
uni.setStorageSync("session_key", res
|
||||
.data.session_key);
|
||||
if (autoLogin) {
|
||||
if (res.data.token) {
|
||||
resolve(res.data.token);
|
||||
} else {
|
||||
resolve(false);
|
||||
}
|
||||
}
|
||||
resolve(res.data.session_key);
|
||||
} else {
|
||||
reject(res.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// 微信小程序获取用户信息登录
|
||||
wxMiniProgramOauth(event = "login") {
|
||||
let that = this;
|
||||
let session_key = uni.getStorageSync("session_key");
|
||||
uni.showLoading({
|
||||
title: that.eventMap(event)
|
||||
});
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getUserProfile({ // 必须手动确认触发
|
||||
desc: "完善会员资料", // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
||||
success: res => {
|
||||
if (res.errMsg === "getUserProfile:ok") {
|
||||
api("user.wxMiniProgramOauth", {
|
||||
event,
|
||||
session_key,
|
||||
encryptedData: res.encryptedData,
|
||||
iv: res.iv,
|
||||
signature: res.signature,
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.code === 1) {
|
||||
resolve(res.data.token);
|
||||
} else {
|
||||
uni.removeStorageSync("session_key");
|
||||
that.getWxMiniProgramSessionKey(false);
|
||||
resolve(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
complete: res => {
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
// 小程序更新
|
||||
checkMiniProgramUpdate() {
|
||||
if (uni.canIUse("getUpdateManager")) {
|
||||
const updateManager = uni.getUpdateManager();
|
||||
updateManager.onCheckForUpdate(function(res) {
|
||||
// 请求完新版本信息的回调
|
||||
if (res.hasUpdate) {
|
||||
updateManager.onUpdateReady(function() {
|
||||
uni.showModal({
|
||||
title: "更新提示",
|
||||
content: "新版本已经准备好,是否重启应用?",
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||
updateManager.applyUpdate();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
updateManager.onUpdateFailed(function() {
|
||||
// 新的版本下载失败
|
||||
uni.showModal({
|
||||
title: "已经有新版本了哟~",
|
||||
content: "新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~"
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
// #endif
|
||||
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user