Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

alipay-sdk

Package Overview
Dependencies
Maintainers
3
Versions
71
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

alipay-sdk - npm Package Compare versions

Comparing version 3.6.1 to 4.0.0-beta.0

dist/commonjs/alipay.d.ts

116

package.json
{
"name": "alipay-sdk",
"version": "3.6.1",
"description": "支付宝开放平台 Node.js SDK",
"main": "lib/alipay.js",
"version": "4.0.0-beta.0",
"publishConfig": {
"tag": "next",
"access": "public"
},
"description": "支付宝开放平台 Node.js SDK / Alipay OpenAPI SDK for Node.js",
"scripts": {
"build": "npm run tsc",
"tsc": "tsc -p ./tsconfig.json",
"tsc:watch": "tsc -w",
"clean": "tsc -b --clean",
"dev": "tsc -w",
"lint": "eslint .",
"test": "npm run build && mocha",
"ci": "npm run tsc && nyc mocha -t 6000",
"prepublishOnly": "npm run clean && npm run tsc"
"lint": "eslint src test --ext ts",
"test": "npm run lint -- --fix && egg-bin test",
"ci": "npm run lint && egg-bin cov && npm run prepublishOnly",
"prepublishOnly": "tshy && tshy-after"
},
"author": "dersoncheng",
"homepage": "https://github.com/ali-sdk/alipay-sdk",
"bugs": "https://github.com/ali-sdk/alipay-sdk/issues",
"license": "ISC",
"author": "fengmk2",
"homepage": "https://github.com/alipay/alipay-sdk-nodejs-all",
"bugs": "https://github.com/alipay/alipay-sdk-nodejs-all/issues",
"dependencies": {
"@fidm/x509": "^1.2.1",
"bignumber.js": "^9.0.0",
"camelcase-keys": "^4.2.0",
"crypto-js": "^4.0.0",
"decamelize": "^2.0.0",
"iconv-lite": "^0.4.24",
"is": "^3.2.1",
"is-json": "^2.0.1",
"lodash": "^4.17.20",
"moment": "^2.16.0",
"snakecase-keys": "^1.1.1",
"urllib": "^2.17.0"
"bignumber.js": "^9.1.2",
"camelcase-keys": "^7.0.2",
"crypto-js": "^4.2.0",
"formstream": "^1.4.0",
"snakecase-keys": "^8.0.0",
"urllib": "^3.25.0",
"utility": "^2.1.0"
},
"nyc": {
"extends": "@istanbuljs/nyc-config-typescript",
"include": [
"lib"
],
"extension": [
".ts"
],
"check-coverage": true,
"reporter": [
"text-summary",
"json",
"html"
],
"sourceMap": true
},
"engines": {
"node": ">=8.0.0"
"node": ">=18.0.0"
},
"devDependencies": {
"@istanbuljs/nyc-config-typescript": "^0.1.3",
"@types/node": "^18.16.3",
"eslint": "^8.35.0",
"eslint-config-egg": "^12.1.0",
"mocha": "^3.1.2",
"nyc": "^14.1.1",
"query-string": "^6.5.0",
"should": "^11.1.1",
"sinon": "^1.17.7",
"typescript": "^4.9.0"
"@eggjs/tsconfig": "^1.3.3",
"@types/crypto-js": "^4.2.2",
"@types/mocha": "^10.0.6",
"@types/node": "20",
"egg-bin": "^6.9.0",
"eslint": "8",
"eslint-config-egg": "13",
"git-contributor": "^2.1.5",
"mm": "^3.4.0",
"tshy": "^1.14.0",
"tshy-after": "^1.0.0",
"typescript": "5"
},
"repository": "git@github.com:alipay/alipay-sdk-nodejs-all.git"
"repository": "git@github.com:alipay/alipay-sdk-nodejs-all.git",
"license": "MIT",
"type": "module",
"tshy": {
"exports": {
"./package.json": "./package.json",
".": "./src/index.ts"
}
},
"exports": {
"./package.json": "./package.json",
".": {
"import": {
"types": "./dist/esm/index.d.ts",
"default": "./dist/esm/index.js"
},
"require": {
"types": "./dist/commonjs/index.d.ts",
"default": "./dist/commonjs/index.js"
}
}
},
"files": [
"dist",
"src"
],
"main": "./dist/commonjs/index.js",
"types": "./dist/commonjs/index.d.ts"
}

