0.2.2 • Published 8 years ago

x-wapllpay v0.2.2

Weekly downloads
3
License
ISC
Repository
github
Last release
8 years ago

连连支付-WAP SDK

连连支付回调

异步回调是post请求,以字节流的方式回送数据。 成功支付的同步回调是post请求,以字节流的方式回送数据。 支付失败直接get请求url_return的地址

注意:目前只接入了wap端的实名认证支付功能,新增RSA加密方式,目前SDK支持RSA以及MD5两种加密方式,新增加订单查询接口 若只是接入连连的IOS,Android SDK,也可直接使用本SDK进行数据验证**

API

getPrepositPayHtml

paySuccess

getStopNotifyData

verify

doQuery

创建订单,异步回调数据解析以及同步回调数据解析

var express = require('express');
var app = express();
var webllpay = require('wapllpay');
var intiData = {
	oid_partner:"",//商户ID,连连后台查看
	key:"",//MD5加密key,连连后台查看
	notify_url:'http://****/webllpay/notify_url',//异步返回地址
	url_return:'http://****/webllpay/url_return',//同步返回地址		
	yt_pub_key:"",//连连公钥
	trader_pri_key:"",//商户私钥
	sign_type:"RSA"//签名方式
}
var initWebllpay = new webllpay(intiData);//实例化
//支付demo 
app.get('/webllpay',function(req,res){
	var testData = {
		user_id:'',//该用户在商户系统中的唯一编号,要求是该编号在商户系统中唯一标识该用户
		no_order:'',//商户系统唯一订单号
		dt_order:'',//商户订单时间,格式:YYYYMMDDH24MISS,14 位数字,精确到秒
		money_order:'0.01',//交易金额,该笔订单的资金总额,单位为 RMB-元。号交易金额大于 0 的数字,精确到小数点后两位。如:49.65
		id_no:'',//证件号码,身份证,18位
		acct_name:'',//银行账号姓名
		card_no:"",
		risk_item:"",//用户注册时间,YYYYMMDDH24MISS,14 位数字,精确到秒
		no_agree:''//绑定卡支付有就传,体验超赞,需要联系连连技术开通,默认不返回,这个值开通后,会在异步回调那里返回该值
	}
	//连连支付api,参数正确会返回表单html
	var html = initWebllpay.getPrepositPayHtml(testData);
	console.log('html:'+html);
	res.send(html);
});
//连连同步回掉以post方式发送字节流
app.post('/webllpay/url_return',function(req,res){
	var body = '';
	//注意:以字节流方式接收数据
	req.on('data',function(chunk){
		//console.log(Buffer.isBuffer(chunk))
		body += chunk
	});
	req.on('end',function(){
		console.log(body);
		var result = webllpay.UTIL.resStringToJSON(body);
		initWebllpay.paySuccess(result,function(err,data){
			if(!err && data.code === 0){
				//已完成支付
				//data
				{ 
					code: 0,
					msg: 'ok',
					data: 
					{ 
						dt_order: '',
						money_order: '0.01',
						no_order: '',
						oid_partner: '',
						oid_paybill: '',
						result_pay: 'SUCCESS',
						settle_date: '20150804',
						sign: 'dkAF4lGGgvwQLB+xhyPbqrPz+QAZikwA2ldCvR1dY5Tem4p+G8TO7jpP0OQgAqX3vYy7s1vHl/5wLT6O2r3t0wNIX/PrAxOl9+QTpb624QQoWXb+xsyAzm+RxojHbww3xNy7BoE23wqOjihaEDkYxiTIDSPOb/LIwOfqQhY8vJ8=',
						sign_type: 'RSA' 
					} 
				}
			}
		});	
  	})
});
//连连异步回掉以post方式发送字节流
app.post('/webllpay/notify_url',function(req,res){
	//注意:以字节流方式接收数据
	var body = '';
	req.on('data',function(chunk){
		//console.log(Buffer.isBuffer(chunk))
		body += chunk
	});
	req.on('end',function(){
		console.log(body);
		var result = webllpay.UTIL.resStringToJSON(body);
		initWebllpay.paySuccess(result,function(err,data){
			if(!err && data.code === 0){
				//已完成支付
				//data
				{ 
					code: 0,
					msg: 'ok',
					data: 
					{ 
						acct_name: '',
						bank_code: '',
						dt_order: '',
						id_no: '',
						id_type: '0',
						info_order: '考拉理财,开启懒人理财生活。',
						money_order: '0.01',
						no_agree: '',
						no_order: 'navy_test1438681106977',
						oid_partner: '',
						oid_paybill: '',
						pay_type: 'D',
						result_pay: 'SUCCESS',
						settle_date: '20150804',
						sign: '884e233450e0ca20ee351c37f5b63eee',
						sign_type: 'MD5' 
					} 
				}
			}
			//注意,这里必须返回固定的json数据给连连
			res.send(initWebllpay.getStopNotifyData());
		});	
  	})
});
//连连支付失败后的同步返回地址,get请求
app.get('/webllpay/url_return',function(req,res){
	res.send('支付失败了');
});

