Git Product home page Git Product logo

alipay-crypto's Introduction

alipay-crypto

支付宝加解密 nodejs 版本

NPM version Codacy Badge tree shaking typescript Test coverage npm download License

Sonar

Installation

# use pnpm
$ pnpm i alipay-crypto

# use yarn
$ yarn add alipay-crypto

Usage

1. Nodejs require

const AlipayCrypto = require('alipay-crypto')

const alipayCrypto = new AlipayCrypto({ privateKey: 'xxxxxx' })

const data = {
  app_id: '20135234674',
  method: 'alipay.system.oauth.token',
  sign_type: 'RSA2',
  version: '1.0',
  charset: 'utf-8',
  timestamp: '2023-07-29 14:50:22',
  grant_type: 'authorization_code',
  biz_content: ''
}

const initial = alipayCrypto.serializedParams(data) // 'app_id=20135234674&charset=utf-8&grant_type=authorization_code&method=alipay.system.oauth.token&sign_type=RSA2&timestamp=2023-07-29 14:50:22&version=1.0'
const sign = alipayCrypto.encrypt(initial)
// or
const sign = alipayCrypto.encrypt(data)

2. ES6 module

import AlipayCrypto from 'alipay-crypto'

const alipayCrypto = new AlipayCrypto({ privateKey: 'xxxxxx' })

Configuration

active debug mode

const alipayCrypto = new AlipayCrypto({ privateKey: 'xxxxxx', debug: true })

Types

declare class AlipayCrypto<T extends Options = Options> {
  defaults: PickPartial<OauthCommonOptions, 'app_id' | 'sign' | 'timestamp'>
  options: T
  constructor(options: T)
  serializedParams(data: SignOptions, encrypt?: boolean): string
  encrypt(initial: string, privateKey?: string): string
  encrypt<T extends SignOptions = SignOptions>(initial: T, privateKey?: string): string
  md5<T extends Record<string, unknown> = Record<string, unknown>>(data: string | T): string
}
export default AlipayCrypto

export declare interface OauthCodeOptions {
  grant_type: 'authorization_code'
  code: string
}

export declare interface OauthCommonOptions {
  app_id: string
  method: 'alipay.system.oauth.token'
  format?: 'JSON'
  charset: 'utf-8' | 'gbk' | 'gb2312'
  sign_type: 'RSA' | 'RSA2'
  sign: string
  timestamp: string
  version: '1.0' | string
  app_auth_token?: string
}

export declare type OauthOptions = OauthCodeOptions | OauthRefreshOptions

export declare interface OauthRefreshOptions {
  grant_type: 'refresh_token'
  refresh_token: string
}

export declare type PickPartial<T, K extends keyof T> = {
  [P in K]?: T[P]
} & Omit<T, K>

export declare type SerializeParams = Omit<Required<SignOptions>, 'sign'>

export declare interface SignOptions extends OauthCommonOptions {
  biz_content?: string
}

Support & Issues

Please open an issue here.

License

MIT

alipay-crypto's People

Contributors

saqqdy avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.