java集成支付宝

1.app支付服务端DEMO&SDK  官方网址:https://docs.open.alipay.com/54/106370/


下载sdk,并在项目中引入包


2.java服务端增加一个接口(根据app业务参数调用支付宝SDK生成支付订单并返回),

示例代码如下:

    //实例化客户端
    AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
    //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
    AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
    //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
    AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
    model.setBody("我是测试数据");
    model.setSubject("App支付测试Java");
    model.setOutTradeNo(outtradeno);
    model.setTimeoutExpress("30m");
    model.setTotalAmount("0.01");
    model.setProductCode("QUICK_MSECURITY_PAY");
    request.setBizModel(model);
    request.setNotifyUrl("商户外网可以访问的异步地址");
    try {
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
            System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
        } catch (AlipayApiException e) {
            e.printStackTrace();
    }


3.java服务端增加一个回调方法,验证异步通知消息,

示例代码如下:

     public String aliPay_notify(Map requestParams){
            System.out.println("支付宝支付结果通知"+requestParams.toString());
            //获取支付宝POST过来反馈信息
            Map<String,String> params = new HashMap<String,String>();
            
            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);
             }
            //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
            //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
            try {
            //验证签名
                boolean flag = AlipaySignature.rsaCheckV1(params, alipay_public_key, charset, "RSA2");
                if(flag){
                    if("TRADE_SUCCESS".equals(params.get("trade_status"))){
                        //付款金额
                        String amount = params.get("buyer_pay_amount");
                        //商户订单号
                        String out_trade_no = params.get("out_trade_no");
                        //支付宝交易号
                        String trade_no = params.get("trade_no");
                        //附加数据
                        String passback_params = URLDecoder.decode(params.get("passback_params"));

                        //此处可以添加项目的业务逻辑

                       
                    }
                }
            } catch (AlipayApiException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        return "success";
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值