1. 引入js
<script
type="text/javascript"
src="https://isdapp.shandong.gov.cn/jmopen/jssdk/index.js"
></script>
2.
创建一个 asd-api.js 的文件,里面封装了接口加密的方法 , 分两个接口 一个是 普通接口,一个是登录接口,其实就是 一个 需要传headers 一个不需要,按需引用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | /** @format */ let signurl = 'https://' + urldomaincreatesign; let gatewayurl = 'https://' + urldomaingateway; let appid = 'hjzfqydupcqi'; //应用标识 let fromport = '1'; //端口来源 let loadingNums = 0; //所有的请求数量,统一管理加载菊花图 let back = false; import store from '../store'; // #ifdef H5 window.addEventListener( 'popstate', function (e) { // store.commit('hideLoading'); store.commit('hideLoading'); }, false ); // #endif export default { //其余通用接口,需要传登录接口返回的jwtToken(headers) asdGetApi(params) { return new Promise((resolve) => { loadingNums++; if (loadingNums >= 1) { setTimeout(() => { store.commit('showLoading'); }, 10); } let publicKey = params.publicKey; //接口加密的公钥 let privateKey = '4491ffe203d515ca01837744070c6aa88c9689d4b55fee855c88dc37f838d0b6'; //接口解密的私钥 let interfaceid = params.SERVER; //接口名称(接口唯一标识) let interfacecontent = params.content; //传递的参数 let headers = JSON.stringify({ token: params.headers }); //请求头 let noEncrypt = params.noEncrypt; //是否不加密 let cipher = SM.encrypt(interfacecontent, publicKey); vaildInterfaceWithHeadersfn( appid, interfaceid, cipher, fromport, headers, signurl, gatewayurl ).then((res) => { setTimeout(() => { if (loadingNums > 0) { loadingNums--; } console.log(loadingNums, store.state.showLoading); if (loadingNums == 0 && store.state.showLoading) { store.commit('hideLoading'); } }, 0); let moduleResult = res; if (moduleResult == false) { //失败返回 // uni.showToast({ // title: moduleResult, // icon: 'none' // }); } else { //接口成功返回 let data; data = SM.decrypt(moduleResult, privateKey); //解密数据 resolve(JSON.parse(data)); } }); }); }, //登录接口 asdLogin(params) { return new Promise((resolve) => { let publicKey = params.publicKey; //接口加密的公钥 let privateKey = '4491ffe203d515ca01837744070c6aa88c9689d4b55fee855c88dc37f838d0b6'; //接口解密的私钥 let interfaceid = params.SERVER; //接口名称(接口唯一标识) let interfacecontent = params.content; //传递的参数 let cipher = SM.encrypt(interfacecontent, publicKey); //加密请求数据 vaildInterfacefn( appid, interfaceid, cipher, fromport, signurl, gatewayurl ).then((res) => { let moduleResult = res; if (moduleResult == false) { //失败返回 uni.showToast({ title: moduleResult, icon: 'none' }); } else { //接口成功返回 let data = SM.decrypt(moduleResult, privateKey); //解密数据 resolve(JSON.parse(data)); } }); }); } }; |
3. 页面中引用方法
import asdApi from '@/api/asd-api.js';
asdApi
.asdGetApi({
SERVER: 'zfqydcxzysj', // 接口名
content: JSON.stringify({}), // 传参
headers: uni.getStorageSync('token'),
//加密公钥
publicKey:
'046985a6f422ed92b2829112fb7d68af1158366470c1e1dda71e8a080abf75490066545676f77af5b246e113a899f9ef66a8e7d25e30ba65f6ac67c1abf9c8196a'
}) // 由爱山东那边的人员提供
.then((res) => {
this.homeData = res.data;
});