AlipayF2F-NodeJS
支付宝当面付NodeJS API.
如何使用
安装方式:
npm install alipay-ftof
express-example
为express的example项目, 您可以将config.js.tpl
复制为config.js
然后修改好您的当面付配置信息后直接使用.
5分钟快速了解
目前已实现的功能
createQRPay
: 预创建二维码支付宝订单, 当扫码后才是真创建订单.verifyCallback
: 支付宝回调验签.checkInvoiceStatus
: 使用商户订单号查询订单状况.checkInvoiceStatusWithAlipayTradeNo
: 使用使用支付宝订单号查询订单状况.refund
: 使用商户订单号请求退款操作.(guanbo)refundWithAlipayTradeNo
: 使用支付宝订单号请求退款操作.(guanbo)createBarCodePay
: 使用支付宝用户付款码付款.(CloudnuY)
屁话多!如何使用?
您先需要准备一个Object对象内部存放alipay的配置如下:
// config.js moduleexports = /* 以下信息可以在https://openhome.alipay.com/platform/appManage.htm查到, 不过merchantPrivateKey需要您自己生成 */ /* 应用AppID */ "appid": 0 /* 通知URL 接受支付宝异步通知需要用到 */ "notifyUrl": "" /* 公钥 和 私钥 的填写方式 */ "testPrivateKey": "-----BEGIN RSA PRIVATE KEY-----\n" + "公钥或私钥内容..." + "\n-----END RSA PRIVATE KEY-----" /* 应用RSA私钥 请勿忘记 -----BEGIN RSA PRIVATE KEY----- 与 -----END RSA PRIVATE KEY----- */ "merchantPrivateKey": "" /* 支付宝公钥 如果为注释掉会使用沙盒公钥 请勿忘记 -----BEGIN PUBLIC KEY----- 与 -----END PUBLIC KEY----- */ "alipayPublicKey": "" /* 支付宝支付网关 如果为注释掉会使用沙盒网关 */ "gatewayUrl": "";
注意!您需要生成RSA2公钥与私钥来配合本项目使用.
预创建订单
new
一个alipayf2f
对象并将刚刚的config.js
传入
var alipay_f2f = ;
然后就能使用createQRPay
肛出一个二维码来让用户扫了
alipay_f2f;
如果一切都是理想情况, 支付宝应该会返回code
为10000
的一段这样JSON:
这时您就可以直接把qr_code
中的字符串进行二维码化然后直接给用户扫就可以了!
用户扫码并支付
当用户付款后支付宝会发一个post请求到您设置的notifyUrl
.
你要想确认这个回调请求是不是支付宝的该如何判断? 不要慌有个方法叫verifyCallback
就能帮您鉴别是不是支付宝发送的了!
假设我们现在使用的是express, 并且notifyUrl
为http://example.com/callback
router;
需要注意的是当处理完支付宝回调后应当返回
success
来告诉支付宝我已经搞定了, 否则支付宝会重复通知防止掉单.
服务器网络暴毙? 没收到支付宝回调?
不要慌我给你实现了一个checkInvoiceStatus
方法.
这个方法呢可以给你手动查询订单状态. 使用起来也很方便, 只需要传入一个商户订单号
就行了:
alipay_f2f;
输出
使用用户付款码付款
var payment = // 商户订单号 tradeNo: Date + Math + 1 // 订单标题 subject: "女装" // 订单总金额 totalAmount: 100 // 支付授权码,25~30开头的长度为16~24位的数字,实际字符串长度以开发者获取的付款码长度为准 authCode: ""
响应
code: '10000' msg: 'Success' buyer_logon_id: 'yqu***@sandbox.com' buyer_pay_amount: '100.00' buyer_user_id: '2088102168717885' buyer_user_type: 'PRIVATE' fund_bill_list: amount: '100.00' fund_channel: 'ALIPAYACCOUNT' gmt_payment: '2017-11-25 14:32:10' invoice_amount: '100.00' open_id: '20880033278643371074141272412388' out_trade_no: '151159149052644861' point_amount: '0.00' receipt_amount: '100.00' total_amount: '100.00' trade_no: '2017112521001004880200394043'
使用商户订单号请求退款
var refund = /* 退款编号 可选 用于分批退款 */ refundNo: Date /* 退款金额 如果refundNo为空 refundAmount必须为订单全款 */ refundAmount: paymenttotalAmountappalipay_f2f;
响应
code: '10000' msg: 'Success' buyer_logon_id: 'hya***@sandbox.com' buyer_user_id: '2088102170322284' fund_change: 'Y' gmt_refund_pay: '2017-02-06 17:46:34' open_id: '20881013820906275677621172812028' out_trade_no: '1486372683551' refund_detail_item_list: amount: '100.00' fund_channel: 'ALIPAYACCOUNT' refund_fee: '100.00' send_back_fee: '100.00' trade_no: '2017020621001004280200150698'
测试
make test
测试需要您设置完毕express-example/config.js
文件. 测试过程中需要人工介入来 生成二维码 .
直接看看效果?
点这里 然后我也不介意您给我5毛的(: