@liuhlightning/wx-pay
Version:
communicate to wx pay
135 lines • 4.73 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WxPay = void 0;
const axios_1 = __importDefault(require("axios"));
const fs_1 = require("fs");
const lib_1 = require("./lib");
const nonceStr_1 = require("./util/nonceStr");
const timestamp_1 = require("./util/timestamp");
/**
* 微信支付
*/
class WxPay {
constructor(param) {
this.baseURL = "https://api.mch.weixin.qq.com";
/**
* 构造鉴权字符串
*/
this.buildAuthorization = lib_1.buildAuthotization;
/**
* 签名
*/
this.sign = lib_1.sign;
/**
* 检查签名
*/
this.checkSignature = lib_1.checkSignature;
/**
* 解密, 使用APIv3密钥
*/
this.decrypto = lib_1.decrypto;
/**
* 加密, 使用微信支付公钥
*/
this.encrypto = lib_1.encrypto;
/**
* 解密, 使用商户API私钥
*/
this.decryptoByPrivateKey = lib_1.decryptoByPrivateKey;
/**
* jsapi下单 小程序下单
*/
this.postTransactionJsApi = lib_1.postTransactionJsApi;
/**
* app下单
*/
this.postTransactionApp = lib_1.postTransactionApp;
/**
* h5下单
*/
this.postTransactionH5 = lib_1.postTransactionH5;
/**
* native下单
*/
this.postTransactionNative = lib_1.postTransactionNative;
/**
* 构造处理支付通知函数
*/
this.notifyTransactionBuilder = lib_1.notifyTransactionBuilder;
/**
* 处理支付通知
*/
this.notifyTransaction = this.notifyTransactionBuilder();
/**
* 查询订单
*/
this.queryTransaction = lib_1.queryTransaction;
/**
* 关闭订单
*/
this.closeTransaction = lib_1.closeTransaction;
/**
* 退款
*/
this.refundTransaction = lib_1.refundTransaction;
/**
* 构造退款通知处理函数
*/
this.notifyTransactionRefundBuilder = lib_1.notifyTransactionRefundBuilder;
/**
* 退款通知处理
*/
this.notifyTransactionRefund = this.notifyTransactionRefundBuilder();
/**
* 查询退款
*/
this.queryRefund = lib_1.queryRefund;
const { appId, apiv3Key, mchId, notifyUrl, wxPayPublicKeyPath, privateKeyPath, certSerial, supportFapiao = false, baseURL, timeout = 10000, axiosConfig = {}, debug = false, } = param;
this.appId = appId;
this.apiv3Key = apiv3Key;
this.mchId = mchId;
this.notifyUrl = notifyUrl;
this.wxPayPublicKey = (0, fs_1.readFileSync)(wxPayPublicKeyPath, "utf-8");
this.privateKey = (0, fs_1.readFileSync)(privateKeyPath, "utf-8");
this.certSerial = certSerial;
this.supportFapiao = supportFapiao;
if (baseURL)
this.baseURL = baseURL;
// axios
this.service = axios_1.default.create({
...axiosConfig,
baseURL: this.baseURL,
timeout,
});
this.service.interceptors.request.use((config) => {
const { method, url, data, params } = config;
config.headers.set("Authorization", this.buildAuthorization(url ?? "", method ?? "get", params, (0, timestamp_1.timestamp)(), (0, nonceStr_1.nonceStr)(), data));
config.headers.set("serial_no", this.certSerial);
return config;
});
this.request = this.service.request;
// debug
this.debug = debug;
if (this.debug) {
this.service.interceptors.request.use((config) => {
console.debug("wx pay request url ", config.url);
console.debug("wx pay request method ", config.method);
console.debug("wx pay request params ", config.params);
console.debug("wx pay request headers ", config.headers);
console.debug("wx pay request data ", config.data);
return config;
});
this.service.interceptors.response.use((res) => {
console.debug("wx pay response status ", res.status);
console.debug("wx pay response headers", res.headers);
console.debug("wx pay response data ", res.data);
return res;
});
}
}
}
exports.WxPay = WxPay;
//# sourceMappingURL=index.js.map