1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/TheNorthMemory-whats-alipay

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Платёжная система Alipay OpenAPI SDK

Yet Another Alipay OpenAPI Smart Development Kit

GitHub actions GitHub issues GitHub release Vulnerabilities NPM module version NPM module downloads per month NPM module license

Основные функции

  • OOP-стилизованный, масштабируемый платёжный Alipay OpenAPI SDK;
  • Низкая зависимость, в настоящее время зависит только от Axios;
  • Использование кода Node для реализации функций шифрования и дешифрования AES (aes-128-cbc) для Alipay OpenAPI;
  • Использование кода Node для реализации функций подписи и проверки RSA (sha1WithRSAEncryption) и RSA2 (sha256WithRSAEncryption) для Alipay OpenAPI;
  • Асинхронное уведомление о проверке сообщений;
  • Инструмент взаимодействия с сетевым шлюзом командной строки.

Соглашения SDK

  • Используйте method({запрос параметров}[, {общие параметры запроса}[, {специальные параметры заголовка}]]) в качестве драйвера HTTP-интерфейса. Это означает:
    • Интерфейсные общие параметры запроса метода используются как стандартная цепочка методов SDK, которая является масштабируемой. Пример использования метода см. ниже. Подробные сведения см. в конце статьи.
    • Параметры запроса интерфейса определяются как объект Object.
    • Общие параметры запроса интерфейса также определяются как объект Object.
    • Для загрузки изображений или видео необходимо определить информацию заголовка multipart/form-data, которая определяется как третий параметр объекта Object. Пример см. ниже.
    • Для форм страниц, то есть так называемых интерфейсов класса page, третий параметр должен быть определён как Formatter.page. Результаты могут быть непосредственно выведены на страницу/интерфейс. См. пример ниже.
  • Подписание данных запроса и проверка данных ответа выполняются автоматически. Разработчикам нужно только сосредоточиться на бизнес-коде. В частности, если результат проверки зависит от ситуации, его можно получить из заголовка ответа:
    • headers[x-alipay-verified] — результат проверки, который может быть ok или undefined;
    • headers[x-alipay-signature] — исходное значение подписи данных ответа, которое может быть undefined;
    • headers[x-alipay-responder] — перевод имени поля исходного ответа, который может быть undefined, error или фактическим значением метода запроса.

Руководство по использованию

Инструмент командной строки whatsCli

Используйте командную строку для взаимодействия с OpenAPI gateway.

$ ./node_modules/.bin/whatsCli -h (click to toggle display)
Usage: cli.js [options]

Options:
  -k, --privateKey  The privateKey pem file path                                                              [required]
  -p, --publicCert  The publicCert pem file path                                                              [required]
  -m, --method      The method, eg: alipay.trade.query                                                        [required]
  -s, --search      The search parameters, eg: search.app_id=2088                                             [required]
  -b, --biz         The biz_content, eg: biz.out_trade_no=abcd1234                                            [required]
  -d, --log         Turn on the request trace log                                                              [boolean]
  -u, --baseURL     The OpenAPI gateway, eg: https://openapi.alipaydev.com/gateway.do
  -h, --help        Show help                                                                                  [boolean]
  -V, --version     Show version number                                                                        [boolean]

Examples:
  cli.js -k merchant.key -p alipay.pub -m alipay.trade.pay      The Face2Face barCode scenario
  -s.app_id=2088 -b.subject=HelloKitty
  -b.out_trade_no=Kitty0001 -b.scene=bar_code
  -b.total_amount=0.01 -b.auth_code=
  cli.js -k merchant.key -p alipay.pub -m alipay.trade.refund   The trade refund scenario
  -s.app_id=2087 -b.refund_amount=0.01 -b.refund_currency=CNY
  -b.out_trade_no=Kitty0002
  cli.js -d -u https://openapi.alipaydev.com/gateway.do -k      The trade query scenario over the sandbox environment
  merchant.key -p alipay.pub -m alipay.trade.query              with trace logging
  -s.app_id=2089 -b.out_trade_no=Kitty0003

Командный инструмент certHelper

$ ./node_modules/.bin/certHelper -h (click to toggle display)
Usage: cert.js [command] [options]

