npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ali-pay

v0.0.3

Published

Alipay payments SDK

Downloads

5

Readme

ali-pay

支付宝支付SDK。

Usage

npm install -S ali-pay
const fs = require('fs')
const path = require('path')
const Alipay = require('ali-pay')
const api = new Alipay({
  appId: '',
  publicKey: fs.readFileSync(path.join(__dirname, '/public_key.pem')),
  privateKey: fs.readFileSync(path.join(__dirname, '/private_key.pem'))
})

api.pagePay({
  subject: 'Iphone 7',
  totalAmount: '6799'
}, (err, result) => {
  if (err) {
    return console.error(err)
  }
  console.log(result)
})

new Alipay(options)

返回Alipay实例对象。

options 配置对象

| 名称 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | appId | string | 是 | APPID 即创建应用后生成。 | | publicKey | string | 是 | 开发者公钥,由开发者自己生成。 传入公钥的内容。 | | privateKey | string | 是 | 开发者私钥,由开发者自己生成。 传入私钥的内容。 | | charset | string | 否 | 请求使用的编码格式,如utf-8,gbk,gb2312等。默认utf-8。 | | signType | string | 否 | 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2。默认为RSA2。 | | sandbox | boolean | 否 | 是否沙箱测试。默认false |

Alipay 实例方法

pay

收银员使用扫码设备读取用户手机支付宝“付款码”/声波获取设备(如麦克风)读取用户手机支付宝的声波信息后,将二维码或条码信息/声波信息通过本接口上送至支付宝发起支付。

options 对象属性

| 名称 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | subject | string | 是 | 订单标题 | | authCode | string | 否 | 支付授权码,25~30开头的长度为16~24位的数字,实际字符串长度以开发者获取的付款码长度为准 | | notifyUrl | string | 否 | 支付宝服务器主动通知商户服务器里指定的页面http/https路径。 | | appAuthToken | string | 否 | 详见应用授权概述 | | outTradeNo | string | 否 | 商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复 | | scene | string | 否 | 支付场景条码支付,取值:bar_code声波支付,取值:wave_code。默认为bar_code | | productCode | string | 否 | 销售产品码 | | buyerId | string | 否 | 买家的支付宝用户id,如果为空,会从传入了码值信息中获取买家ID | | sellerId | string | 否 | 如果该值为空,则默认为商户签约账号对应的支付宝用户ID | | totalAmount | string | 否 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] 如果同时传入【可打折金额】和【不可打折金额】,该参数可以不用传入; 如果同时传入了【可打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【可打折金额】+【不可打折金额】 | | discountableAmount | string | 否 | 参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]。 如果该值未传入,但传入了【订单总金额】和【不可打折金额】,则该值默认为【订单总金额】-【不可打折金额】 | | body | string | 否 | 订单描述 | | goodsDetail | string | 否 | 订单包含的商品列表信息,Json格式,其它说明详见商品明细说明 | | operatorId | string | 否 | 商户操作员编号 | | storeId | string | 否 | 商户门店编号 | | terminalId | string | 否 | 商户机具终端编号 | | extendParams | string | 否 | 业务扩展参数 | | timeoutExpress | string | 否 | 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m |

返回

| 名称 | 类型 | 描述 | | --- | --- | --- | | err | error | 错误对象 | | result | object | 结果对象 |

result 对象

| 名称 | 类型 | 描述 | | --- | --- | --- | | code | string | 网关返回码,详见文档 | | msg | string | 网关返回码描述,详见文档 | | sub_code | string | 业务返回码,详见文档 | | sub_msg | string | 业务返回码描述,详见文档 | | sign | string | 签名,详见文档 | | trade_no | string | 支付宝交易号 | | out_trade_no | string | 商户订单号 | | buyer_logon_id | string | 买家支付宝账号 | | total_amount | number | 交易金额 | | receipt_amount | string | 实收金额 | | buyer_pay_amount | number | 买家付款的金额 | | point_amount | number | 使用积分宝付款的金额 | | invoice_amount | number | 交易中可给用户开具发票的金额 | | gmt_payment | string | 交易支付时间 | | fund_bill_list | object | 交易支付使用的资金渠道 | | card_balance | number | 支付宝卡余额 | | store_name | string | 发生支付交易的商户门店名称 | | buyer_user_id | string | 买家在支付宝的用户id | | discount_goods_detail | string | 本次交易支付所使用的单品券优惠的商品优惠信息 | | voucher_detail_list | object | 本交易支付时使用的所有优惠券信息 |

pagePay

电脑网站支付

options 参数

