1.1.0 • Published 5 months ago

@nuecms/alipay-sdk v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

Alipay SDK

A flexible and lightweight SDK for building Alipay integrations with dynamic endpoints, caching, and response transformations.

npm GitHub GitHub issues GitHub pull requests


Introduction

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.

Requirements

  • Node.js >= 18.0.0

Features

  • Pre-configured API endpoints for Alipay's platform
  • Support for Redis and in-memory caching
  • Easy extensibility

Table of Contents


Installation

Install the SDK using pnpm or yarn:

pnpm add @nuecms/alipay-sdk
# or
yarn add @nuecms/alipay-sdk

Quick Start

1. Import and Initialize the 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'
});

2. Register API Endpoints

sdk.r('getUser', '/users/{id}', 'GET');
sdk.r('createUser', '/users', 'POST');

3. Make API Calls

const user = await sdk.getUser({ id: '12345' });
console.log(user);

More

See the testing code in the tests folder.

Example:


Usage Examples

Registering Endpoints

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');

Making API Calls

Call the registered endpoints dynamically with placeholders and additional options:

const userDetails = await sdk.getUser({ id: '12345' });

console.log(userDetails);

Demo Examples

Using exec

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);

Using curl

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);

Using pageExecute for GET

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);

Using pageExecute for POST

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);

Differences from Official SDK

Feature Comparison

FeatureOfficial SDKThis SDK
Dynamic EndpointsNoYes
CachingNoYes
Response TransformationsNoYes
Server-Sent Events (SSE)YesNo
Form Data SubmissionsYesNo

API Comparison

API MethodOfficial SDKThis SDK
execYesYes
curlYesYes
pageExecuteYesYes
checkNotifySignYesYes
aesEncryptNoYes
aesDecryptNoYes
signatureYesYes
signatureV3NoYes
getSignStrNoYes

Configuration Comparison

Configuration OptionOfficial SDKThis SDK
appIdYesYes
privateKeyYesYes
alipayPublicKeyYesYes
signTypeYesYes
endpointYesYes
timeoutYesYes
camelcaseYesNo
keyTypeYesYes
appCertPathYesNo
appCertContentYesNo
appCertSnYesNo
alipayRootCertPathYesNo
alipayRootCertContentYesNo
alipayRootCertSnYesNo
alipayPublicCertPathYesNo
alipayPublicCertContentYesNo
alipayCertSnYesNo
encryptKeyNoYes
maxRetriesNoYes
cacheProviderNoYes
customResponseTransformerNoYes
authCheckStatusNoYes
wsServiceUrlYesNo

Contributing

We welcome contributions to improve this SDK! To get started:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-name).
  3. Commit your changes (git commit -m "Add feature X").
  4. Push to the branch (git push origin feature-name).
  5. Open a pull request.

License

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.

1.1.0

5 months ago

1.0.0

8 months ago