Commands:
  cert.js SN       Get the certificatie(s) `SN`                 [default]
  cert.js extract  Extract the
``` **Цепочка сертификатов (chained certificate(s))**

*Опции:*
  -f, --file — путь к файлу сертификата (требуемый)
  -p, --pattern — префикс или суффикс алгоритма, точка (.) для всех
  -h, --help — показать справку
  -V, --version — показать номер версии

Примеры:*
cert.js SN -f alipayRootCert.crt — получить сертификат sha256 (по умолчанию) SN
cert.js SN -f alipayRootCert.crt -p ec — получить сертификат с подписью, содержащей слова «ec»
cert.js SN -f alipayRootCert.crt -p . — получить все связанные сертификаты SN
cert.js extract -f alipayRootCert.crt — извлечь сертификат sha256 (по умолчанию)
cert.js extract -f alipayRootCert.crt -p sha1 — извлечь сертификат sha1
cert.js extract -f alipayRootCert.crt -p . — извлечь все связанные сертификаты
cert.js extract -f alipayRootCert.crt -p sha1 | openssl x509 — передать команду openssl x509
-noout -text
cert.js extract -f alipayRootCert.crt -p sha1 > tmp.pem — сохранить в файл

Этот инструмент командной строки используется для расчёта и получения необходимых публичных сертификатов приложения (*app_cert_sn*) и публичных сертификатов платёжной системы Alipay (*alipay_root_cert_sn*).

>./bin/cert.js SN -f /path/your/app_cert.crt
>./bin/cert.js SN -f /path/your/alipay_root_cert.crt -p RSAEncryption

Команда SN является синтаксическим сахаром для Helpers.SN и может быть просмотрена в API документации.

### Инициализация

```javascript
const { Alipay, Rsa } = require('whats-alipay');

// Приложение app_id
const app_id = '2014072300007148';

// Торговый ключ RSA, входящий параметр — это строка BASE64, полученная из официального инструмента
const privateKey = Rsa.fromPkcs1('MIIEpAIBAAKCAQEApdXuft3as2x...');
// Вышеприведённый код является синтаксическим сахаром, формат: 'private.pkcs1://' + 'полученная строка'
// const privateKey = Rsa.from('private.pkcs1://MIIEpAIBAAKCAQEApdXuft3as2x...');
// Node10 поддерживает только следующий способ, необходимо убедиться, что private_key.pem имеет полный формат X509
// const privateKey = require('fs').readFileSync('/your/openapi/private_key.pem');

// Публичный ключ RSA от Alipay, входящий параметр — это строка BASE64, полученная из официального инструмента
const publicKey = Rsa.fromSpki('MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg...');
// Вышеприведённый код является синтаксическим сахаром, формат: 'public.spki://' + 'полученная строка'
// const publicKey = Rsa.from('public.spki://MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg...');
// Node10 поддерживает только следующий способ, необходимо убедиться, что public_key.pem имеет полный формат X509
// const publicKey = require('fs').readFileSync('/the/alipay/public_key.pem');

const whats = new Alipay({ privateKey, publicKey, params: { app_id, } });

Запрос на транзакцию по торговому счёту

whats
  .alipay.trade.query({out_trade_no})
  .then(({headers,data}) => ({headers,data}))
  .catch(({response: {data}}) => data)
  .then(console.log)
$ console.log sample result (click to toggle display)
{
  headers: {
    server: 'Tengine/2.1.0',
    date: 'Fri, 25 Sep 2020 03:27:32 GMT',
    'content-type': 'text/html;charset=utf-8',
    'content-length': '829',
    connection: 'close',
    'set-cookie': [
      'JSESSIONID=6FF6F65BB1EC785992117C95EA7C27BB; Path=/; HttpOnly',
      'spanner=ubOmkyHGnYLtouOsffShT4n70pJgSji6Xt2T4qEYgj0=;path=/;secure;'
    ],
    via: 'spanner-internet-5396.sa127[200]',
    'x-alipay-responder': 'alipay.trade.query',
    'x-alipay-signature': 'gALtsKSWEWRG4wSx8==',
    'x-alipay-verified': 'ok'
  },
  data: {
    code: '10000',
    msg: 'Success',
    buyer_logon_id: '134******38',
    buyer_pay_amount: '183.00',
    buyer_user_id: '2088101117955611',
    fund_bill_list: [ { amount: '183.00', fund_channel: 'ALIPAYACCOUNT' } ],
    invoice_amount: '183.00',
    out_trade_no: '6823789339978248',
    point_amount: '0.00',
    receipt_amount: '183.00',
    send_pay_date: '2020-09-19 17:00:28',
    total_amount: '183.00',
    trade_no: '2013112011001004330000121536',
    trade_status: 'TRADE_SUCCESS'
  }
}

