/**
* @author tudou527
* @email [tudou527@gmail.com]
*/
///
import AliPayForm from './form';
/**
* @interface AlipaySdkConfig SDK 配置
*/
export interface AlipaySdkConfig {
/** 应用ID */
appId: string;
/** 应用私钥字符串。RSA签名验签工具:https://docs.open.alipay.com/291/106097)*/
privateKey: string;
/** 签名种类 */
signType?: 'RSA2' | 'RSA';
/** 支付宝公钥(需要对返回值做验签时候必填) */
alipayPublicKey?: string;
/** 网关 */
gateway?: string;
/** 网关超时时间(单位毫秒,默认 5s) */
timeout?: number;
/** 是否把网关返回的下划线 key 转换为驼峰写法 */
camelcase?: boolean;
/** 编码(只支持 utf-8) */
charset?: 'utf-8';
/** api版本 */
version?: '1.0';
/** 指定 urllib 库 */
urllib?: any;
/** 指定private key类型, 默认: PKCS1, PKCS8: PRIVATE KEY, PKCS1: RSA PRIVATE KEY */
keyType?: 'PKCS1' | 'PKCS8';
/** 应用公钥证书文件路径 */
appCertPath?: string;
/** 应用公钥证书文件内容 */
appCertContent?: string | Buffer;
/** 应用公钥证书sn */
appCertSn?: string;
/** 支付宝根证书文件路径 */
alipayRootCertPath?: string;
/** 支付宝根证书文件内容 */
alipayRootCertContent?: string | Buffer;
/** 支付宝根证书sn */
alipayRootCertSn?: string;
/** 支付宝公钥证书文件路径 */
alipayPublicCertPath?: string;
/** 支付宝公钥证书文件内容 */
alipayPublicCertContent?: string | Buffer;
/** 支付宝公钥证书sn */
alipayCertSn?: string;
/** AES密钥,调用AES加解密相关接口时需要 */
encryptKey?: string;
/** 服务器地址 */
wsServiceUrl?: string;
}
export interface AlipaySdkCommonResult {
/** 响应码。10000 表示成功,其余详见 https://opendocs.alipay.com/common/02km9f */
code: string;
/** 响应讯息。Success 表示成功。 */
msg: string;
/** 错误代号 */
sub_code?: string;
/** 错误辅助信息 */
sub_msg?: string;
/** 请求返回内容,详见各业务接口 */
[key: string]: any;
}
export interface IRequestParams {
[key: string]: any;
/** 业务请求参数 */
bizContent?: Record;
/** 自动AES加解密 */
needEncrypt?: boolean;
}
export interface IRequestOption {
validateSign?: boolean;
log?: {
info(...args: any[]): any;
error(...args: any[]): any;
};
formData?: AliPayForm;
}
/**
* Alipay SDK for Node.JS
*/
declare class AlipaySdk {
private sdkVersion;
config: AlipaySdkConfig;
/**
* @class
* @param {AlipaySdkConfig} config 初始化 SDK 配置
*/
constructor(config: AlipaySdkConfig);
private formatKey;
private formatUrl;
private multipartExec;
/**
* 生成请求字符串,用于客户端进行调用
* @param {string} method 方法名
* @param {IRequestParams} params 请求参数
* @param {object} params.bizContent 业务请求参数
* @return {string} 请求字符串
*/
sdkExec(method: string, params: IRequestParams): string;
/**
* 生成网站接口请求链接或表单
* @param {string} method 方法名
* @param {IRequestParams} params 请求参数
* @param {object} params.bizContent 业务请求参数
* @param {string} params.method 后续进行请求的方法。如为 GET,即返回 http 链接;如为 POST,则生成表单 html
* @return {string} 请求链接或表单 HTML
*/
pageExec(method: string, params: IRequestParams & {
method?: 'GET' | 'POST';
}): string;
private _pageExec;
private notifyRSACheck;
/**
* @ignore
* @param originStr 开放平台返回的原始字符串
* @param responseKey xx_response 方法名 key
*/
getSignStr(originStr: string, responseKey: string): string;
exec(method: string, params?: IRequestParams, option?: Omit): Promise;
exec(method: string, params?: IRequestParams, option?: IRequestOption): Promise;
checkResponseSign(signStr: string, responseKey: string): boolean;
/**
* 通知验签
* @param {JSON} postData 服务端的消息内容
* @param {Boolean} raw 是否使用 raw 内容而非 decode 内容验签
* @return { Boolean } 验签是否成功
*/
checkNotifySign(postData: any, raw?: boolean): boolean;
}
export default AlipaySdk;