创建订单,异步或者同步回调数据解析以及同步回调数据解析

//连连异步回掉以post方式发送字节流
app.post('/webllpay/notify_url',function(req,res){
	//注意:以字节流方式接收数据
	var body = '';
	req.on('data',function(chunk){
		//console.log(Buffer.isBuffer(chunk))
		body += chunk
	});
	req.on('end',function(){
		console.log(body);
		var result = webllpay.UTIL.resStringToJSON(body);
		initWebllpay.paySuccess(result,function(err,data){
			if(!err && data.code === 0){
				//已完成支付
				//data
				{ 
					code: 0,
					msg: 'ok',
					data: 
					{ 
						acct_name: '',
						bank_code: '',
						dt_order: '',
						id_no: '',
						id_type: '0',
						info_order: '考拉理财,开启懒人理财生活。',
						money_order: '0.01',
						no_agree: '',
						no_order: 'navy_test1438681106977',
						oid_partner: '',
						oid_paybill: '',
						pay_type: 'D',
						result_pay: 'SUCCESS',
						settle_date: '20150804',
						sign: '884e233450e0ca20ee351c37f5b63eee',
						sign_type: 'MD5' 
					} 
				}
			}
			//注意,这里必须返回固定的json数据给连连
			res.send(initWebllpay.getStopNotifyData());
		});	
  	})
});

获取终止异步回调的相应字符串

注:当向连连发送字符串时,代表商户已经成功处理回调,连连将终止异步回调。

//wap异步回调数据
res.send(initWebllpay.getStopNotifyData());

签名认证

//连连异步回掉以post方式发送字节流
app.post('/webllpay/notify_url',function(req,res){
	//注意:以字节流方式接收���据
	var body = '';
	req.on('data',function(chunk){
		//console.log(Buffer.isBuffer(chunk))
		body += chunk
	});
	req.on('end',function(){
		console.log(body);
		var result = webllpay.UTIL.resStringToJSON(body);
		//签名认证
		if(initWebllpay.verify(result)){
			//支付结果认证
			if(initWebllpay.success(result)){
				//支付结果以此为准,商户按此进行后续是否发货操作
				console.log('+++++++++++++++++++++++++');
				//注意,这里必须返回固定的json数据给连连
				res.json({"ret_code":"0000","ret_msg":"交易成功"});//连连要求返回的数据,以表示商户正常接受到异步订单处理
			}else{
				res.send('支付不成功');//支付不成功
			}				
		}else{
			//数据认证不通过,数据被篡改
			res.json(result);
		}	
  	})
});

订单查询接口

initWebllpay.doQuery({
	no_order:"商户订单号"
},function(err,data){
	if(!err){
		//result_pay:SUCCESS, 为支付成功
		data => {
			bank_code: '03080000',
			bank_name: '招商银行',
			card_no: '621483******9421',
			dt_order: '20150609175947',
			info_order: '考拉理财,开启懒人理财生活。',
			money_order: '1.00',
			no_order: '5576b9135cf7efc965da0b2b',
			oid_partner: '2015**************502',
			oid_paybill: '2015**************368',
			pay_type: 'D',
			result_pay: 'SUCCESS',
			ret_code: '0000',
			ret_msg: '交易成功',
			settle_date: '20150609',
			sign: '79ef7f2422565671398487995660c619',
			sign_type: 'MD5'
		}
		//对订单进行验签
		//有三个字段不参与验证bank_name,memo,card_no
		delete data.bank_name;
		delete data.memo;
		delete data.card_no;
		if(self.verify(data)){
			//数据合法
			//todo
		}else{
			//数据被篡改
			//todo
		}
	}
})

启动app

app.listen(8007);
console.log('app listen on 8007');