-
Notifications
You must be signed in to change notification settings - Fork 3
/
pay.js
36 lines (29 loc) · 1.11 KB
/
pay.js
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
const crypto = require('crypto')
const axios = require('axios')
/* eslint-disable camelcase */
const key = ''
const toQueryString = (obj) => Object.keys(obj)
.filter(key => key !== 'sign' && obj[key] !== undefined && obj[key] !== '')
.sort()
.map(key => {
if (/^http(s)?:\/\//.test(obj[key])) { return key + '=' + encodeURI(obj[key]) } else { return key + '=' + obj[key] }
})
.join('&')
const md5 = (str, encoding = 'utf8') => crypto.createHash('md5').update(str, encoding).digest('hex')
// 通用算法,适用于JS-SDK、收银台等模式,请参考文档配置,可适当增减参数。
let params = {
'body': '合同:小黄人测试',
'attach': '合同:小黄人测试',
'total_fee': 1,
'out_trade_no': 'FF6F8FB0114D4FAFA3B562BD89B897E8',
'openid': 'o7LFAwaFdmKH217MddWDDyYuv7Ms',
'mchid': '1519390541'
}
params = toQueryString(params)
console.log(params)
let url = 'https://payjs.cn/api/jsapi?' + params
params += '&key=' + key
const sign = md5(params).toUpperCase()
url += '&sign=' + sign
console.log(url)
axios.get(encodeURI(url)).then(r => console.log(r.data)).catch(err => console.log(err))