基于springboot 支付宝app端支付,可用于uni-app使用
1、添加maven依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId></dependency>

2、创建支付实体类:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("支付宝支付实体类")
@Accessors(chain = true)
@Url("https://openapi.alipay.com/gateway.do")
public class PayEntity implements Serializable {@JSONField(name = "out_trade_no")@ApiModelProperty(name = "out_trade_no"   , required = true  , value = "商户网站唯一订单号")private String outTradeNo ;@JSONField(name = "total_amount")@ApiModelProperty(name = "total_amount"   , required = true  , value = "订单总金额。单位为元,精确到小数点后两位,取值范围:[0.01,100000000] ")private String totalAmount ;@JSONField(name = "subject")@ApiModelProperty(name = "subject"        , required = true  , value = "订单标题。注意:不可使用特殊字符,如 /,=,& 等。")private String subject ;@JSONField(name = "product_code")@ApiModelProperty(name = "product_code"   , required = true  , value = "销售产品码,商家和支付宝签约的产品码。手机网站支付为:QUICK_WAP_WAY")private String productCode ;@JSONField(name = "auth_token")@ApiModelProperty(name = "auth_token"                        , value = "针对用户授权接口,获取用户相关数据时,用于标识用户授权关系")private String authToken ;@JSONField(name = "quit_url")@ApiModelProperty(name = "quit_url"                          , value = "用户付款中途退出返回商户网站的地址")private String quitUrl ;@JSONField(name = "time_expire")@ApiModelProperty(name = "time_expire"                       , value = "绝对超时时间,格式为yyyy-MM-dd HH:mm:ss")private String timeExpire ;@JSONField(name = "business_params")@ApiModelProperty(name = "business_params"                   , value = "商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式")private String businessParams ;@JSONField(name = "passback_params")@ApiModelProperty(name = "passback_params"                   , value = "公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝只会在同步返回(包括跳转回商户网站)和异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝。")private String passbackParams ;@JSONField(name = "merchant_order_no")@ApiModelProperty(name = "merchant_order_no"                 , value = "商户原始订单号,最大长度限制32位")private String merchantOrderNo ;@JSONField(name = "goods_detail")@ApiModelProperty(name = "goods_detail"                      , value = "订单包含的商品列表信息,json格式,其它说明详见商品明细说明")private GoodsDetail goodsDetail ;@JSONField(name = "extend_params")@ApiModelProperty(name = "extend_params"                    , value = "业务扩展参数")private ExtendParams extendParams ;@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic static class GoodsDetail implements Serializable{@JSONField(name = "goods_id")@ApiModelProperty(name = "goods_id"      , required = true   , value = "商品的编号")private String goodsId ;@JSONField(name = "alipay_goods_id")@ApiModelProperty(name = "alipay_goods_id"                   , value = "支付宝定义的统一商品编号")private String alipayGoodsId ;@JSONField(name = "goods_name")@ApiModelProperty(name = "goods_name"                        , value = "商品名称")private String goodsName ;@JSONField(name = "quantity")@ApiModelProperty(name = "quantity"                          , value = "商品数量")private Integer quantity ;@JSONField(name = "price")@ApiModelProperty(name = "price"                             , value = "商品单价,单位为元")private String price ;@JSONField(name = "goods_category")@ApiModelProperty(name = "goods_category"                    , value = "商品类目")private String goodsCategory ;@JSONField(name = "categories_tree")@ApiModelProperty(name = "categories_tree"                   , value = "商品类目树,从商品类目根节点到叶子节点的类目id组成,类目id值使用|分割")private String categoriesTree ;@JSONField(name = "body")@ApiModelProperty(name = "body"                              , value = "商品描述信息")private String body ;@JSONField(name = "show_url")@ApiModelProperty(name = "show_url"                          , value = "商品的展示地址")private String showUrl ;}@Data@Builder@NoArgsConstructor@AllArgsConstructorpublic static class ExtendParams implements Serializable{@JSONField(name = "sys_service_provider_id")@ApiModelProperty(name = "sys_service_provider_id"           , value = "系统商编号该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID")private String sysServiceProviderId ;@JSONField(name = "hb_fq_num")@ApiModelProperty(name = "hb_fq_num"                         , value = "使用花呗分期要进行的分期数")private String hbFqNum ;@JSONField(name = "hb_fq_seller_percent")@ApiModelProperty(name = "hb_fq_seller_percent"              , value = "使用花呗分期需要卖家承担的手续费比例的百分值,传入100代表100%")private String hbFqSellerPercent ;@JSONField(name = "industry_reflux_info")@ApiModelProperty(name = "industry_reflux_info"              , value = "行业数据回流信息, 详见:地铁支付接口参数补充说明")private String industryRefluxInfo ;@JSONField(name = "card_type")@ApiModelProperty(name = "card_type"                         , value = "卡类型")private String cardType ;@JSONField(name = "specified_seller_name")@ApiModelProperty(name = "specified_seller_name"             , value = "特殊场景下,允许商户指定交易展示的卖家名称")private String specifiedSellerName ;}}

