支付宝调用

  • 进入支付宝平台添加沙盒账号
  • 获取沙盒账号的私钥和公钥

获取网页支付

  public static String pay(String out_trade_no,double totalAmountl,String subject,String returnUrl,String notifyUrl) {
        AlipayClient alipayClient =new DefaultAlipayClient(
                Config.gateway,Config.appid,Config.privateKey,"json","UTF-8",Config.publicKey,Config.gnType);
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setNotifyUrl(notifyUrl);
        request.setReturnUrl(returnUrl);
        String bizContent = "{" +
                "    \"out_trade_no\":\""+out_trade_no+"\"," +
                "    \"scene\":\"bar_code\"," +
                "    \"total_amount\":"+totalAmountl+"," +
                "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
                "    \"subject\":\""+subject+"\"," +
                "    \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"" +
                "    }"+
                "  }";//填充业务参数
        request.setBizContent(bizContent);
        String form = "";
        try {
            form = alipayClient.pageExecute(request).getBody();//调用SDK生成表单
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        return form;
    }

AlipayTradePagePayRequest表示进入页面支付

在这里插入图片描述

AlipayTradePayRequest对象表示付款码支付,必传scene:bar_code 和付款码auth_code

通过订单号查看订单支付状态

 public static boolean getPayResult(String out_trade_no) {
        AlipayClient alipayClient =new DefaultAlipayClient(
                Config.gateway,Config.appid,Config.privateKey,"json","UTF-8",Config.publicKey,Config.gnType);
        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
        request.setBizContent("{" +
                "\"out_trade_no\":\""+out_trade_no+"\"}");
        AlipayTradeQueryResponse response = null;
        try {
            response = alipayClient.execute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if(response.isSuccess()){
            System.out.println("调用成功");
            String tradeStatus = response.getTradeStatus();
            if (tradeStatus.equals("TRADE_SUCCESS")) {
                return true;
            }
        }
        return false;
    }

加密

MD5加密

非可逆的过程,只能加密,不能解密

不管多长的信息都被加密为32位

严格意义上说不算是一种加密方式,因为它不能解密

base64

把明文转转换成字符串,也能由这个字符串转换回来,严格意义上说也不算加密,只是转化

对称加密DES

明文->密钥->密文; 密文->密钥->明文

加密和解密用的是同一个密钥

非对称加密

加密和解密不是同一个密钥

私钥和公钥一一对应,同时生成

私钥

公钥

公钥加密的数据只有我才能解密

我加密的数据,公钥可以检验

RSA加密

支付宝就是RSA的非对称加密,私钥放自己项目tomcat,公钥放支付宝.当自己对发出的订单进行加密,发给支付宝api,支付宝用放在支付宝那里的公钥进行解密.即使其他人已知公钥进行解密,解密的结果再进行加密得到的数据和一开始私钥加密前的数据也是不同的

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40354317/article/details/84988980