易宝支付+springboot

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版权协议,转载请附上原文出处链接和本声明。