| 名称 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | totalAmount | string | 是 | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | | subject | string | 是 | 订单标题 | | outTradeNo | string | 否 | 商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复。默认为当前时间戳 + 6位随机数。 | | body | string | 否 | 订单描述。 | | goodsDetail | string | 否 | 订单包含的商品列表信息,Json格式,详见商品明细说明。 | {"show_url":"https://www.alipay.com"} | | passbackParams | string | 否 | 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝只会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝。 | | extendParams | string | 否 | 业务扩展参数,详见业务扩展参数说明。 {"sys_service_provider_id":"2088511833207846"} | | goodsType | string | 否 | 商品主类型:0—虚拟类商品,1—实物类商品(默认) 注:虚拟类商品不支持使用花呗渠道 | | timeoutExpress | string | 否 | 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。该参数在请求到支付宝时开始计时。 | | enablePayChannels | string | 否 | 可用渠道,用户只能在指定渠道范围内支付当有多个渠道时用“,”分隔注:与disablePayChannels互斥 | | disablePayChannels | string | 否 | 禁用渠道,用户不可用指定渠道支付当有多个渠道时用“,”分隔注:与enable_pay_channels互斥 | | authToken | string | 否 | 针对用户授权接口,获取用户相关数据时,用于标识用户授权关系 | | qrPayMode | string | 否 | PC扫码支付的方式,支持前置模式和跳转模式。前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以 iframe 方式请求支付宝页面。具体分为以下几种:0:订单码-简约前置模式,对应 iframe 宽度不能小于600px,高度不能小于300px;1:订单码-前置模式,对应iframe 宽度不能小于 300px,高度不能小于600px;3:订单码-迷你前置模式,对应 iframe 宽度不能小于 75px,高度不能小于75px;4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。2:订单码-跳转模式 | | qrcodeWidth | string | 否 | 商户自定义二维码宽度 注:qr_pay_mode=4时该参数生效 |

商品明细说明

| 名称 | 类型 | 最大长度 | 必填 | 描述 | | --- | --- | --- | --- | --- | | show_url | string | 400 | 否 | 商品的展示地址。 |

业务扩展参数说明

| 名称 | 类型 | 最大长度 | 必填 | 描述 | | --- | --- | --- | --- | --- | | sys_service_provider_id | string | 64 | 否 | 系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID |

可用渠道

| 渠道名称 | 说明 | | --- | --- | | balance | 余额 | | moneyFund | 余额宝 | | coupon | 红包 | | pcredit | 花呗 | | pcreditpayInstallment | 花呗分期 | | creditCard | 信用卡 | | creditCardExpress | 信用卡快捷 | | creditCardCartoon | 信用卡卡通 | | credit_group | 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期) | | debitCardExpress | 借记卡快捷 | | mcard | 商户预存卡 | | pcard | 个人预存卡 | | promotion | 优惠(包含实时优惠+商户优惠) | | voucher | 营销券 | | point | 积分 | | mdiscount | 商户优惠 | | bankPay | 网银 |

页面回跳参数

对于PC网站支付的交易,在用户支付完成之后,支付宝会根据API中商户传入的return_url参数,通过GET请求的形式将部分支付结果参数通知到商户系统。

公共参数

| 名称 | 类型 | 最大长度 | 必填 | 描述 | 示例 | | --- | --- | --- | --- | --- | --- | | app_id | String | 是 | 32 | 支付宝分配给开发者的应用ID | 2016040501024706 | | method | String | 是 | 128 | 接口名称 | alipay.trade.page.pay.return | | sign_type | String | 是 | 10 | 签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 | RSA2 | | sign | String | 是 | 256 | 支付宝对本次支付结果的签名,开发者必须使用支付宝公钥验证签名 | 详见示例 | | charset | String | 是 | 10 | 编码格式,如utf-8,gbk,gb2312等 | utf-8 | | timestamp | String | 是 | 19 | 前台回跳的时间,格式"yyyy-MM-dd HH:mm:ss" | 2016-08-11 19:36:01 | | version | String | 是 | 3 | 调用的接口版本,固定为:1.0 | 1.0 | | auth_app_id | String | 是 | 32 | 授权方的appid 注:由于本接口暂不开放第三方应用授权,因此auth_app_id=app_id | 2016040501024706 |

业务参数

| 名称 | 类型 | 最大长度 | 必填 | 描述 | 示例 | | --- | --- | --- | --- | --- | --- | | out_trade_no | String | 是 | 64 | 商户网站唯一订单号 | 70501111111S001111119 | | trade_no | String | 是 | 64 | 该交易在支付宝系统中的交易流水号。最长64位。 | 2016081121001004630200142207 | | total_amount | Price | 是 | 9 | 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 | 9.00 | | seller_id | String | 是 | 16 | 收款支付宝账号对应的支付宝唯一用户号。 以2088开头的纯16位数字 | 2088111111116894 |

页面回跳示例

https://m.alipay.com/GkSL?total_amount=0.10&timestamp=2016-11-02+18%3A34%3A19&sign=G3WI0czviMAOzS5t0fYaDgK32sGpjkkXYVFTpYMtgX8JaXLiGiUTO%2F2IHogcCFT96jBCLZ6IsNzd%2BmxkB%2FRuwG%2F7naQk1qReuORMkrB5cpBf9U40bIUoCmSNqtANsTE2UPV7GKegYG2RqoCRScTmeFAFHj5L7zsM%2BLuYb9mqN3g%3D&trade_no=2016110221001004330228438026&sign_type=RSA2&auth_app_id=2014073000007292&charset=UTF-8&seller_id=2088411964605312&method=alipay.trade.page.pay.return&app_id=2014073000007292&out_trade_no=20150g320g010101001&version=1.0 

verify

验签接口。

参数

| 名称 | 类型 | 必填 | 描述 | | --- | --- | --- | --- | | options | object or string | 是 | 支付宝 POST 到notify_url的主体数据。格式是application/x-www-form-urlencoded可以直接传入或格式化成object后传入。 |

返回值

返回truefalse