3、支付util类:

@Slf4j
public class PayUtils {private AlibabaProperties alibabaProperties;public static PayUtils newInstance(AlibabaProperties alibabaProperties){PayUtils payUtils = new PayUtils();payUtils.alibabaProperties = alibabaProperties;return payUtils ;}public String  pay(PayEntity payEntity) throws Exception{AlipayConfig alipayConfig = new AlipayConfig();alipayConfig.setServerUrl(payEntity.getClass().getAnnotation(Url.class).value());alipayConfig.setAppId(alibabaProperties.getAppId());alipayConfig.setPrivateKey(alibabaProperties.getPrivateKey());if(ProjectStatus.windows操作系统.getValue().equals(alibabaProperties.getEnvironment())){try{alipayConfig.setAppCertPath(ClassLoader.getSystemResource(alibabaProperties.getAppCertPath()).getPath());alipayConfig.setAlipayPublicCertPath(ClassLoader.getSystemResource(alibabaProperties.getPublicCertPath()).getPath());alipayConfig.setRootCertPath(ClassLoader.getSystemResource(alibabaProperties.getRootCertPath()).getPath());}catch (Exception e){log.error("秘钥位置不正确:{}" , e.getMessage());throw BaseException.throwExNotLog(e.getMessage());}}else{alipayConfig.setAppCertPath(alibabaProperties.getAppCertPath());alipayConfig.setAlipayPublicCertPath(alibabaProperties.getPublicCertPath());alipayConfig.setRootCertPath(alibabaProperties.getRootCertPath());}alipayConfig.setFormat(alibabaProperties.getFormat());alipayConfig.setCharset(alibabaProperties.getCharset());alipayConfig.setSignType(alibabaProperties.getSignType());AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();request.setNotifyUrl(alibabaProperties.getNotifyUrl());request.setBizContent(JSONObject.toJSONString(payEntity.setProductCode(alibabaProperties.getProductCode())));try{AlipayTradeAppPayResponse response = new DefaultAlipayClient(alipayConfig).sdkExecute(request);if(response.isSuccess()) return response.getBody();throw BaseException.throwEx(JSONObject.toJSONString(response));}catch (Exception e){log.error("支付宝支付失败:{}" , e.getMessage());throw BaseException.throwEx(e.getMessage());}}public Boolean sign(Map<String , String> params) throws Exception{if(ProjectStatus.linux操作系统.getValue().equals(alibabaProperties.getEnvironment())) return AlipaySignature.rsaCertCheckV1(params , alibabaProperties.getPublicCertPath() , alibabaProperties.getCharset() , alibabaProperties.getSignType());return AlipaySignature.rsaCertCheckV1(params , ClassLoader.getSystemResource(alibabaProperties.getPublicCertPath()).getPath() , alibabaProperties.getCharset() , alibabaProperties.getSignType());}}

