/alipay

Alipay Node.js SDK 基于最新版蚂蚁金服 支付宝开发文档

Primary LanguageJavaScriptMIT LicenseMIT

alipay

NPM version Build Status David Status

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


安装

npm i alipay-mobile -S

基本使用

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

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'
}
return service.createOrder(data)
.then(result => {
  assert(result.code == 0, result.message)
  assert(result.message == 'success', result.message)
})

说明

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

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

{
  '0': 'success',
  '1': 'processing',
  '-1': 'error',
  '-2': 'permission denied',
  '-3': 'sign error'
}

接口返回格式

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

为了方便异步处理,所有接口均返回Promise


API 说明

创建订单createOrder

APP支付官方文档

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

const service = new Alipay(options)
const data = {
  subject: '辣条',
  out_trade_no: '1232423',
  total_amount: '100'
}
return service.createOrder(data)
.then(result => {
  assert(result.code == 0, result.message)
  assert(result.message == 'success', 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'
}
return service.createWebOrderURL(data, basicParams)
.then(result => {
  assert(result.code == 0, result.message)
  assert(result.message == 'success', 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'
}
return service.createPageOrderURL(data, basicParams)
.then(result => {
  assert(result.code == 0, result.message)
  assert(result.message == 'success', result.message)
})

订单查询queryOrder

订单查询官方文档

const outTradeNo = '1232423'
return service.queryOrder({ out_trade_no: outTradeNo })
.then(result => {
  assert(result.code == -1, result.message)
  assert(result.message == 'error', result.message)
  assert(result.data.code === '40004')
  assert(result.data.sub_msg === '交易不存在')
})

取消订单cancelOrder

取消订单官方文档

const outTradeNo = 'foobar'
return service.cancelOrder({ out_trade_no: outTradeNo })
.then(result => {
  assert(result.code == -1, result.message)
  assert(result.message == 'error', result.message)
  assert(result.data.code === '40004')
  assert(result.data.sub_msg === '交易不存在')
})

验证支付结果verifyPayment

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

异步通知校验makeNotifyResponse

异步通知官方文档

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

return service.makeNotifyResponse(params)

异步通知应答

在接收到蚂蚁金服服务器的订单状态变更通知之后,需要进行应答,有两种(成功、失败)应答类型:

import AlipayConfig from 'alipay-mobile/config'

console.log(AlipayConfig.ALIPAY_NOTIFY_SUCCESS) // 'success'

console.log(AlipayConfig.ALIPAY_NOTIFY_FAILURE) // 'failure'

交易关闭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