Платёжный интерфейс по торговому счёту

whats
  .alipay.trade.pay({
    out_trade_no,
    scene,
    auth_code,
    product_code,
    subject,
    total_amount,
  })
  .then(({data}) => data)
  .catch(({response: {data}}) => data)
  .then(console.log)

Предварительное создание транзакции по торговому счёту

В тексте запроса не удалось найти информацию о предварительном создании транзакции по торговому счёту. ``` whats .alipay.trade.precreate({ out_trade_no, subject, total_amount, }) .then(({data}) => data) .catch(({response: {data}}) => data) .then(console.log);


**Интерфейс создания предварительного торгового запроса Alipay**

whats .alipay.trade.wap.pay({ out_trade_no, subject, total_amount, product_code, quit_url, }, {}, Formatter.page) .then(res => res) .then(console.log);


**Интерфейс оплаты через веб-приложение Alipay**

whats .alipay.trade.page.pay({ out_trade_no, subject, total_amount, product_code, }, {return_url}, Formatter.page) .then(res => res) .then(console.log);


**Интерфейс оплаты с помощью страницы оформления заказа Alipay**

whats .alipay.trade.advance.consult({/文档上的参数就好/}) .then(({data}) => data) .catch(({response: {data}}) => data) .then(console.log);


**Запрос списка маркетинговых кампаний Koubei**

whats .koubei.marketing.campaign.activity.batchquery(/文档上的参数就好/) .then(({data}) => data) .catch(({response: {data}}) => data) .then(console.log);


**API для оплаты > Загрузка изображений**

```javascript
const { Multipart } = require('whats-alipay');
const form = new Multipart();
form.append(
  'image_content',
  require('fs').readFileSync('/path/for/uploading.jpg'),
  'uploading.jpg'
);

whats
  .ant.merchant.expand.indirect.image.upload(
    form.getBuffer(),
    {image_type: 'jpg'},
    {...form.getHeaders()}
  )
  .then(({data}) => data)
  .catch(({response: {data}}) => data)
  .then(console.log);

API магазина > Загрузка фотографий и видео в магазин

const { Multipart } = require('whats-alipay');
const form = new Multipart();
form.append(
  'image_content',
  require('fs').readFileSync('/path/for/uploading.jpg'),
  'uploading.jpg'
);

whats
  .alipay.offline.material.image.upload(
    form.getBuffer(),
    {image_type: 'jpg', image_name: 'uploading.jpg'},
    {...form.getHeaders()}
  )
  .then(({data}) => data)
  .catch(({response: {data}}) => data)
  .then(console.log);

Zhima API для проверки кредитоспособности > Запрос авторизации

whats
  .zhima.auth.info.authquery(/*文档上的参数就好*/)
  .then(({data}) => data)
  .catch(({response: {data}}) => data)
  .then(console.log);

Сервис для владельцев автомобилей > Интерфейс входа транспортного средства

whats
  .alipay.eco.mycar.parking.enterinfo.sync(/*文档上的参数就好*/)
  .then(({data}) => data)
  .catch(({response: {data}}) => data)
  .then(console.log);

Финансовый API > Односторонний перевод средств

whats
  .alipay.fund.trans.uni.transfer(/*文档上的参数就好*/)
  .then(({data}) => data)
  .catch(({response: {data}}) => data)
  .then(console.log);

Введение

Аплай Alipay OpenAPI SDK. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/TheNorthMemory-whats-alipay.git
git@api.gitlife.ru:oschina-mirror/TheNorthMemory-whats-alipay.git
oschina-mirror
TheNorthMemory-whats-alipay
TheNorthMemory-whats-alipay
master