1、准备工作

支付宝开发api(手机网站支付):https://docs.open.alipay.com/api_1/alipay.trade.wap.pay

1.1、登录蚂蚁金服开放平台
https://open.alipay.com/platform/manageHome.htm

1.2、选择控制台 -》网站&移动应用

1.3创建应用

1.4添加能力

1.5下载签名工具,地址:https://docs.open.alipay.com/291/105971/ ,下载windows,点击:RSA签名验签工具

1.6点击生成秘钥,生成商户私钥和应用秘钥,并且会以文本(txt)的方式保存起来

生成秘钥过程具体看支付宝文档

1.7 拿到APPID 应用公钥私钥支付宝公钥 回到商家中心 绑定APPID 提交审核 审核通过应用处于已上线才能进行测试对接

2、代码开发

2.1 引入java sdk包

<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.7.26.ALL</version>
</dependency>
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version>
</dependency>

2.2 开发配置类

不使用应用公钥

public class PayConfig {// 应用IDpublic static String APP_ID = "2021003124687304";// 应用私钥public static String MERCHANT_PRIVATE_KEY = "MIIEvQIBADA****";// 应用公钥public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9***";//    支付宝公钥public static String ZFB_PUBLIC_ID = "MIIBIjANBgkqhkiG9*****";//  异步通知   【稍后会进行解释】public static String notify_url = "http://**.**.**/api/pay/aliCallback";// 支付成功后出现几秒的回调页面public static String return_url = "****";// 签名方式public static String SIGN_TYPE = "RSA2";// 字符编码格式public static String CHARSET = "utf-8";//数据类型public static String format = "json";//销售产品码,商家和支付宝签约的产品码,默认值为:QUICK_WAP_WAYpublic static String productCode = "QUICK_WAP_WAY";// 支付宝网关  alipaydev 为沙箱网关public static String GATEWAYURL = "https://openapi.alipay.com/gateway.do";}

2.3拉起支付代码

/*** 支付宝支付** @return*/private String aliPay(NftOrder nftOrder) throws AlipayApiException {//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(PayConfig.GATEWAYURL, PayConfig.APP_ID,PayConfig.MERCHANT_PRIVATE_KEY, "json", PayConfig.CHARSET, PayConfig.ZFB_PUBLIC_ID,PayConfig.SIGN_TYPE);//该笔订单允许的最晚付款时间String timeout = "30m";//设置请求参数String content = "{\"out_trade_no\":\"" + "系统订单号"+ "\","+ "\"total_amount\":\"" + "0.01" + "\","+ "\"subject\":\"" + "商品名称") + "\","+ "\"timeout_express\":\"" + timeout + "\","+ "\"body\":\"" + "商品描述" + "\","+ "\"product_code\":\"" + PayConfig.productCode + "\"}";AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();alipayRequest.setReturnUrl(PayConfig.return_url);alipayRequest.setNotifyUrl(PayConfig.notify_url);alipayRequest.setBizContent(content);//请求String result = alipayClient.pageExecute(alipayRequest).getBody();return result;}

2.4这时候就会在网页让你打开支付宝 进行支付

效果图

2.5支付成功回调接口 接口必须对外开放能在公网访问到 这是阿里云调用你的接口

@ApiOperation(value = "H5支付支付宝回调", notes = "H5支付支付宝回调")@PostMapping(value = "/aliCallback")@UnAuthenticationpublic JsonResult aliCallback(HttpServletRequest request) throws AlipayApiException {System.out.println("/aliCallback进入支付宝PC异步回调");Map<String, String> params = new HashMap<String, String>();//从支付宝回调的request域中取值Map<String, String[]> requestParams = request.getParameterMap();for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext(); ) {String name = iter.next();String[] values = requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";}// 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");params.put(name, valueStr);}System.out.println(request.toString());System.out.println(params.toString());//商品订单号String out_trade_no = request.getParameter("out_trade_no"); // 商户订单号String trade_no = request.getParameter("trade_no"); // 流水号System.out.println(out_trade_no);// 当前交易状态String tradeStatus = request.getParameter("trade_status"); //交易状态// 支付金额String totalAmount = request.getParameter("total_amount"); //交易状态// 支付时间String payDate = request.getParameter("gmt_payment"); //交易状态//3.签名验证(对支付宝返回的数据验证,确定是支付宝返回的)boolean signVerified = AlipaySignature.rsaCheckV1(params, PayConfig.ZFB_PUBLIC_ID, PayConfig.CHARSET,PayConfig.SIGN_TYPE);if (signVerified) {System.out.println("验签通过");//验签通过if (tradeStatus.equals("TRADE_SUCCESS")) {//支付成功后的业务处理System.out.println("TRADE_SUCCESS");return payService.notifyPcOrder(out_trade_no, trade_no);}} else { //验签不通过System.out.println("验证失败");return new JsonResult().setSuccess(false).setMsg("验证失败");}System.out.println("支付失败");return new JsonResult().setSuccess(false).setMsg("支付失败");}

2.6退款接口

public RefundResult aliRefund(String outTradeNo, String tradeNo, String refundAmount, String refundReason) {RefundResult refundResult = new RefundResult();AlipayClient alipayClient = new DefaultAlipayClient(PayConfig.GATEWAYURL, PayConfig.APP_ID, PayConfig.MERCHANT_PRIVATE_KEY, "json",PayConfig.CHARSET, PayConfig.ZFB_PUBLIC_ID, PayConfig.SIGN_TYPE);AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();JSONObject bizContent = new JSONObject();bizContent.put("trade_no", tradeNo);bizContent.put("out_trade_no", outTradeNo);bizContent.put("refund_amount", refundAmount);request.setBizContent(bizContent.toString());AlipayTradeRefundResponse response = null;try {response = alipayClient.execute(request);} catch (AlipayApiException e) {e.printStackTrace();refundResult.setCode(String.valueOf(-2));refundResult.setResult("支付宝退款异常,调用异常");return refundResult;}if (response.isSuccess()) {String result = response.getBody();System.out.println("调用成功");refundResult.setCode(response.getCode());//通过code ==10000判断是否成功refundResult.setResult(result);return refundResult;} else {System.out.println("调用失败");refundResult.setCode(String.valueOf(-1));refundResult.setResult("支付宝退款异常,调用失败");return refundResult;}}

3.uniapp支付

订阅专栏
3.1,接口返回url形式

使用window.location.href跳转支付

3.2,接口返回form表单形式

uni.request({url: '后端支付下单接口地址',method: 'POST',success: (res)=>{// 将接口返回的form表单显示到页面document.querySelector('body').innerHTML = res.data;// 调用submit方法document.forms[0].submit()}
});2

Sprinboot支付宝h5支付、退款(java版)相关推荐

  1. 支付宝h5支付(java版)

    1.准备工作 支付宝开发api(手机网站支付):https://docs.open.alipay.com/api_1/alipay.trade.wap.pay 1.1.登录蚂蚁金服开放平台 https ...

  2. c# .net core 微信、支付宝H5支付链接获取,支付回调方法,退款方法小计

    支付链接获取 //隐藏代码:获取一个订单model实体,并判断此订单是否发起过支付链接吊起,如发起过且链接没过期,则直接返回支付链接(仅限微信)if (//隐藏代码:判断是否为待付款){switch ...

  3. uni-app 接入银联H5支付(Java)思路代码

    uni-app 接入银联H5支付(Java)思路代码 uni-app-web-view Java(后台部分代码)可以参考官方的Demo取代码 银联文档地址: H5支付. 第一次接触银联支付的话建议 跑 ...

  4. C# ASP.NET MVC 微信和支付宝H5支付开发及Demo

    微信和支付宝H5支付 最近开发任务遇到了一个要在手机浏览器里面调起微信和支付宝去支付的开发需求,以前都是做的扫码支付或者JSAPI都是在软件内部支付的,没遇到过在自己浏览器内唤醒微信或者支付宝的支付这 ...

  5. 新版开运网运势测算网站源码 支持微信/支付宝H5支付 支持分销代理 可封装APP

    源码介绍 我在外面花钱购买的某站VIP资源,就是那种搬砖站,买来没时间调试发给大家看看吧,喜欢的就下去玩玩! 支持微信/支付宝H5和电脑端扫码支付.手机端可以调起微信/支付宝应用支付 支持后台设置价格 ...

  6. TP yansongda 支付 支付宝(H5)支付 微信支付(H5)支付

    (支付宝H5支付,已经在支付宝弄好商户号) $order = ['out_trade_no' => time(), // 生成订单'total_amount' => '1', 金额'sub ...

  7. tp5 集成支付宝h5支付接口

    tp5 集成支付宝h5支付接口 前台支付的时候调取后台接口 function alipay(order_sn){$.ajax({url: '接口地址',type: "GET",da ...

  8. 利用抖音Cookie充值接口提取支付链接,调起原生微信h5支付宝h5支付

    最近开始搞一些个人支付通道的开发,方便个人不用和第三方平台签约就能收款,省去很多流程手续的成本. 然后翻了一下网上并没有太多现成的技术教程,只能自己研究着搞了. 这次要分享的是利用抖音的充值接口,去分 ...

  9. h5支付不能打开支付宝 ios_iOS 解决微信h5支付,支付宝h5支付无法直接返回APP的问题...

    由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付.这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷. 但是真正做的时候问题来了,当你支付成功之后或 ...

  10. 微信h5支付和公众号支付、支付宝h5支付

    1.微信h5支付: 首先是支付参数的构建,这个需要通过后台进行组装,后台会跟微信进行数据的交互,而你所需要做的是拿到返回的数据,然后传递给微信的JSSDK,由微信的JSSDK进行后续操作,比如说先跳转 ...

最新文章

  1. linux内网机器访问外网代理设置squid
  2. 构建根文件系统启动(1)
  3. lofter 爬虫_200627 | Lofter格兰芬多标签日榜
  4. [hls]m3u8视频如何处理成加密?
  5. LuoguP5897 [IOI2013]wombats
  6. 【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误
  7. 基本类型赋值和普通对象赋值的不同
  8. Python 字符串和列表的转化 ,简单到尖叫
  9. python中类型转换的规则_Python 类型转换指南
  10. 0928多线程运行——作业
  11. oracle _db_block_write_batch,Oracle体系结构----实例的进程结构
  12. nodeMCU(ESP8266)和RC522的接线图
  13. 上海交大计算机基础高万萍老师怎么样,上海交通大学网络教育学院.ppt
  14. 网络安全实战之靶场渗透技术
  15. 解决git报错:‘fatal: unable to access ‘https://XXX: Failed onnect to github. com port 443: Timed out
  16. mybatis的startPage使用
  17. 萧红二不二?人是在最日常的生活中流逝的……你窗边革命洪流过去的时候,可能你正在剥一颗鸡蛋
  18. 记一道面试算法题: 某学校需要一个能给学领前儿童自动出三个数加减法的算术题的程序(此处省略一万个字)
  19. T-SQL - 习题02_将数据表year|month|amount查询成year|m1|m2|m3|m4的样式
  20. 如何在FPS游戏中快速实现简单的人体定位算法

热门文章

  1. 基于JAVA+SpringMVC+MYSQL的汽车4S店管理系统
  2. viper12a电源电路图_viper12a引脚功能图与引脚电压
  3. Java8遍历Map、Map转List、List转Map
  4. 非线性光纤光学——四波混频
  5. unity使用Curvy随机选择路线
  6. TMOD、TCON、SCON、PCON、SBUF寄存器说明
  7. 15日精读掌握《高德纳:具体数学》计划(2019.5/27-2019/6/10)
  8. 智慧城管统计考评详解
  9. ds90ub934 i2c 配置_TI ds90ub954 芯片调试简单总结
  10. 用栈实现的算术表达式的运算