基于springboot 支付宝app端支付,可用于uni-app使用相关推荐

  1. 基于springboot微信小程序支付功能实现

    基于springboot微信小程序支付功能实现 简单的封装微信小程序支付功能,支付工具类所依赖的fastjson.lombok.wagegger, 1.添加maven依赖: 版本号可根据自己项目的实际 ...

  2. 支付宝——PC端支付

    支付宝--PC端支付 首先登录蚂蚁金服开放平台,入驻选择自由研发的这些就不说了,注册下信息就可以了. 在开发者中心,开放者接入进行创建应用,添加功能等操作 创建完对应的应用后,去应用列表添加电脑网站支 ...

  3. JAVA对接微信支付和支付宝支付(APP端支付)

    本文主要介绍的是JAVA对接支付宝和微信支付,废话少说上代码(部分业务代码就不上了,例如订单等,根据业务需求自行修改): 用到的工具类: maven依赖: <!-- https://mvnrep ...

  4. 实战APP微信支付服务商模式(一个APP多个商户收款)

    由于项目需要对接微信支付功能,需求是:一个APP实现不同商户进行收款,花时间去研究了下官方文档,决定采用微信支付APP服务商模式进行实现,开发时也踩了不少坑(参数顺序及大小写.签名的加密方式等),这里 ...

  5. java app微信支付接口_JAVA微信APP支付接口整合

    上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它大同小异了,当然这其中肯定是有各种变化的: 首先让我把微信支付文档的官网贴 ...

  6. uniapp app端调起google地图app,传参导航到对应位置

    主要功能:app内调起google地图app,传递终点经纬度,并导航到终点 效果图 1.代码 /**latLng String 例如:'31.1443439,121.808273'*/ navGoog ...

  7. 基于Springboot+支付宝小程序会员开卡功能的服务端实现总结

    简述 因为业务需要,公司项目的支付宝小程序服务端,要能够支持在线会员卡的开卡与发卡操作,自己参考支付宝官方文档实现了功能,但是开发过程中遇到很多问题,索性基本都解决了,现在有时间做一下总结. 官方开发 ...

  8. SpringBoot支付宝扫码支付(沙箱环境)

    目录 前言 一.起调代码如下: 1.1 config配置类信息 1.2 AlipayController层 1.3 AlipayService层 二.支付宝回调接口 2.1 AlipayCallbac ...

  9. 支付宝wap端支付php对接_PHP接入支付宝手机网站支付、移动支付接口

    前面已经说完了 PHP接入支付宝 即时到帐接口 回调接口也已经完成.这篇主要讲 手机网站支付 . 移动支付 接口的调用.调用方式与即时到帐 基本一样. 关于代码部分的详细解释,请 参看 PHP接入支付 ...

最新文章

  1. 您必须有下列压缩分卷才能继续解压
  2. window.open 和showModalDialog的返回值
  3. (1).数据结构概述
  4. 自定义jQuery插件
  5. (70)Verilog HDL测试激励:复位激励2
  6. svn .a文件上传不了
  7. Java 10 var关键字详解和示例教程
  8. 马云后悔创办阿里:想停根本停不下来;人民日报评“滴滴顺风车争议”;jQuery 曝漏洞|极客头条...
  9. poj 1032 Parliament 编程的小技巧
  10. 基于留一法的快速KNN代码
  11. 【感悟】放开那条大腿,让我来!
  12. C++字符编码的查看和检测
  13. python小游戏之一
  14. 计算机基础知识集体备课,计算机基础知识集体备课.doc
  15. n行杨辉三角 Python
  16. Unix网络编程卷1源代码使用
  17. 使用vld查看OPCode
  18. SMILES, a Chemical Language and Information System.【SMILES, 一种化学语言和信息系统。】
  19. HMAC和密钥导出(HMAC and Key Derivation)
  20. 如何区分when引导中的定语从句与时间状语从句

热门文章

  1. 适合练习听力的英文电影推荐
  2. byte java 详解_详解java中的byte类型
  3. 什么叫最少拍计算机控制系统,最少拍无波纹计算机控制系统的一种综合方法.doc...
  4. 关于Java的二十篇技术热文
  5. 电子签名屏什么牌子好
  6. 阿里巴巴大数据竞赛(2014年3月10日到11月)
  7. jquery.uploadify php,jQuery上传插件Uploadify的使用方法
  8. SATA、AHCI、ATA等相关知识概述
  9. Arturia黑五促销,仅剩一天
  10. 无题--仅以此文来总结我过去的五年