Skip to content

Latest commit

 

History

History
365 lines (268 loc) · 7.71 KB

README.md

File metadata and controls

365 lines (268 loc) · 7.71 KB

alipay

NPM version Build Status David Status

蚂蚁金服开放平台Node.js SDK。


安装

npm i alipay-mobile -S

基本使用

const fs = require('fs')
const Alipay = require('alipay-mobile').default

const read = filename => {
  return fs.readFileSync(path.resolve(__dirname, filename))
}
//notify_url: 异步通知url
//app_id: 开放平台 appid
//appPrivKeyFile: 你的应用私钥
//alipayPubKeyFile: 蚂蚁金服公钥
const options = {
  app_id: '2016080100137766',
  appPrivKeyFile: read('./keys/app_priv_key.pem'),
  alipayPubKeyFile: read('./keys/alipay_public_key.pem')
}

const service = new Alipay(options)
const data = {
  subject: '辣条',
  out_trade_no: '1232423',
  total_amount: '100'
}
const result = service.createOrder(data)
assert(result.code == 0, result.message)

说明

详细参数请参考接口对应的官方文档

构造函数支持的参数

export interface AlipayOption {
  appPrivKeyFile:   string      // 应用私钥
  alipayPubKeyFile: string      // 支付宝公钥
  appId:            string      // 应用ID
  notifyUrl?:       string      // 支付宝异步通知URL
  gatewayUrl?:      string      // 接口网关地址
}

接口返回错误码以及错误信息

export enum AlipayNormalResponseCode {
  OK                            = 0,
  EXCEPTION                     = -1,
  SIGNATURE_ERROR               = -2,
  SUCCESS                       = 10000,
  UNAVALIABLE                   = 20000,
  INSUFFICIENT_AUTHORIZATION    = 20001,
  MISSING_REQUIRED_ARGS         = 40001,
  INVALID_ARGS                  = 40002,
  PROCESSING_FAILURE            = 40004,
  PERMISSION_DENIED             = 40006
}

export enum AlipayPaymentResponseCode {
  SUCCESS         = '9000',
  PROCESSING      = '8000',
  FAILURE         = '4000',
  REPEAT_REQ      = '5000',
  USER_CANCEL     = '6001',
  NETWORK_ERROR   = '6002',
  UNKNOW          = '6004'
}

接口返回格式

{
  code: 错误码,
  message: 错误信息,
  data: 蚂蚁金服返回的原始数据//可能为空对象
}

功能列表

  • 创建订单
  • 取消订单
  • 订单查询
  • 验证支付状态
  • 订单状态异步推送
  • 预创建订单
  • 申请退款
  • 退款查询
  • 交易结算
  • 关闭交易
  • 账单下载地址查询
  • 单笔转账到支付宝账户

API 说明

创建订单createOrder

APP支付官方文档

用于返回给APP,传递给支付宝端发起交易申请

const service = new Alipay(options)
const data = {
  subject: '辣条',
  out_trade_no: '1232423',
  total_amount: '100'
}
const result = service.createOrder(data)
assert(result.code == 0, result.message)
//result.data 用于返回给APP,传递给支付宝端发起交易申请

创建网页订单createWebOrderURL

手机网页支付官方文档

该接口用于支付宝手机网页支付,服务端调用该接口生成一个URL返回给客户端, 客户端拿到该URL之后跳转到该URL发起支付请求。支付结束支付宝会跳转到客户端填写的return_url

const service = new Alipay(options)
const data = {
  subject: '辣条',
  out_trade_no: '1232423',
  total_amount: '100'
}
const basicParams = {
  return_url: 'http://xxx.com'
}
const result = service.createWebOrderURL(data, basicParams)
assert(result.code == 0, result.message)

创建pc端订单createPageOrderURL

创建pc端订单官方文档

const service = new Alipay(options)
const data = {
  subject: '辣条',
  out_trade_no: '1232423',
  total_amount: '100'
}
const basicParams = {
  return_url: 'http://xxx.com'
}
const result = service.createPageOrderURL(data, basicParams)
assert(result.code == 0, result.message)

订单查询queryOrder

订单查询官方文档

const outTradeNo = '1232423'
return service.queryOrder({ out_trade_no: outTradeNo })
.then(result => {
  assert(result.code == '40004', result.message)
})

取消订单cancelOrder

取消订单官方文档

const outTradeNo = 'foobar'
return service.cancelOrder({ out_trade_no: outTradeNo })
.then(result => {
  assert(result.code == '40004', result.message)
})

验证支付结果verifyPayment

App支付同步通知参数校验

const params = {
  memo: "xxxx",
  result: "xxxx",
  resultStatus: "xxx"
}
return utils.verifyPayment(params)

异步通知校验makeNotifyResponse

异步通知官方文档

const params = {
  sign: 'xxxxxxxx',
  sign_type: 'xxxxx',
  ...
}

return service.makeNotifyResponse(params)

交易关闭tradeClose

关闭交易官方文档

const params = {
  out_trade_no: 'xxxxx'
}
return service.tradeClose(params)

交易退款tradeRefund

交易退款官方文档

const params = {
  out_trade_no: 'xxxxx'
}
return service.tradeRefund(params)

交易退款查询tradeRefundQuery

交易退款查询官方文档

const params = {
  out_trade_no: 'xxxxx'
}
return service.tradeRefundQuery(params)

查询账单下载地址billDownloadQuery

查询账单下载地址文档

const params = {
  bill_type: 'trade',
  bill_date: '2017-05-06'
}
return service.billDownloadQuery(params)

交易预创建tradePrecreate

交易预创建官方文档

const params = {
  out_trade_no: 'xxx',
  seller_id: 'asad',
  total_amount: '231wawsda',
  subject: '面包'
}
return service.tradePrecreate(params)

交易结算tradeSettle

交易结算官方文档

const params = {
  out_request_no: 'xxx'
}
return service.tradeSettle(params)

单笔转账到支付宝账户接口toaccountTransfer

接口文档

const params = {
  out_biz_no: "1234",
  payee_type: 'ALIPAY_LOGONID',
  payee_account: "user666",
  amount: "100"
}

return service.toaccountTransfer(params)

LICENSE

MIT