p2p金融项目+支付宝充值

本文介绍了在P2P金融项目中如何集成支付宝支付,包括下载服务端SDK,按照支付宝时序图进行操作,如生成充值记录、调用支付接口,以及处理同步和异步返回参数。重点讨论了生成充值记录、调用支付接口和验证返回参数的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

下载服务端SDK

时序图:

按照支付宝时序图的过程去做:

第一步:

第二步--2:生成充值记录(状态:充值中)

第四步:调支付宝的支付接口

第七+八步:(7)get请求returnURL,返回同步返还参数;(8)Pay将同步返还参数传递给p2p-web

第八步:p2p-web工程接收到Pay工程的同步返还参数后:


前言

如果要使用支付宝,前提是:是它的支付宝客户&&且有支付宝&&且实名认证过了

在Google中搜索:open.alipay.com   “蚂蚁金服开放平台”

电脑网站支付:https://docs.open.alipay.com/270

这里出现了不对称的加密方式:应用公钥、应用私钥

在本地生成了一对 应用公钥和应用私钥,私钥自己留着,不能给别人,公钥给别人(支付宝网站),支付宝网站再对这个字符串(公钥)加密,返回给我(本地),我(本地)用私钥去解这个加密后的字符串,解密之后,匹配一下,是否相等

下载服务端SDK

什么是SDK:软件开发工具包,比如使用java的时候,用的软件开发工具包是JDK

拿着应用公钥生成一个支付宝公钥,支付宝公钥是由支付宝来生成的

 

时序图:

注意:实线代表request请求,虚线代表response响应

调用顺序如下:

  1. 商户系统请求支付宝接口 alipay.trade.page.pay,支付宝对商户请求参数进行校验,而后重新定向至用户登录页面。
  2. 用户确认支付后,支付宝通过 get 请求 returnUrl(商户入参传入),返回同步返回参数。
  3. 交易成功后,支付宝通过 post 请求 notifyUrl(商户入参传入),返回异步通知参数。
  4. 若由于网络等问题异步通知没有到达,商户可自行调用交易查询接口 alipay.trade.query 进行查询,根据查询接口获取交易以及支付信息(商户也可以直接调用查询接口,不需要依赖异步通知)。

注意: 

  • 由于同步返回的不可靠性,支付结果必须以异步通知或查询接口返回为准,不能依赖同步跳转。
  • 商户系统接收到异步通知以后,必须通过验签(验证通知中的 sign 参数)来确保支付通知是由支付宝发送的。详细验签规则参考异步通知验签
  • 接收到异步通知并验签通过后,一定要检查通知内容,包括通知中的 app_id、out_trade_no、total_amount 是否与请求中的一致,并根据 trade_status 进行后续业务处理。
  • 在支付宝端,partnerId 与 out_trade_no 唯一对应一笔单据,商户端保证不同次支付 out_trade_no 不可重复;若重复,支付宝会关联到原单据,基本信息一致的情况下会以原单据为准进行支付。

按照支付宝时序图的过程去做:

第一步:

在p2p-web中的pom.xml添加依赖:

<!-- 阿里巴巴json解析包start -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>

还有SDK的jar包,如何在maven项目中引入非本地仓库的jar包:

在WED-INF下建一个lib文件夹

。。。。。。。。。。

第二步--2:生成充值记录(状态:充值中)

p2p-web

RechargeRecordController.java
@RequestMapping(value = "/loan/toAlipayRecharge")
    public String toAlipayRecharge(HttpServletRequest request, Model model,
                                   @RequestParam (value = "rechargeMoney",required = true) Double rechargeMoney) {

        //从session中获取用户的信息
        User sessionUser = (User) request.getSession().getAttribute(Constants.SESSION_USER);

        //生成一个全局唯一充值订单号 = 时间戳 + redis全局唯一数字
        String rechargeNo = DateUtils.getTimeStamp() + onlyNumberService.getOnlyNumber();

        //生成充值记录(状态为:充值中)
        RechargeRecord rechargeRecord = new RechargeRecord();
        rechargeRecord.setUid(sessionUser.getId());
        rechargeRecord.setRechargeNo(rechargeNo);
        rechargeRecord.setRechargeMoney(rechargeMoney);
        rechargeRecord.setRechargeTime(new Date());
        rechargeRecord.setRechargeStatus("0");
        rechargeRecord.setRechargeDesc("支付宝充值");

        int addRechargeCount = rechargeRecordService.addRechargeRecord(rechargeRecord);

        if (addRechargeCount > 0) {

            //向pay工程的支付方法传递参数
            model.addAttribute("p2p_pay_alipay_url","http://localhost:9090/pay/api/alipay");
            model.addAttribute("rechargeNo",rechargeNo);
            model.addAttribute("rechargeMoney",rechargeMoney);
            model.addAttribute("subject","支付宝充值");

        } else {

            model.addAttribute("trade_msg","充值人数过多,请稍后重试...");
            return "toRechargeBack";
        }


        return "toAlipay";
    }

过程:

1、先从session中获取用户的信息

User sessionUser = (User) request.getSession().getAt
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值