n-pay

2.0.3 • Public • Published

支付服务

Build Status via Travis CI Coverage Status

目前支持连连支付、易宝支付、pp钱支付、闪豆支付、宝付支付、汇付托管支付。类似ping++

注意发布logs,新增汇付支付,函数传参有所不同

安装

npm install n-pay

初始化

var nPay = require('n-pay');
var PAY = nPay({
	appid:'your appid',
	appkey:'your appkey',
	serverDomain:'http://pay.kaolalicai.cn',
	npay_version:'1.0',
	npay_sign_type:'RSA',
	cryptoConfig:{
		'md5_key':'',//md5 key
		'des_key':'',//des key,24个字符长度
		'aes_key':'',//aes key,16个字符长度
		'merchant_pri_key':'',
		'npay_pub_key':''
	}
})
//appid,appkey请向广州财略金融信息科技有限公司申请

API

pay

query

getPayment

paySuccess

getStopNotifyData

获取支付内容(html或者url)

pay(paymentConfig,orderInfo,cb)

  • paymentConfig(object):支付渠道配置,配置channel和merchant_account,
  • orderInfo(object):订单信息,必须包含字段:'order_id','user_id','amount','trans_time','reg_time','return_url','notify_url','order_desc';idcard,card_no,acct_name为可选
  • cb(function):回调函数:err,data;data为objec,code为0时表示成功获取支付内容,data:支付内容,notify_url:服务异步回调地址(native app需要用到)
PAY.pay(
    {
        channel:'pay channel ,such as yeepay',
        merchant_account:'your pay channel account'
    },
    {
        'order_id':"abc_test",//订单id,长度必须小于等于32位
        'user_id':"abc_user",//用户在商户系统中的id
        'amount':0.01,//支付金额,元为单位
        'trans_time':Date.now(),//交易时间(时间戳)
        'reg_time':Date.now(),//用户在商户系统中的注册时间(时间戳)
        'return_url':"http://www.kaolalicai.cn",//支付结果跳转页(同步)
        'notify_url':"http://www.kaolalicai.cn",//支付结果通知地址(异步),只有支付成功才会像这个地址post数据
        'order_desc':"test pay",//订单描述
        'idcard':'',
        'card_no':'',
        'acct_name':'',
        'reg_phone':'user register phone'//用户在商户系统中注册的手机号(channel为ppwallet时必传)
    },
    function(err,data){
        if(!err && data.code === 0){
            //todo,这里为支付的内容(url或一段html的form表单)
            //web段使用例子:
            //var data = data.data;
            // if(/^http/.test(data)){
            //  window.location.href = data;
            // }else{
            //  document.getElementsByTagName('body')[0].innerHTML = data;
            //  document.forms[0].submit();
            // }
        }else{
            //todo,请求失败
        }
    }
)

查询订单是否支付成功

query(paymentConfig,queryInfo,cb)

  • paymentConfig(object):支付渠道配置,配置channel和merchant_account,
  • queryInfo(object):订单信息,必须包含字段:'order_id',
  • cb(function):回调函数:err,data;data为objec,code为0时表示订单支付成功。

需要注意的是,pp钱包目前没有查询订单的接口,当code为-2时,需要去pp钱包后台确认订单最终支付情况。

PAY.query(
    {
        channel:'pay channel ,such as yeepay',
        merchant_account:'your pay channel account'
    },
    {
        'order_id':"abc_test"
    },
    function(err,data){
        if(!err){
            if(data.code === 0){
                //todo,支付成功,商户可以进行订单更新或者发货了。
            }else if(data.code === -2){
                //todo,支付成功,但是需要去第三方支付平台确认最终支付情况。
            }else{
                //todo.支付不成功。
            }
        }else{
            //todo,请求失败
        }
    }
)

获取系统中支持的支付渠道

getPayment(cb)

  • 返回结果为json格式数据
  • 返回json包含字段code,data,code 为0表示获取成功,其他则为失败。data为string
PAY.getPayment(
    function(err,data){
        if(!err){
            if(data.code){
                console.log(data.data);//string ,'yeepay,llpay,ppwallet'
            }
        }
    }
)

回调处理(格式为json,包涵sign和ciphertext字段)

异步回调(post请求,带有参数sign,ciphertext)

同步回调(get请求,带有参数sign,ciphertext)

解密后的数据plaintext:plaintext.pay_result为字符串0表示支付成功

var parseData = PAY.paySuccess(sign,ciphertext,npay_sign_type);
if(parseData.success){
    //todo,可以发货了
    //订单详细信息,parseData.plaintext
    //res.send(PAY.getStopNotifyData())
}
 

终止回调

res.send(PAY.getStopNotifyData())

当商户接收回调后,返回一段非空字符串,比如success将会终止回调

## 发布logs
  • npay_version:2.0

    2.0以上版本支持汇付支付,npay_version传值2.0

    新增字段pageType(页面类型,pc或者移动),merPriv商户私有域

    获取终止异步回调的字符串需传入第三方返回的原始数据,即接口:getStopNotifyData

    汇付支付的时候需要传用户在汇付开户的用户客户号,即third_user_id字段,对应汇付原始字段UsrCustId

    为适配汇付订单查询,查询接口新增字段queryTransType,充值订单为SAVE,提现订单为CASH

    购买接口原路返回第三方支付的回调结果,字段名:origin,数据格式为json字符串(商户需自己调用JSON.parse进行解析).

Package Sidebar

Install

npm i n-pay

Weekly Downloads

24

Version

2.0.3

License

ISC

Last publish

Collaborators

  • navyxie