易宝支付 java_【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】...

packagecom.kdyzm.utils;importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.util.Arrays;public classPaymentUtil {private static String encodingCharset = "UTF-8";/*** 生成hmac方法

*

*@paramp0_Cmd 业务类型

*@paramp1_MerId 商户编号

*@paramp2_Order 商户订单号

*@paramp3_Amt 支付金额

*@paramp4_Cur 交易币种

*@paramp5_Pid 商品名称

*@paramp6_Pcat 商品种类

*@paramp7_Pdesc 商品描述

*@paramp8_Url 商户接收支付成功数据的地址

*@paramp9_SAF 送货地址

*@parampa_MP 商户扩展信息

*@parampd_FrpId 银行编码

*@parampr_NeedResponse 应答机制

*@paramkeyValue 商户密钥

*@return

*/

public staticString buildHmac(String p0_Cmd,String p1_MerId,

String p2_Order, String p3_Amt, String p4_Cur,String p5_Pid, String p6_Pcat,

String p7_Pdesc,String p8_Url, String p9_SAF,String pa_MP,String pd_FrpId,

String pr_NeedResponse,String keyValue) {

StringBuilder sValue= newStringBuilder();//业务类型

sValue.append(p0_Cmd);//商户编号

sValue.append(p1_MerId);//商户订单号

sValue.append(p2_Order);//支付金额

sValue.append(p3_Amt);//交易币种

sValue.append(p4_Cur);//商品名称

sValue.append(p5_Pid);//商品种类

sValue.append(p6_Pcat);//商品描述

sValue.append(p7_Pdesc);//商户接收支付成功数据的地址

sValue.append(p8_Url);//送货地址

sValue.append(p9_SAF);//商户扩展信息

sValue.append(pa_MP);//银行编码

sValue.append(pd_FrpId);//应答机制

sValue.append(pr_NeedResponse);returnPaymentUtil.hmacSign(sValue.toString(), keyValue);

}/*** 返回校验hmac方法

*

*@paramhmac 支付网关发来的加密验证码

*@paramp1_MerId 商户编号

*@paramr0_Cmd 业务类型

*@paramr1_Code 支付结果

*@paramr2_TrxId 易宝支付交易流水号

*@paramr3_Amt 支付金额

*@paramr4_Cur 交易币种

*@paramr5_Pid 商品名称

*@paramr6_Order 商户订单号

*@paramr7_Uid 易宝支付会员ID

*@paramr8_MP 商户扩展信息

*@paramr9_BType 交易结果返回类型

*@paramkeyValue 密钥

*@return

*/

public static booleanverifyCallback(String hmac, String p1_MerId,

String r0_Cmd, String r1_Code, String r2_TrxId, String r3_Amt,

String r4_Cur, String r5_Pid, String r6_Order, String r7_Uid,

String r8_MP, String r9_BType, String keyValue) {

StringBuilder sValue= newStringBuilder();//商户编号

sValue.append(p1_MerId);//业务类型

sValue.append(r0_Cmd);//支付结果

sValue.append(r1_Code);//易宝支付交易流水号

sValue.append(r2_TrxId);//支付金额

sValue.append(r3_Amt);//交易币种

sValue.append(r4_Cur);//商品名称

sValue.append(r5_Pid);//商户订单号

sValue.append(r6_Order);//易宝支付会员ID

sValue.append(r7_Uid);//商户扩展信息

sValue.append(r8_MP);//交易结果返回类型

sValue.append(r9_BType);

String sNewString=PaymentUtil.hmacSign(sValue.toString(), keyValue);returnsNewString.equals(hmac);

}/***@paramaValue

*@paramaKey

*@return

*/

public staticString hmacSign(String aValue, String aKey) {byte k_ipad[] = new byte[64];byte k_opad[] = new byte[64];bytekeyb[];bytevalue[];try{

keyb=aKey.getBytes(encodingCharset);

value=aValue.getBytes(encodingCharset);

}catch(UnsupportedEncodingException e) {

keyb=aKey.getBytes();

value=aValue.getBytes();

}

Arrays.fill(k_ipad, keyb.length,64, (byte) 54);

Arrays.fill(k_opad, keyb.length,64, (byte) 92);for (int i = 0; i < keyb.length; i++) {

k_ipad[i]= (byte) (keyb[i] ^ 0x36);

k_opad[i]= (byte) (keyb[i] ^ 0x5c);

}

MessageDigest md= null;try{

md= MessageDigest.getInstance("MD5");

}catch(NoSuchAlgorithmException e) {return null;

}

md.update(k_ipad);

md.update(value);byte dg[] =md.digest();

md.reset();

md.update(k_opad);

md.update(dg,0, 16);

dg=md.digest();returntoHex(dg);

}public static String toHex(byteinput[]) {if (input == null)return null;

StringBuffer output= new StringBuffer(input.length * 2);for (int i = 0; i < input.length; i++) {int current = input[i] & 0xff;if (current < 16)

output.append("0");

output.append(Integer.toString(current,16));

}returnoutput.toString();

}/***

*@paramargs

*@paramkey

*@return

*/

public staticString getHmac(String[] args, String key) {if (args == null || args.length == 0) {return (null);

}

StringBuffer str= newStringBuffer();for (int i = 0; i < args.length; i++) {

str.append(args[i]);

}return(hmacSign(str.toString(), key));

}/***@paramaValue

*@return

*/

public staticString digest(String aValue) {

aValue=aValue.trim();bytevalue[];try{

value=aValue.getBytes(encodingCharset);

}catch(UnsupportedEncodingException e) {

value=aValue.getBytes();

}

MessageDigest md= null;try{

md= MessageDigest.getInstance("SHA");

}catch(NoSuchAlgorithmException e) {

e.printStackTrace();return null;

}returntoHex(md.digest(value));

}//public static void main(String[] args) {//System.out.println(hmacSign("AnnulCard1000043252120080620160450.0http://localhost/SZXpro/callback.asp杩?4564868265473632445648682654736324511","8UPp0KE8sq73zVP370vko7C39403rtK1YwX40Td6irH216036H27Eb12792t"));//}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值