支付:分析支付中的请求参数

发给易宝支付网关的数据:

需要的参数:
String merchantID = ConfigInfo.getValue("p1_MerId");//商家ID
String keyValue = ConfigInfo.getValue("keyValue");//商家密钥
String merchantCallbackURL = ConfigInfo.getValue("merchantCallbackURL");//交易结果通知地址
String orderId = request.getParameter("orderId");//商家的交易订单号
String amount = request.getParameter("amount");//订单金额
String frpId = request.getParameter("pd_FrpId");//银行ID
String messageType = "Buy";//请求命令,在线支付固定为Buy
String currency = "CNY";//货币单位
String productDesc = "";//商品描述
String productCat = "";//商品种类
String productId = "";//商品ID
String addressFlag = "0";//需要填写送货信息 0:不需要 1:需要
String sMctProperties = "";//商品扩展信息
String hmac = buildHmac(messageType,merchantID,orderId,amount,
		currency,productId,productCat,productDesc,merchantCallbackURL,
		addressFlag,sMctProperties,frpId,"0",keyValue);//获得MD5-HMAC
//buildHmac()方法在前面已提供。ConfigInfo类从类路径下的属性文件读取商家的ID、密钥和结果通知地址
加密的方法:
public class MD5Hmac {
	public static String 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){
		StringBuffer str = new StringBuffer();//字符顺序不能改变
		str.append(p0_Cmd);//业务类型,buy(在线支付)
		str.append(p1_MerId);//商户编号/成为易宝用户/易宝分配一个商户的编号与密钥
		str.append(p2_Order);//商户订单号/网站上的订单号-我们系统中跟踪订单
		str.append(p3_Amt);//支付金额
		str.append(p4_Cur);//交易币种
		str.append(p5_Pid);//商品名称/可不提供
		str.append(p6_Pcat);//商品种类/可不提供
		str.append(p7_Pdesc);//商品描述/可不提供
		str.append(p8_Url);//商户接收支付成功数据的地址
		str.append(p9_SAF);//送货地址/可不填/设为空字符串
		str.append(pa_MP);//商户扩展信息/在用户支付完之后,发送什么数据按原样返回,做扩展/空字符串
		str.append(pd_FrpId);//银行编码/银行代码,易宝支付方规定
		str.append(pr_NeedResponse);//应答机制
		//为"1": 需要应答机制;为"0": 不需要应答机制.
		//0后台程序访问结果回调地址,返回200则认为成功,不再通知;1不以200的编码为判断机制,以页面返回结果是否为success为判断,若是则认为接收到,若不是则不断发送
		//两种应答方式返回支付结果1.向接收路径发送请求数据,不可靠,通过引导用户的浏览器把数据发回Url上,一旦浏览器出问题或人为暂停了浏览器,无法接收到用户的支付结果
		//2.采用了一个后台程序,后台程序链接到Web服务器,再请求结果回调路径,不依赖用户浏览器,通过服务器后台发送请求
		String returnStr = DigestUtil.hmacSign(str.toString(),keyValue);//成为易宝用户/易宝提供密钥
		return returnStr;
	}
}

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充;转载请注明出处!

你可能感兴趣的:(易宝支付)