知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技  > 软件

java app调用支付宝支付

发表时间:2022-03-26来源:网络

 

沙箱环境

1:先去蚂蚁金服入驻

    得到开发需要的信息 appid 支付宝网管 商户私钥和支付宝公钥

   

2:配置参数类

 

pom引入jar包

com.alipay.sdk alipay-sdk-java 3.1.0

配置支付宝需要的参数配置

package com.fandemi.utils.alipay; public class AlipayConfig { // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 public static String app_id = "appid"; // 支付宝网关 public static String url = "https://openapi.alipaydev.com/gateway.do"; // 商户私钥,您的PKCS8格式RSA2私钥 public static String private_key = ""; // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String public_key = ""; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 public static String notify_url = ""; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 public static String return_url = ""; // 签名方式 public static String sign_type = "RSA2";// 签名方式 public static String format = "json";//参数格式为json // 字符编码格式 public static String charset = "utf-8"; }

 

3:配置参数实体类

package com.fandemi.utils.alipay; public class AlipayBean { /** * 商户订单号,必填 * */ private String out_trade_no; /** * 订单名称,必填 */ private String subject; /** * 付款金额,必填 * 根据支付宝接口协议,必须使用下划线 */ private String total_amount; /** * 商品描述,可空 */ private String body; /** * 超时时间参数 */ private String timeout_express= "10m"; /** * 产品编号 */ private String product_code= "FAST_INSTANT_TRADE_PAY"; public String getOut_trade_no() { return out_trade_no; } public void setOut_trade_no(String out_trade_no) { this.out_trade_no = out_trade_no; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getTotal_amount() { return total_amount; } public void setTotal_amount(String total_amount) { this.total_amount = total_amount; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } public String getTimeout_express() { return timeout_express; } public void setTimeout_express(String timeout_express) { this.timeout_express = timeout_express; } public String getProduct_code() { return product_code; } public void setProduct_code(String product_code) { this.product_code = product_code; } }

4:编写支付业务代码service实现类

/** * 支付宝支付接口 * @param orderNo 订单号 * @param payMoney 支付金额 * @return */ @Override public String pay(AlipayBean alipayBean) { try { AlipayClient alipayClient = new DefaultAlipayClient( AlipayConfig.url,//支付宝网管 AlipayConfig.app_id,//appid AlipayConfig.private_key,//私钥 AlipayConfig.format,//json格式 AlipayConfig.charset,//编码格式 AlipayConfig.public_key,//公钥 AlipayConfig.sign_type);//签名方式 AlipayTradeAppPayRequest appPayRequest = new AlipayTradeAppPayRequest(); AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setBody("我是测试数据"); model.setSubject("App支付测试Java"); //请保证OutTradeNo值每次保证唯一 model.setOutTradeNo(alipayBean.getOut_trade_no());//订单号 model.setTimeoutExpress("30m");//超时时间 自定义 model.setTotalAmount(alipayBean.getTotal_amount());//前台传的支付金额 string类型 model.setProductCode("QUICK_MSECURITY_PAY");//写死 appPayRequest.setBizModel(model); appPayRequest.setNotifyUrl(AlipayConfig.notify_url);//回调地址 //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient.sdkExecute(appPayRequest); System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。 return response.getBody(); } catch (AlipayApiException e) { e.printStackTrace(); String msg = e.getMessage(); return msg; } }

5:回调方法

/** * 米币商城回调地址(学员端) * @param request * @param response * @return * @throws IOException */ @PostMapping("/notifyMibiMall01") public void notifyMibiMall01(HttpServletRequest request, HttpServletResponse response) throws IOException{ logger.info("米币商城学员端支付宝异步回调开始=============="); //1:从支付宝异步回调中取值 BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); Map aliParams = request.getParameterMap(); //用于存放转化后的参数集合 Map conversionParams = new HashMap(); for (Iterator iter = aliParams.keySet().iterator();iter.hasNext();){ String key = iter.next(); String[] values = aliParams.get(key); String valueStr=""; for (int i=0;i
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