微信支付签名算法(JavaScript版)

MD5算法参考
另外可能存在的问题:似乎没有测试中文(utf8编码)

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
const MD5 = hex_md5 // http://pajhome.org.uk/crypt/md5/md5.html

const openid = 'oUpF8EMuAJO_M2Xxb1Q3zNjWeS33'

const params = {
appid: "wxd9309a5d2a258f31",
mch_id: "10000100",
device_info: "WEB",
body: "JSAPI支付测试",
notify_url: 'httts://www.google.com/',
openid: openid,
out_trade_no: '100000000001',
spbill_create_ip: '111.194.196.105',
total_fee: '1',
trade_type: 'JSAPI',
nonce_str: getNonceStr(),
}

const body = genRequstBody(params)
console.log(body)

// ----------- genRequstBody
function genRequstBody(params) {
const stringA = Object.keys(params).sort().map(k => {
return k + '=' + params[k]
}).join('&')

console.log(stringA)

const stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key
const sign = MD5(stringSignTemp).toUpperCase() // ="9A0A8659F005D6984697E2CA0A9CF3B7" //注:MD5签名方式

console.log(sign)

let body = Object.keys(params).sort().map(k => {
return '<' + k + '>' + params[k] + '</' + k + '>'
}).join('\n')
body += '\n<sign>' + sign + '</sign>\n'
const xml = '<xml>\n' + body + '</xml>'
return xml
}

// ----------- nonce_str
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}

function getNonceStr() {
return makeid(31)
}

阅读全文

NginX反向代理配置

参考
官网文档

阅读全文

微信小程序中换行

使用<text>标签,换行的地方使用\n表示。

例子:

1
2
3
4
<text>
1. 第一行\n
2. 第儿行
<text>

阅读全文

403 Forbidden

今天看v2ex上的一个帖子,点其中一个链接进去后是403,看下面也有人评论这个,有人说复制地址到浏览器地址栏再打开,一试果然行。看来有些时候的403应该是检查Refer给出的,直接访问倒不限制。

阅读全文

怎样在一张图片上叠加图标

通过把父容器设置为position: relative,再对图标元素设置position: absolute; top: 10px; right: 10px;即可。参考

阅读全文

CSS渐变

背景渐变效果。参考MDN

1
background: linear-gradient(blue, pink);

阅读全文

打算写的文章

阅读全文

怎样给Hexo中的文章添加图片

参考1 参考2(官网)

阅读全文

fail2ban

之前也注意到Azure的虚拟机内容使用量比较高,是一个叫fail2ban的程序,查询得知是安全相关,有22端口开放,有人暴力测试登陆ssh。于是改了端口号,重启了fail2ban

之前的htop结果:

阅读全文

文件去重思考

之前同学的NAS积累了大量的素材,总量当初超过64T,现在已经超过100T,因为考虑到有很多文件重复,希望可以帮忙去重来节省点空间。

2017年年底那时候的想法是通过全文Hash记录每个文件的Hash,组建一个DB,之后每加入一个文件,算Hash然后跟DB比对,如果Hash一致再进行全文对比。尺寸、创建/修改时间可以拿来作为前置条件可以避免Hash耗时。

阅读全文