UNPKG

@cao-mei-you-ren/afdian

Version:

爱发电 SDK for Node.js and Browser

1 lines 4.21 kB
{"version":3,"sources":["../src/main.ts","../src/constants/api.ts","../src/utils/request.ts","../src/index.ts"],"sourcesContent":["import fetch from 'isomorphic-unfetch';\nimport api from './constants/api';\nimport { signRequest, buildRequest } from './utils/request';\nimport {\n AfdianClientOptions,\n AfdianRequestParams,\n AfdianResponse,\n AfdianOrderResponse,\n AfdianSponsorResponse,\n AfdianWebhookResponse\n} from './types';\n\nexport class Afdian {\n private readonly userId: string;\n\n private readonly token: string;\n\n constructor(opts: AfdianClientOptions) {\n const { userId, token } = opts;\n this.userId = userId;\n this.token = token;\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n private send(url: string, params?: AfdianRequestParams) {\n const signed = signRequest(this.token, buildRequest(this.userId, params));\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(signed)\n }).then((res) => res.json());\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n ping(): Promise<AfdianResponse> {\n return this.send(api.ping);\n }\n\n queryOrder(data: { page: number, per_page?: number, out_trade_no?: string }): Promise<AfdianOrderResponse> {\n return this.send(api.queryOrder, data);\n }\n\n querySponsor(data: { page: number, per_page?: number, user_id?: string }): Promise<AfdianSponsorResponse> {\n return this.send(api.querySponsor, data);\n }\n\n // eslint-disable-next-line class-methods-use-this\n webhookOrder(context: unknown): AfdianWebhookResponse | Promise<AfdianWebhookResponse> {\n return context as AfdianWebhookResponse;\n }\n}\n","const API_BASE = 'https://afdian.com/api/open';\n\nconst getUrl = (path: string): string => `${API_BASE}/${path}`;\n\nexport default {\n ping: getUrl('ping'),\n queryOrder: getUrl('query-order'),\n querySponsor: getUrl('query-sponsor')\n};\n","import md5 from 'crypto-js/md5';\nimport { AfdianRequestParams } from '../types';\n\nexport interface AfdianRequest {\n user_id: string;\n params?: string;\n ts: number;\n}\n\nexport interface AfdianSignedRequest {\n user_id: string;\n params?: string;\n ts: number;\n sign: string;\n}\n\nexport const buildRequest = (userId: string, params?: AfdianRequestParams): AfdianRequest => {\n const req = {\n user_id: userId,\n ts: Math.floor(Date.now() / 1000),\n params: JSON.stringify(params || { empty: true })\n };\n return req;\n};\n\nexport const signRequest = (token: string, body: AfdianRequest): AfdianSignedRequest => {\n const toSign = `${token}params${body.params}ts${body.ts}user_id${body.user_id}`;\n const sign = md5(toSign).toString();\n return {\n ...body,\n sign\n };\n};\n","import { Afdian } from './main';\n\nexport default Afdian;\nexport * from './main';\nexport * from './types';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;;;ACAlB,IAAM,WAAW;AAEjB,IAAM,SAAS,CAAC,SAAyB,GAAG,QAAQ,IAAI,IAAI;AAE5D,IAAO,cAAQ;AAAA,EACb,MAAM,OAAO,MAAM;AAAA,EACnB,YAAY,OAAO,aAAa;AAAA,EAChC,cAAc,OAAO,eAAe;AACtC;;;ACRA,OAAO,SAAS;AAgBT,IAAM,eAAe,CAAC,QAAgB,WAAgD;AAC3F,QAAM,MAAM;AAAA,IACV,SAAS;AAAA,IACT,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAAA,IAChC,QAAQ,KAAK,UAAU,UAAU,EAAE,OAAO,KAAK,CAAC;AAAA,EAClD;AACA,SAAO;AACT;AAEO,IAAM,cAAc,CAAC,OAAe,SAA6C;AACtF,QAAM,SAAS,GAAG,KAAK,SAAS,KAAK,MAAM,KAAK,KAAK,EAAE,UAAU,KAAK,OAAO;AAC7E,QAAM,OAAO,IAAI,MAAM,EAAE,SAAS;AAClC,SAAO,iCACF,OADE;AAAA,IAEL;AAAA,EACF;AACF;;;AFpBO,IAAM,SAAN,MAAa;AAAA,EAKlB,YAAY,MAA2B;AACrC,UAAM,EAAE,QAAQ,MAAM,IAAI;AAC1B,SAAK,SAAS;AACd,SAAK,QAAQ;AAAA,EACf;AAAA;AAAA,EAGQ,KAAK,KAAa,QAA8B;AACtD,UAAM,SAAS,YAAY,KAAK,OAAO,aAAa,KAAK,QAAQ,MAAM,CAAC;AACxE,WAAO,MAAM,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,KAAK,UAAU,MAAM;AAAA,IAC7B,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;AAAA,EAC7B;AAAA;AAAA,EAGA,OAAgC;AAC9B,WAAO,KAAK,KAAK,YAAI,IAAI;AAAA,EAC3B;AAAA,EAEA,WAAW,MAAgG;AACzG,WAAO,KAAK,KAAK,YAAI,YAAY,IAAI;AAAA,EACvC;AAAA,EAEA,aAAa,MAA6F;AACxG,WAAO,KAAK,KAAK,YAAI,cAAc,IAAI;AAAA,EACzC;AAAA;AAAA,EAGA,aAAa,SAA0E;AACrF,WAAO;AAAA,EACT;AACF;;;AGlDA,IAAO,gBAAQ;","names":[]}