@@ -1,32 +0,61 @@

# Alipay SDK
# Alipay OpenAPI SDK
[![NPM version][npm-image]][npm-url]
[![CI](https://github.com/alipay/alipay-sdk-nodejs-all/actions/workflows/node.yml/badge.svg)](https://github.com/alipay/alipay-sdk-nodejs-all/actions/workflows/node.yml)
[![Test coverage][codecov-image]][codecov-url]
[![npm download][download-image]][download-url]
[npm-image]: https://img.shields.io/npm/v/alipay-sdk.svg?style=flat-square
[npm-url]: https://npmjs.org/package/alipay-sdk
[codecov-image]: https://codecov.io/github/alipay/alipay-sdk-nodejs-all/coverage.svg?branch=master
[codecov-url]: https://codecov.io/github/alipay/alipay-sdk-nodejs-all?branch=master
[download-image]: https://img.shields.io/npm/dm/alipay-sdk.svg?style=flat-square
[download-url]: https://npmjs.org/package/alipay-sdk
<a name="gK9UJ"></a>
## 简介
Alipay SDK for Node.js 用于给 Node 服务器提供调用支付宝开放平台的能力。包括向支付宝服务器发起 OpenAPI 请求、订单信息生成,以及配套的证书、加签和验签能力。
Alipay OpenAPI SDK for Node.js / 用于给 Node.js 服务器提供调用支付宝开放平台的能力。
包括向支付宝服务器发起 OpenAPI 请求、订单信息生成,以及配套的证书、加签和验签能力。
基于[支付宝 API v3 接口规范](https://opendocs.alipay.com/open-v3/054oog?pathHash=7834d743)实现。
<a name="qpkzt"></a>
## 环境要求
- 需要 Node.js 8 以上版本
- 安装依赖
> npm install alipay-sdk --save
- 需要 Node.js >= 18
安装依赖
```bash
npm install alipay-sdk --save
```
<a name="cBULc"></a>
## 平台配置
- 先前往[支付宝开发平台-开发者中心](https://openhome.alipay.com/platform/developerIndex.htm)完成开发者接入的一些准备工作,包括创建应用、为应用添加功能包、设置[应用的接口加签方式](https://opendocs.alipay.com/common/02kf5p)等。
- 可以使用 [支付宝开放平台秘钥工具](https://opendocs.alipay.com/common/02kipk) 获取所需的公私钥,并在平台上上传公钥。
- 本 SDK 默认采用 `PKCS1` 的格式解析密钥,与密钥工具的默认生成格式不一致。请使用密钥工具【格式转换】功能转为 `PKCS1`,或在本 SDK 初始化时显式指定 `keyType: 'PKCS8'`。
- 可以使用 [支付宝开放平台秘钥工具](https://opendocs.alipay.com/common/02kipk) 获取所需的公私钥,并在平台上上传公钥。
- 本 SDK 默认采用 `PKCS1` 的格式解析密钥,与密钥工具的默认生成格式不一致。请使用密钥工具【格式转换】功能转为 `PKCS1`,或在本 SDK 初始化时显式指定 `keyType: 'PKCS8'`。
- 在设置加签方式结束之后,记录必要信息用于初始化 SDK。
- 公钥证书模式(推荐): `appId`、`应用私钥`、`应用公钥证书文件`、`支付宝公钥证书文件`、`支付宝根证书文件`
- 公钥模式:`appId`、`应用私钥`、`应用公钥`、`支付宝公钥`
- 公钥证书模式(推荐): `appId`、`应用私钥`、`应用公钥证书文件`、`支付宝公钥证书文件`、`支付宝根证书文件`
- 公钥模式:`appId`、`应用私钥`、`应用公钥`、`支付宝公钥`
<a name="AgPWA"></a>
## 初始化 SDK
> 代码示例中的路径和文件名仅做示范,请根据项目实际读取文件所在的位置
> 请保存好私钥文件,避免信息泄露
- 代码示例中的路径和文件名仅做示范,请根据项目实际读取文件所在的位置
- 请保存好私钥文件,避免信息泄露
<a name="bKaOK"></a>
### 普通公钥模式
```typescript
const AlipaySdk = require('alipay-sdk');
// esmodule / typescript,可以使用 import AlipaySdk from 'alipay-sdk';
// 普通公钥模式
import { AlipaySdk } from 'alipay-sdk';
const alipaySdk = new AlipaySdk({

@@ -39,6 +68,9 @@ appId: '2016123456789012',

```
<a name="bPWCK"></a>
### 证书模式
```typescript
const AlipaySdk = require('alipay-sdk');
import { AlipaySdk } from 'alipay-sdk';

@@ -54,18 +86,26 @@ const alipaySdk = new AlipaySdk({

```
<a name="mHx2N"></a>
### 验证配置
可以使用如下基础接口请求服务端,以验证配置正确。具体的接口定义可以在[开放平台文档站](https://opendocs.alipay.com/open/54/103419)获取。
可以使用如下基础接口请求服务端,以验证配置正确。
具体的接口定义可以在[开放平台文档站](https://opendocs.alipay.com/open/54/103419)获取。
```typescript
// 小程序:生成二维码
const result = await alipaySdk.exec('alipay.open.public.qrcode.create');
let result = await alipaySdk.exec('alipay.open.public.qrcode.create');
// 生活号:基础信息查询
const result = await alipaySdk.exec('alipay.open.public.info.query');
result = await alipaySdk.exec('alipay.open.public.info.query');
// 第三方应用:查询应用授权信息。需要先给第三方应用授权:https://opendocs.alipay.com/isv/04h3ue
const result = await alipaySdk.exec('alipay.open.auth.token.app.query', {
// 第三方应用:查询应用授权信息
// 需要先给第三方应用授权:https://opendocs.alipay.com/isv/04h3ue
result = await alipaySdk.exec('alipay.open.auth.token.app.query', {
bizContent: { app_auth_token: 'token 请在开放平台上查询' }
});
```
如返回 JSON 格式内容,即说明配置成功。
```javascript

@@ -84,12 +124,17 @@ {

其余情况,如代码报错或者返回 html 代码,则说明未配置成功。
其余情况,如代码报错或者返回 `HTML` 代码,则说明未配置成功。
<a name="hfIbW"></a>
## 快速使用
<a name="Y6rw4"></a>
### exec 示例接口
用于向支付宝服务器发起请求。与具体接口相关的业务参数,需要放在 bizContent 中。
用于向支付宝服务器发起请求。与具体接口相关的业务参数,需要放在 `bizContent` 中。
```typescript
const result = await alipay.exec('alipay.trade.pay', {
notify_url: 'http://www.notify.com/notify', // 通知回调地址
notify_url: 'http://www.your-notify.com/notify', // 通知回调地址
bizContent: {

@@ -103,9 +148,16 @@ out_trade_no: '商家的交易码,需保持唯一性',

> 部分接口,如 [`alipay.system.oauth.token`](https://opendocs.alipay.com/open/05nai1),其请求参数不在 bizContent 中。具体可参考官网各接口定义。
**⚠️⚠️⚠️ 注意**:部分接口的请求参数不在 `bizContent` 中,
如 [`alipay.system.oauth.token`](https://opendocs.alipay.com/open/05nai1),
具体可参考官网各接口定义。
<a name="tPtNK"></a>
### 使用 AlipayFormData 配置表单
部分接口需要上传文件。SDK 内部封装了一个 Form 对象,用以在发起 multipart/form-data 请求时使用。以 [上传门店照片和视频接口](https://opendocs.alipay.com/apis/api_3/alipay.offline.material.image.upload) 为例:
### 使用 `AlipayFormData` 配置表单
部分接口需要上传文件。
SDK 内部封装了一个 `Form` 对象,用以在发起 `multipart/form-data` 请求时使用。
以 [上传门店照片和视频接口](https://opendocs.alipay.com/apis/api_3/alipay.offline.material.image.upload) 为例:
```typescript
const AlipayFormData = require('alipay-sdk/lib/form');
import { AlipayFormData } from 'alipay-sdk';

@@ -118,3 +170,2 @@ const formData = new AlipayFormData();

const result = await alipaySdk.exec(

@@ -130,8 +181,12 @@ 'alipay.offline.material.image.upload',

```
<a name="axe5B"></a>
### pageExec 示例接口
pageExec 方法主要是用于网站支付接口请求链接生成,传入前台访问输入密码完成支付,如电脑网站支付([alipay.trade.page.pay
](https://opendocs.alipay.com/open/028r8t?scene=22))等接口。
`pageExec` 方法主要是用于网站支付接口请求链接生成,传入前台访问输入密码完成支付,
如电脑网站支付 [alipay.trade.page.pay](https://opendocs.alipay.com/open/028r8t?scene=22) 等接口。
表单示例:
```typescript

@@ -144,6 +199,6 @@ const bizContent = {

total_amount: "0.01"
},
};
// 支付页面接口,返回 html 代码片段,内容为 Form 表单
const result = sdk.pageExec('alipay.trade.page.pay', {
// 支付页面接口,返回 HTML 代码片段,内容为 Form 表单
const html = sdk.pageExec('alipay.trade.page.pay', {
method: 'POST',

@@ -157,12 +212,13 @@ bizContent,

<form action="https://openapi.alipay.com/gateway.do?method=alipay.trade.app.pay&app_id=2021002182632749&charset=utf-8&version=1.0&sign_type=RSA2&timestamp=2023-02-28%2011%3A48%3A28&app_auth_token=202302BBbcfad868001a4df3bbfa99e8a6913F10&sign=j9DjDGgxLt3jbOQZy7q7Qu8baKWTl4hZlxOHa%2B46hC1djmFx%2FIyBqzQntPMurzz3f8efXJsalZz3nqZ9ClowCCxBfBvqE0cdzCDAeQ1GMgjd7dbWgjfNNcqKgmJPsIkLaHnP5vTvj%2BA27SqkeZCMbeVfv%2B4nYurXaFB9dNBtA%3D%3D" method="post" name="alipaySDKSubmit1677556108819" id="alipaySDKSubmit1677556108819">
<input type="hidden" name="alipay_sdk" value="alipay-sdk-nodejs-3.3.0" /><input type="hidden" name="biz_content" value="{&quot;out_trade_no&quot;:&quot;ziheng-test-eeee&quot;,&quot;product_code&quot;:&quot;QUICK_MSECURITY_PAY&quot;,&quot;subject&quot;:&quot;订单标题&quot;,&quot;total_amount&quot;:&quot;0.01&quot;,&quot;body&quot;:&quot;订单描述&quot;}" />
</form>
<input type="hidden" name="alipay_sdk" value="alipay-sdk-nodejs-3.3.0" />
<input type="hidden" name="biz_content" value="{&quot;out_trade_no&quot;:&quot;ziheng-test-eeee&quot;,&quot;product_code&quot;:&quot;QUICK_MSECURITY_PAY&quot;,&quot;subject&quot;:&quot;订单标题&quot;,&quot;total_amount&quot;:&quot;0.01&quot;,&quot;body&quot;:&quot;订单描述&quot;}" />
</form>
<script>document.forms["alipaySDKSubmit1677556108819"].submit();</script>
```
支付链接示例:
```ts
// 支付页面接口,返回支付链接,交由用户打开,会跳转至支付宝网站
const result = sdk.pageExec('alipay.trade.page.pay', {
const url = sdk.pageExec('alipay.trade.page.pay', {
method: 'GET',

@@ -174,10 +230,11 @@ bizContent,

// 返回示例:https://openapi.alipay.com/gateway.do?method=alipay.trade.app.pay&app_id=2021002182632749&charset=utf-8&version=1.0&sign_type=RSA2&timestamp=2023-02-28%2011%3A46%3A35&app_auth_token=202302BBbcfaf3bbfa99e8a6913F10&sign=TPi33NcaKLRBLJDofon84D8itMoBkVAdJsfmIiQDScEw4NHAklXvcvn148A2t47YxDSK0urBnhS0%2BEV%2BVR6h6aKgp931%2FfFbG1I3SAguMjMbr23gnbS68d4spcQ%3D%3D&alipay_sdk=alipay-sdk-nodejs-3.3.0&biz_content=blabla
```
<a name="Rw8WE"></a>
```
### sdkExec 示例接口
`sdkExec` 方法主要是服务端生成请求字符串使用的,不会直接支付扣款,需传值到客户端进行调用收银台输入密码完成支付,
如 App 支付接口 [alipay.trade.app.pay](https://opendocs.alipay.com/apis/api_1/alipay.trade.app.pay)。
<a name="Rw8WE"></a>
### sdkExec 示例接口
sdkExec 方法主要是服务端生成请求字符串使用的,不会直接支付扣款,需传值到客户端进行调用收银台输入密码完成支付,如 App 支付接口 [alipay.trade.app.pay](https://opendocs.alipay.com/apis/api_1/alipay.trade.app.pay)。
```typescript

@@ -194,3 +251,3 @@ // App 支付接口,生成请求字符串,

returnUrl: 'https://www.taobao.com'
})
});

@@ -213,24 +270,42 @@ // 返回支付宝客户端之后,在【小程序中】通过 my.tradePay 进行调用。

});
```
<a name="jFMMS"></a>
```
<a name="jFMMS"></a>
### 通知验签
部分接口会设置回调地址,用于支付宝服务器向业务服务器通知业务情况(如交易成功)等。此时业务服务应该验证该回调的来源安全性,确保其确实由支付宝官方发起。SDK 提供了对应的通知验签能力。
部分接口会设置回调地址,用于支付宝服务器向业务服务器通知业务情况(如交易成功)等。
此时业务服务应该验证该回调的来源安全性,确保其确实由支付宝官方发起。
SDK 提供了对应的通知验签能力。
```typescript
// 获取 queryObj,如 ctx.query, router.query
// 如服务器未将 queryString 转化为 object,需要手动转化
const queryObj = { sign_type: 'RSA2', sign: 'QfTb8tqE1BMhS5qAn.....', gmt_create: '2019-08-15 15:56:22', other_biz_field: '....' }
const queryObj = {
sign_type: 'RSA2',
sign: 'QfTb8tqE1BMhS5qAn.....',
gmt_create: '2019-08-15 15:56:22',
other_biz_field: '....',
}
// true | false
const signRes = sdk.checkNotifySign(queryObj);
const signResult = sdk.checkNotifySign(queryObj);
```
<a name="rgUZQ"></a>
## 问题反馈
如您在使用 Alipay SDK for Node.js 过程中遇到问题,欢迎前往 [支付宝开放社区](https://forum.alipay.com/mini-app/channel/1100001) 发帖与支付宝工作人员和其他开发者一起交流,或联系 [支付宝开放平台客服](https://linksprod.alipay.com/app/room/5fec1e8f69565405716ba28a/) 协助解决。
如您在使用 Alipay SDK for Node.js 过程中遇到问题,
欢迎前往 [支付宝开放社区](https://forum.alipay.com/mini-app/channel/1100001) 发帖与支付宝工作人员和其他开发者一起交流,
或联系 [支付宝开放平台客服](https://linksprod.alipay.com/app/room/5fec1e8f69565405716ba28a/) 协助解决。
<a name="TDdWH"></a>
## API
<a name="DS92L"></a>
### new AlipaySdk(config)
| Param | Type | Description |

@@ -240,5 +315,6 @@ | --- | --- | --- |

<a name="rHN3I"></a>
<a name="rHN3I"></a>
### AlipaySdkConfig
| 参数 | 说明 | 类型 | 必须 |

@@ -266,4 +342,4 @@ | --- | --- | --- | --- |

<a name="TxCzx"></a>
<a name="TxCzx"></a>
### alipaySdk.sdkExec(method, params) ⇒ `string`

@@ -282,2 +358,3 @@

<a name="wbKs5"></a>
### alipaySdk.pageExec(method, params) ⇒ `string`

@@ -296,4 +373,4 @@

<a name="igAmX"></a>
<a name="igAmX"></a>
### alipaySdk.exec(method, params, option) ⇒ `Promise.<(AlipaySdkCommonResult|string)>`

@@ -314,5 +391,6 @@

<a name="W4dEr"></a>
<a name="W4dEr"></a>
#### AlipaySdkCommonResult
响应结果

@@ -328,3 +406,5 @@

<a name="Hm0Qr"></a>
#### IRequestParams
请求参数

@@ -338,9 +418,12 @@

<a name="ekWqZ"></a>
### alipaySdk.checkNotifySign(postData, raw)
通知验签<br />**Returns**: `Boolean` - 是否验签成功
通知验签
**Returns**: `Boolean` - 是否验签成功
| Param | Type | Description |
| --- | --- | --- |
| postData | `JSON` | 服务端的消息内容 |
| raw | `Boolean` | 是否使用 raw 内容而非 decode 内容验签 |
| raw | `Boolean` | 是否使用 raw 内容而非 decode 内容验签 |
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc