package utils; public class PaymentUtil { /** * 生成hmac方法 * * @param p0_Cmd * 业务类型 * @param p1_MerId * 商户编号 * @param p2_Order * 商户订单ID号 * @param p3_Amt * 支付金额 * @param p4_Cur * 交易币种 * @param p5_Pid * 商品名称 * @param p6_Pcat * 商品种类 * @param p7_Pdesc * 商品描述 * @param p8_Url * 商户接受支付成功后的地址 * @param p9_SAF * 送货地址 * @param pa_MP * 商户扩展信息 * @param pd_FrpId * 银行编码 * @param pr_NeedResponse * 应答机制 * @param keyValue * 商户密钥 * @return */ public static String createHmac(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) { StringBuffer sValue = new StringBuffer(); 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); String resultValue = DigestUtil.hmacSign(sValue.toString(), keyValue); return resultValue; } /** * 返回校验hmac方法 * * @param hmac * 支付网关发来的加密验证码 * @param p1_MerId * 商户编号 * @param r0_Cmd * 业务类型 * @param r1_Code * 支付结果 * @param r2_TrxId * 易宝支付交易流水号 * @param r3_Amt * 支付金额 * @param r4_Cur * 交易币种 * @param r5_Pid * 商品名称 * @param r6_Order * 商户订单号 * @param r7_Uid * 易宝支付会员ID * @param r8_MP * 商户扩展信息 * @param r9_BType * 交易结果返回类型 * @param keyValue * 密钥 * @return */ public static boolean verifyCallback(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) { StringBuffer sValue = new StringBuffer(); // 商户编号 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 = DigestUtil.hmacSign(sValue.toString(), keyValue); if (hmac.equals(sNewString)) { return true; } return false; } }