支付宝支付

比起微信支付支付宝简直可以说是不值一提,主要还是人家的demo和官方文档写的好。

支付宝的支付去官网去下载demo可以得到一个项目,我自己改动了一下,官方demo写的扫码支付,我要做的是app支付。首先将

jar导入自己的项目中

创建配置类官方的demo里面有

这里涉及基本参数,appid  ,商户的私钥在阿里的支付平台用工具生成填入相应的商户的公钥支付宝会生成相应的支付宝的公钥。然后这里会用到,回调的地址,是生订单时加进去,这里要写成自己的线上的项目接口的完整路径。

前端获取订单的参数

//实例化客户端
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
      //** 当前时间 yyyyMMddHHmmss *//*
        String currTime = TenpayUtil.getCurrTime();
        //** 8位日期 *//*
        String strTime = currTime.substring(8, currTime.length());
        //** 四位随机数 *//*
        String strRandom = TenpayUtil.buildRandom(6) + "";
        model.setBody("咨询费用");
        model.setSubject("咨询");
        model.setOutTradeNo(strTime+strRandom);
        model.setTimeoutExpress("30m");
        model.setTotalAmount(money);
        model.setProductCode("QUICK_MSECURITY_PAY");
        request.setBizModel(model);
        request.setNotifyUrl(AlipayConfig.notify_url);
        try {
                //这里和普通的接口调用不同,使用的是sdkExecute
                AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
                System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
            } catch (AlipayApiException e) {
                e.printStackTrace();
        }

以及回调的方法这里阿里的服务器会返回两个很重要的参数一个是商户我们自己生成的订单id一个是阿里生成的订单id

//获取支付宝POST过来反馈信息
        Map<String,String> params = new HashMap<String,String>();
        Map requestParams = request.getParameterMap();
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i]
                            : valueStr + values[i] + ",";
              }
            //乱码解决,这段代码在出现乱码时使用。
            //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
        System.out.println(params);
        //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
        //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
        boolean flag = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset,"RSA2");
        System.out.println(flag);
        if(flag){
          //这里我们可以写自己的逻辑

//获取阿里回调的商户订单号

String out_trade_no=params.get("out_trade_no");
            }
        }

 

这样服务器端就做完了

这里使用的工具类和微信支付的工具类类似

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值