import com.alibaba.fastjson.JSONObject; //导入方法依赖的package包/类
/**
* 验证创建订单请求参数,参数通过返回JSONObject对象,否则返回错误文本信息
* @param params
* @return
*/
private String validateParams(JSONObject params, JSONObject payContext) {
// 验证请求参数,参数有问题返回错误提示
String errorMessage;
// 支付参数
String mchId = params.getString("mchId"); // 商户ID
String mchOrderNo = params.getString("mchOrderNo"); // 商户订单号
String payOrderId = params.getString("payOrderId"); // 支付订单号
String sign = params.getString("sign"); // 签名
// 验证请求参数有效性(必选项)
if(StringUtils.isBlank(mchId)) {
errorMessage = "request params[mchId] error.";
return errorMessage;
}
if(StringUtils.isBlank(mchOrderNo) && StringUtils.isBlank(payOrderId)) {
errorMessage = "request params[mchOrderNo or payOrderId] error.";
return errorMessage;
}
// 签名信息
if (StringUtils.isEmpty(sign)) {
errorMessage = "request params[sign] error.";
return errorMessage;
}
// 查询商户信息
JSONObject mchInfo;
String retStr = mchInfoServiceClient.selectMchInfo(getJsonParam("mchId", mchId));
JSONObject retObj = JSON.parseObject(retStr);
if("0000".equals(retObj.getString("code"))) {
mchInfo = retObj.getJSONObject("result");
if (mchInfo == null) {
errorMessage = "Can't found mchInfo[mchId="+mchId+"] record in db.";
return errorMessage;
}
if(mchInfo.getByte("state") != 1) {
errorMessage = "mchInfo not available [mchId="+mchId+"] record in db.";
return errorMessage;
}
}else {
errorMessage = "Can't found mchInfo[mchId="+mchId+"] record in db.";
_log.info("查询商户没有正常返回数据,code={},msg={}", retObj.getString("code"), retObj.getString("msg"));
return errorMessage;
}
String reqKey = mchInfo.getString("reqKey");
if (StringUtils.isBlank(reqKey)) {
errorMessage = "reqKey is null[mchId="+mchId+"] record in db.";
return errorMessage;
}
payContext.put("resKey", mchInfo.getString("resKey"));
// 验证签名数据
boolean verifyFlag = XXPayUtil.verifyPaySign(params, reqKey);
if(!verifyFlag) {
errorMessage = "Verify XX pay sign failed.";
return errorMessage;
}
return "success";
}