package cn.ambuf.product.recruit.payController;
import cn.ambuf.product.core.pojo.login.SysLoginUser;
import cn.ambuf.product.recruit.entity.BasicInfo;
import cn.ambuf.product.recruit.entity.ExamineeStatus;
import cn.ambuf.product.recruit.enums.DictionariesEnum;
import cn.ambuf.product.recruit.model.param.ExamineeStatusParam;
import cn.ambuf.product.recruit.service.BasicInfoService;
import cn.ambuf.product.recruit.service.ExamineeStatusService;
import cn.ambuf.product.recruit.util.pay.YeepayService;
import cn.ambuf.product.sys.modular.auth.context.LoginContextSpringSecurityImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* 考生缴费
*
* @author: HQ
* @date: 2020/12/27 17:44
*/
@Api(tags = "缴费接口")
@Controller
public class PayBeginController {
private String p8Url = DictionariesEnum.P8_URL.getMessage();
@Resource
private LoginContextSpringSecurityImpl loginContextSpringSecurity;
@Resource
private ExamineeStatusService examineeStatusService;
@ApiOperation(value="缴费 需要参数money金额 + payType商品名称类如zpbsjf和zpmsjf缴费类型的全拼")
@ApiParam(value = "基本信息参数")
@PostMapping("/pay/startAmount")
public void payAmountStart(HttpServletResponse response,HttpServletRequest request) throws IOException {
SysLoginUser sysLoginUser = loginContextSpringSecurity.getSysLoginUser();
String userName = sysLoginUser.getName();
Long userId = sysLoginUser.getId();
ExamineeStatus examineeStatus = examineeStatusService.searchStatus(userId);
String paymentOrder = examineeStatus.getPaymentOrder();
String p0_Cmd = "Buy";
String p2_Order = paymentOrder; //订单号
String p3_Amt = request.getParameter("money");;//money
String p4_Cur = "CNY";
String p5_Pid = request.getParameter("payType");// 商品名称
String p6_Pcat = "";//商品种类
String p7_Pdesc = "";//商品描述
String p8_Url = p8Url;//通知地址
String p9_SAF = "0";
String pa_MP = "";
String pb_ServerNotifyUrl= "";//服务器通知地址
String pa_Ext = "";
String pb_Oper = "";
String pd_FrpId = "";
String pd_BankBranch = "";
String pt_ActId = "";
String pv_Ver = "";
String pm_Period = "";
String pn_Unit = "";
String pr_NeedResponse = "1";
String pt_UserName = userName;
String pt_PostalCode = "";
String pt_Address = "";
String pt_TeleNo = "";
String pt_Mobile = "";
String pt_Email = "";
String pt_LeaveMessage = "";
Map<String, String> params = new HashMap<String, String>();
params.put("p0_Cmd", p0_Cmd);
params.put("p2_Order", p2_Order);
params.put("p3_Amt", p3_Amt);
params.put("p4_Cur", p4_Cur);
params.put("p5_Pid", p5_Pid);
params.put("p6_Pcat", p6_Pcat);
params.put("p7_Pdesc", p7_Pdesc);
params.put("p8_Url", p8_Url);
params.put("p9_SAF", p9_SAF);
params.put("pa_MP", pa_MP);
params.put("pb_ServerNotifyUrl", pb_ServerNotifyUrl);
params.put("pd_FrpId", pd_FrpId);
params.put("pm_Period", pm_Period);
params.put("pn_Unit", pn_Unit);
params.put("pr_NeedResponse",pr_NeedResponse);
params.put("pt_UserName",pt_UserName);
params.put("pt_PostalCode",pt_PostalCode);
params.put("pt_Address",pt_Address);
params.put("pt_TeleNo",pt_TeleNo);
params.put("pt_Mobile",pt_Mobile);
params.put("pt_Email",pt_Email);
params.put("pt_LeaveMessage",pt_LeaveMessage);
System.out.println("params : " + params);
String payURL = YeepayService.getPayURL(params);
if("".equals(payURL)) {
System.out.println("生成链接失败!");
} else {
response.sendRedirect(payURL);
}
}
@ApiOperation(value="缴费回调")
@ApiParam(value = "基本信息参数")
@GetMapping("/pay/payAmountEnd")
public void payAmountEnd(HttpServletRequest request) throws IOException {
String p1_MerId = String.valueOf(request.getParameter("p1_MerId"));
String r0_Cmd = String.valueOf(request.getParameter("r0_Cmd"));
String r1_Code = String.valueOf(request.getParameter("r1_Code"));
String r2_TrxId = String.valueOf(request.getParameter("r2_TrxId"));
String r3_Amt = String.valueOf(request.getParameter("r3_Amt"));
String r4_Cur = String.valueOf(request.getParameter("r4_Cur"));
String r5_Pid = String.valueOf(request.getParameter("r5_Pid"));
String r6_Order = String.valueOf(request.getParameter("r6_Order"));
String r7_Uid = String.valueOf(request.getParameter("r7_Uid"));
String r8_MP = String.valueOf(request.getParameter("r8_MP"));
String r9_BType = String.valueOf(request.getParameter("r9_BType"));
String rb_BankId = String.valueOf(request.getParameter("rb_BankId"));
String ro_BankOrderId = String.valueOf(request.getParameter("ro_BankOrderId"));
String rp_PayDate = String.valueOf(request.getParameter("rp_PayDate"));
String rq_CardNo = String.valueOf(request.getParameter("rq_CardNo"));
String ru_Trxtime = String.valueOf(request.getParameter("ru_Trxtime"));
String rq_SourceFee = String.valueOf(request.getParameter("rq_SourceFee"));
String rq_TargetFee = String.valueOf(request.getParameter("rq_TargetFee"));
String hmac = String.valueOf(request.getParameter("hmac"));
String hmac_safe = String.valueOf(request.getParameter("hmac_safe"));
String[] strArr = {p1_MerId, r0_Cmd, r1_Code, r2_TrxId, r3_Amt, r4_Cur, r5_Pid, r6_Order, r7_Uid, r8_MP, r9_BType };
boolean hmacIsCorrect = YeepayService.verifyCallbackHmac(strArr, hmac);
boolean hmacsafeIsCorrect = YeepayService.verifyCallbackHmac_safe(strArr, hmac_safe);
System.out.println("回调参数~~~~~~~~~~strArr~~~~~~~~~~~=" + strArr[0]+" "+strArr[1]+" "+strArr[2]+" "+strArr[3]+" "+strArr[4]+" "+strArr[5]+" "+strArr[6]+" "+strArr[7]+" "+strArr[8]+" "+strArr[9]+" "+strArr[10]);
System.out.println("r5_Pid="+strArr[6]);
System.out.println(hmacIsCorrect+"&&&&"+hmacsafeIsCorrect);
if(hmacIsCorrect && hmacsafeIsCorrect) {
if(r9_BType.equals("2")) {
System.out.println("SUCCESS");
System.out.println("服务器回调~~~~~~~~~~SUCCESS~~~~~~~~~~~");
//r6_Order 订单号用来更新状态
ExamineeStatusParam examineeStatus = new ExamineeStatusParam();
examineeStatus.setPaymentOrder(r6_Order);
if ("zpbsjf".equals(r5_Pid)) {
examineeStatus.setWrittenBillStatus(1);
}else if ("zpmsjf".equals(r5_Pid)){
examineeStatus.setInterviewOrder(r2_TrxId);
examineeStatus.setInterviewBillStatus(1);
}
examineeStatusService.updateStatus(examineeStatus);
return;
}
} else {
System.out.println("Hmac Not Correction!");
return;
}
}
}
版权声明:本文为qq_38733892原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。