.net实现lakala支付接口(国内拉卡拉技术首发)
1. MD5校验问题
MD5是根据参数汇总表的参数,按照字母升序顺序排列。您需要传递哪些参数,就要将那些参数加入到MD5的原始字符串中。原始字符串最后记得串上自己的安全校验码。例如:调用某接口需要以下参数:
假设密钥为Key
代签数据
data = "amount=" + amount + "&amount_pay=" + amount_pay + "¤cy=156&lakala_bill_no=" + lakala_bill_no
+ "&lakala_pay_time=" + lakala_pay_time + "&mer_id=" + mer_id + "&partner_bill_no=" + partner_bill_no
+ "&pay_type=D&req_id=" + req_id + "&sec_id=MD5&service=lakala.agency.tradePayBalance&trade_no="
+ trade_no + "&v=1.1" + Key;
进行校签
string mysign = GetMD5(data);
int verified = -1;
if (mysign == sign)
{
verified = 0;
}
if (verified == 0) //校签成功
{
//验证支付金额是否一致
if (Price!= amount||fstatus=="1") //输入金额不对或已经支付过了,Price为订单金额,fstatus为订单状态
{
is_success = "n";
}
}
if (is_success == "y")
{
//更新自己数据库的订单语句,请自己填写一下
//UpdateOrderStatus(orderNo,msg);
}
}
2.订单查询接口
lakalaSearchOrder.aspx?v=1.1&service=lakala.agency.tradePayConsultBalance&mer_id=325510&sec_id=MD5
&req_id=15183&trade_no=1012130005&amount=2300.00&lakala_query_time=20101213171712
&sign=74d71eec988c613a0e22f2921692d944
返回
amount=2300.00&can_pay=y&mer_id=123456&partner_bill_no=3255101012130005
&partner_extendinfo=c2hubg==&partner_query_time=20101213171712&req_id=15183
&sec_id=MD5&service=lakala.agency.tradePayConsultBalance&v=1.132aioiuyfrtyjk.,lkk4!pnolr85427*6322ad-fdin690#211000ffhhhq3679nb16&sign=8a5c43b6c4776314e5110465800436ba
3.支付查询接口
lakalaPayInform.aspx?v=1.1&service=lakala.agency.tradePayBalance&mer_id=325510
&sec_id=MD5&req_id=15185&trade_no=1012130005&amount=2300.00&amount_pay=2300.00
&pay_type=D&partner_bill_no=1012130005&lakala_bill_no=021012131742034¤cy=156
&lakala_pay_time=20101213175051&sign=f18c661bd6e6b8c0217d30070609014f&terminalno=010-59711100
返回
is_success=y&lakala_bill_no=021012131742034&mer_id=123456&partner_bill_no=3255101012130005
&partner_pay_time=20101213175051&req_id=15185&sec_id=MD5
&service=lakala.agency.tradePayBalance&v=1.132aioiuyfrtyjk.,lkk4!pnolr85427*6322ad-fdin690#211000ffhhhq3679nb16&sign=2c24095b307acbe11d19e3acdee7b030
4.正式收银台地址
http://b.lakala.com/plugin2/pos.jsp
附:
public static string GetMD5(string s)
{
/// <summary>
/// 与ASP兼容的MD5加密算法
/// </summary>
MD5 md5 = new MD5CryptoServiceProvider();
byte[] t = md5.ComputeHash(Encoding.GetEncoding("utf-8").GetBytes(s));
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString("x").PadLeft(2, '0'));
}
return sb.ToString();
}