A flexible and lightweight SDK for building Alipay integrations with dynamic endpoints, caching, and response transformations.
Alipay SDK for Node.js provides the ability to call Alipay Open Platform APIs from a Node.js server. It includes making OpenAPI requests to Alipay servers, generating order information, and supporting certificate, signing, and verification capabilities.
Based on the Alipay API v3 specification.
- Node.js >= 18.0.0
- Pre-configured API endpoints for Alipay's platform
- Support for Redis and in-memory caching
- Easy extensibility
- Alipay SDK
Install the SDK using pnpm
or yarn
:
pnpm add @nuecms/alipay-sdk
# or
yarn add @nuecms/alipay-sdk
import { alipaySdk } from '@nuecms/alipay-sdk';
const sdk = alipaySdk({
appId: 'your-app-id',
privateKey: 'your-private-key',
alipayPublicKey: 'your-alipay-public-key',
encryptKey: 'your-encrypt-key'
});
sdk.r('getUser', '/users/{id}', 'GET');
sdk.r('createUser', '/users', 'POST');
const user = await sdk.getUser({ id: '12345' });
console.log(user);
See the testing code in the tests
folder.
Example:
Register endpoints with their HTTP method, path, and dynamic placeholders (e.g., {id}
):
sdk.r('getUser', '/users/{id}', 'GET');
sdk.r('deleteUser', '/users/{id}', 'DELETE');
sdk.r('createUser', '/users', 'POST');
Call the registered endpoints dynamically with placeholders and additional options:
const userDetails = await sdk.getUser({ id: '12345' });
console.log(userDetails);
const response = await sdk.exec("alipay.trade.pay", {
bizContent: {
out_trade_no: "20150320010101001",
total_amount: "88.88",
subject: "Iphone6 16G",
auth_code: "287500643347427217",
scene: "bar_code",
},
needEncrypt: true
});
console.log(response);
const response = await sdk.curl('POST', '/v3/alipay/trade/pay', {
body: {
"out_trade_no": "20250320221010101001",
"total_amount": "88.88",
"subject": "Iphone6 16G",
// 二维码
"auth_code": "287960314702463767",
"scene": "bar_code"
}
});
console.log(response);
const paymentUrl = await sdk.pageExecute('alipay.trade.page.pay', 'GET', {
bizContent: {
out_trade_no: "202503121220010101001",
total_amount: "88.88",
subject: "Iphone6+16G",
product_code: "FAST_INSTANT_TRADE_PAY",
}
});
console.log(paymentUrl);
const formHtml = await sdk.pageExecute('alipay.trade.page.pay', 'POST', {
bizContent: {
out_trade_no: "202503111120010101001",
total_amount: "88.88",
subject: "Iphone6+16G PostTest",
product_code: "FAST_INSTANT_TRADE PAY",
},
});
console.log(formHtml);
Feature | Official SDK | This SDK |
---|---|---|
Dynamic Endpoints | No | Yes |
Caching | No | Yes |
Response Transformations | No | Yes |
Server-Sent Events (SSE) | Yes | No |
Form Data Submissions | Yes | No |
API Method | Official SDK | This SDK |
---|---|---|
exec |
Yes | Yes |
curl |
Yes | Yes |
pageExecute |
Yes | Yes |
checkNotifySign |
Yes | Yes |
aesEncrypt |
No | Yes |
aesDecrypt |
No | Yes |
signature |
Yes | Yes |
signatureV3 |
No | Yes |
getSignStr |
No | Yes |
Configuration Option | Official SDK | This SDK |
---|---|---|
appId |
Yes | Yes |
privateKey |
Yes | Yes |
alipayPublicKey |
Yes | Yes |
signType |
Yes | Yes |
endpoint |
Yes | Yes |
timeout |
Yes | Yes |
camelcase |
Yes | No |
keyType |
Yes | Yes |
appCertPath |
Yes | No |
appCertContent |
Yes | No |
appCertSn |
Yes | No |
alipayRootCertPath |
Yes | No |
alipayRootCertContent |
Yes | No |
alipayRootCertSn |
Yes | No |
alipayPublicCertPath |
Yes | No |
alipayPublicCertContent |
Yes | No |
alipayCertSn |
Yes | No |
encryptKey |
No | Yes |
maxRetries |
No | Yes |
cacheProvider |
No | Yes |
customResponseTransformer |
No | Yes |
authCheckStatus |
No | Yes |
wsServiceUrl |
Yes | No |
We welcome contributions to improve this SDK! To get started:
- Fork the repository.
- Create a new branch (
git checkout -b feature-name
). - Commit your changes (
git commit -m "Add feature X"
). - Push to the branch (
git push origin feature-name
). - Open a pull request.
This SDK is released under the MIT License. You’re free to use, modify, and distribute this project. See the LICENSE
file for more details.