Commit 661803d9 by 宋毅

git diffMerge branch 'center-channel' of gitlab.gongsibao.com:jiangyong/zhichan into center-channel

git push
parents 58d7f144 f4f8777d
......@@ -40,6 +40,9 @@ class PolicyAPI extends APIBase {
case "submitPolicyNeedNotes"://申请信息备注提交
opResult = this.policySve.submitPolicyNeedNotes(pobj);
break;
case "getWxSign"://获取微信签名信息
opResult = this.policySve.getWxSign(action_body.url);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
......
const CacheBase=require("../cache.base");
const system=require("../../system");
// const OpenplatformWxop = require("../../wxop/impl/openplatformWxop");
/**
* 微信开放平台 公众号或小程序的接口调用凭据(授权方令牌)缓存(2小时后失效)
*/
class WxJsapiTicketCache extends CacheBase{
constructor(){
super();
this.prefix="wx_ticket_wx8aa8a8d4ff3da8bd";
this.restClient = system.getObject("util.restClient");
this.wxTokenSve = system.getObject("service.common.wxTokenSve");
}
desc() {
return "应用UI配置缓存";
}
prefix() {
return "wx_ticket_wx8aa8a8d4ff3da8bd";
}
async get(access_token){//公众号appid
var key = this.prefix;
var result = await this.redisClient.get(key);
var obj = null;
if(result){
console.log(result,"缓存中获取token+++++++++++++++++++++++");
obj=JSON.parse(result);
}
if(!obj){//无缓存
var newobj = await this.wxTokenSve.getJsapiTicket(access_token);
console.log(newobj);
if(newobj){
var newobjstring=JSON.stringify(newobj);
await this.redisClient.setWithEx(key,newobjstring,7000);
return newobj;
}else{
return null;
}
}
return obj;
}
}
module.exports=WxJsapiTicketCache;
\ No newline at end of file
const CacheBase=require("../cache.base");
const system=require("../../system");
// const OpenplatformWxop = require("../../wxop/impl/openplatformWxop");
/**
* 微信开放平台 公众号或小程序的接口调用凭据(授权方令牌)缓存(2小时后失效)
*/
class WxTokenCache extends CacheBase{
constructor(){
super();
this.prefix="wx_toekn_wx8aa8a8d4ff3da8bd";
this.restClient = system.getObject("util.restClient");
this.wxTokenSve = system.getObject("service.common.wxTokenSve");
}
desc() {
return "应用UI配置缓存";
}
prefix() {
return "wx_toekn_wx8aa8a8d4ff3da8bd";
}
async get(){//公众号appid
var key = this.prefix;
var result = await this.redisClient.get(key);
var obj = null;
if(result){
console.log(result,"缓存中获取token+++++++++++++++++++++++");
obj=JSON.parse(result);
}
if(!obj){//无缓存
var newobj = await this.wxTokenSve.getToken();
console.log(newobj);
if(newobj && newobj.access_token){
var newobjstring=JSON.stringify(newobj);
// await this.redisClient.set(key,newobjstring);
// this.redisClient.client.expire(key, 7000);
await this.redisClient.setWithEx(key,newobjstring,7000);
return newobj;
}else{
return null;
}
}
return obj;
}
}
module.exports=WxTokenCache;
\ No newline at end of file
const system = require("../../../system");
var settings = require("../../../../config/settings");
/**
* 微信token
* zhuangbing
* 2020.02.17
*/
class WxTokenService{
constructor(){
this.rc=system.getObject("util.execClient");
}
/**
* 获取微信access_token
* 返回结果:
* component_access_token 第三方平台access_token
* expires_in 有效期
*/
async getToken(){
try{
var url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx8aa8a8d4ff3da8bd&secret=5b64d43832cfd08327e9369aa455f799";
var rtn=await this.rc.execGet({},url);
console.log(rtn);
var result=JSON.parse(rtn.stdout);
return result;
}catch(e){
return null;
}
}
/**
* 获取微信getJsapiTicket
*/
async getJsapiTicket(access_token){
try{
var url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_token + "&type=jsapi";
var rtn=await this.rc.execGet({},url);
console.log(rtn);
var result=JSON.parse(rtn.stdout);
return result;
}catch(e){
return null;
}
}
}
module.exports=WxTokenService;
\ No newline at end of file
const system = require("../../../system");
const crypto = require('crypto');
var settings = require("../../../../config/settings");
class PolicyService{
constructor() {
this.centerOrderUrl = settings.centerOrderUrl();
this.execClient = system.getObject("util.execClient");
this.cacheManager = system.getObject("db.common.cacheManager");
};
// sha1加密
sha1(str) {
let shasum = crypto.createHash("sha1")
shasum.update(str)
str = shasum.digest("hex")
return str
}
/**
* 生成签名的时间戳
* @return {字符串}
*/
createTimestamp() {
return parseInt(new Date().getTime() / 1000) + ''
}
/**
* 生成签名的随机串
* @return {字符串}
*/
createNonceStr() {
return Math.random().toString(36).substr(2, 15)
}
/**
* 对参数对象进行字典排序
* @param {对象} args 签名所需参数对象
* @return {字符串} 排序后生成字符串
*/
raw(args) {
var keys = Object.keys(args)
keys = keys.sort()
var newArgs = {}
keys.forEach(function (key) {
newArgs[key.toLowerCase()] = args[key]
})
var string = ''
for (var k in newArgs) {
string += '&' + k + '=' + newArgs[k]
}
string = string.substr(1)
return string
}
async getWxSign(url){
try {
if(!url){
return system.getResult("url不能为空");
}
var tokenRes = await this.cacheManager["WxTokenCache"].get();
if(tokenRes && tokenRes.access_token){
var ticketRes = await this.cacheManager["WxJsapiTicketCache"].get(tokenRes.access_token);
if(ticketRes && ticketRes.ticket){
var ret = {
jsapi_ticket: ticketRes.ticket,
nonceStr: "zhengcepolicy",
timestamp: parseInt(new Date().getTime() / 1000),
url: url
};
var string = this.raw(ret)
ret.signature = this.sha1(string)
ret.appId = "wx8aa8a8d4ff3da8bd";
console.log('ret', ret)
return system.getResultSuccess(ret);
}
}
return system.getResult("获取微信配置参数失败");
} catch (e) {
return system.getResult(e.stack);
}
}
async policyQuery(pobj) {
var url = this.centerOrderUrl + "action/policy/springBoard";
var rtn = await this.execClient.execPost(pobj, url);
......
......@@ -4,6 +4,7 @@
1. [政策申请提报](#submitPolicyNeed)
1. [政策需求列表](#getPolicyNeedList)
1. [需求信息备注提交](#submitPolicyNeedNotes)
1. [获取微信签名信息](#getWxSign)
## **<a name="policyQuery"> 政策检索(H5)</a>**
[返回到目录](#menu)
......@@ -154,7 +155,6 @@
"requestId":"de04d31de8114cc78b5257c59ea31355"
}
```
## **<a name="submitPolicyNeedNotes"> 需求信息备注提交(后台页面)</a>**
[返回到目录](#menu)
##### URL
......@@ -183,4 +183,37 @@
"requestId":"0a4483b9b7ca4594b1bfc487d49746d2"
}
```
## **<a name="getWxSign"> 获取微信签名信息</a>**
[返回到目录](#menu)
##### URL
[/web/action/policy/springBoard]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 渠道执行的类型 actionType:getWxSign
``` javascript
{
"actionType": "getWxSign",
"actionBody": {
"url":"http://gsb.qifu.gongsibao.com/"//当前网页的URL,不包含#及其后面部分
}
}
```
#### 返回结果
```javascript
{
"status":0,
"msg":"success",
"data":{
"jsapi_ticket":"sM4AOVdWfPE4DxkXGEs8VJK3-61YVvRLBqI-KWT682YNCdxlqHtAFxuoVHbOtb_ZoLalzqMy0jD835ajBCINAw",
"nonceStr":"zhengcepolicy",
"timestamp":1582012108,
"url":"http://gsb.qifu.gongsibao.com/",
"signature":"269a120c2e47e6b324601fb6df40f932902d0ae7",
"appId":"wx8aa8a8d4ff3da8bd"
},
"requestId":"5dc78d501b6d42c2af0f157cb1cceb28"
}
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment