const crypto = require('crypto');
const request = require('request');
const qs = require('qs');
let config = {
appId: '1234567890',
gatewayUrl: 'https://openapi.alipay.com/gateway.do',
privateKey: 'PKCS1(非JAVA适用)私钥',
publicKey: '支付宝公钥',
};
/**
* 定义业务参数
*/
let biz_content = {
create_start_time: '2017-11-30 00:00:01',
create_end_time: '2017-12-01 23:59:59',
page_num: 1,
page_size: 20
};
/**
* 定义公共参数
*/
let data = {
app_id: config.appId,
version: '1.0',
format: 'json',
sign_type: 'RSA2',
method: 'alipay.marketing.voucher.templatelist.query',
timestamp: "2017-12-06 11:52:01",
auth_token: '',
alipay_sdk: 'alipay-sdk-php-20161101',
charset: 'utf-8',
biz_content: JSON.stringify(biz_content),
app_auth_token: '授权给商户的token',
};
/**
* 参数排序,转换为字符串
*/
let params = [];
for(let name in data) {
let val = data[name];
if (name == 'sign' || !val) {
continue;
}
params.push(`${name}=${val}`);
}
let queryStr = params.sort().join('&');
/**
* sign加密处理
*/
let key = "-----BEGIN RSA PRIVATE KEY-----\n" +
(function() {
let arr = [];
let offset = 0;
while (true) {
let str = config.privateKey.substr(offset, 64);
if (str == '') {
break;
}
arr.push(str);
offset += 64;
}
return arr.join("\n");
})() +
"\n-----END RSA PRIVATE KEY-----";
let sign = crypto.createSign('RSA-SHA256');
sign.update(queryStr);
data.sign = sign.sign(key, 'base64');
/**
* 发送请求
*/
let url = config.gatewayUrl + '?' + qs.stringify(data);
request.get(url, function(e, response, res) {
console.log(res);
});
商户:授权,获得app auth token,创建优惠卷
用户:访问链接,根据merchant_pid,shop_id 获得优惠卷模版,发送优惠卷