话不多说,直接开撸!!!

import com.egzosn.pay.ali.api.AliPayConfigStorage;
import com.egzosn.pay.ali.api.AliPayService;
import com.egzosn.pay.ali.bean.AliTransactionType;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.PayOrder;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.common.util.sign.SignUtils;
import com.shineyoo.api.platform.core.response.Result;
import com.shineyoo.api.platform.core.response.ResultGenerator;
import com.shineyoo.edu.organizationOrder.domain.OrganizationOrder;
import com.shineyoo.edu.organizationOrder.service.IOrganizationOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;/*** 发起支付入口*/
@RestController
@RequestMapping("ali")
public class AliPayController {private PayService service = null;@Autowiredprivate IOrganizationOrderService orderService;@PostConstructpublic void init() {AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();//aliPayConfigStorage.setPid("2088102169916436");// aliPayConfigStorage.setAppid("2017112400141933");// aliPayConfigStorage.setKeyPublic("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAthqKx5rnB5+LMqiaxLaUHU1jyMAcaECq2MzSUZVK+kFj9ai2Y3cHNEo0Idq/Mhup7vlxY2RZ04KrwD84NTtXP2JKN345PFhJp7fWR2bQKeuXPzoLdNGy8LaPlPQIJl03xbojVW/1OMykb70yIYgZaCg6muQ9YWitAPVqlNHjIa42k6/Bx51WoW8mKJB6In5LOvZbi1UfLkkRIpl3c8f8CfnkFgOISMDR2Xm+eJB+uGGYG94CxdkvnC81DKDfw2Bqu5v6aeH65LSBjnHaiDq2gsGVL1wVOYqZfQv/Ag7H+911Mec3eVxFzq73cPE7UXSg5lLGsN+ugGNzZsl6o6L0ywIDAQAB");// aliPayConfigStorage.setKeyPrivate("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCIGjTDUImUvPn+H9TtYsZioGhxw6EPl/VmNrC7RmVpADTBKvqaCFUzsG1UZvwnLO08nCqhW70uJZz7rSiXurAOnHuSoUoRuCPtXcg7vShLUtorjYHMVzDBHQw5Civ5r6NlYMRnjvxLpM4pmEhDGSqncrc6m57RXxsL/0sLq2kTDOSo8sCmDcOENeaMpV62/Z9H3LH4qwLJ3VD8HzI5HlvM/w4sSEymtrzpQF/pZm8x99yDy0SmspAHcm6mOJ/Uh4aTm06bscRW02/3I3cCCv346qzpzoYtl1IDFrjCw+5yre2i9rbEewM1EsCOZ0VPT9Zkve7uF2fwfTTs1fsII5ANAgMBAAECggEAaaJ9ZUKzJgBuv/CQ4RaTB6Wcqv+9mE7HJug3z4LZ3t9MEsl66+afypiaorGz7+wMzcgfxlFfydtjtms1YF6DmzOVLb+Fr68OI4Nwj/1Gsv/BWaBhJ+pcauZSwErGyuqplVu/1OjDpSpq4RnSrFFyK7j7wb9bSwHYCj3BT3NhAGkSi7Vqv35ILyccpVnW2Pli43zyL7nksZDKmxb12CjzfkhdO7S25jTrYF0oUS4SOPLAnLG93HAAizN6u5uD0fq2F6d/PtPatAffAh838HvcS3eUpBIXT+2ZWq+N8hmZXbHujt2MR+N7VMsPLD38UwY/lJ+Lm+qZ2TF8BFERrRrs+QKBgQDYE4teWZ6C4+yAhSTusak5fQ2AW6dI+w5viHCDJJxdjTzGTeSClGVIKTrHGqHAtm903fAAERySxJS0xQFuMIVx0axWBZPSbTIcy7aGeOhBtVdXOOLLHsU6jOW5gMrb+tEUJ8So9XAPMxFxSKb8rA8UGvIjN21WfJSr1f3t813+YwKBgQChP+BHxV5LHgz3H53ZM/FNRya8i9opnrT4heIdX76e0gOCOBCna8CkugUhZaP7Mqmfr6szmkb1dt1+ssBSQYXj/NHWI9spYpOHmgk1bTRYrXyvuu62lrFFaPXl/qA5qErJEffy/JIrTBD41QKF5GpJbOtpLGQp0A2Cuo52CPEKzwKBgAacSnY/fab5fCHOcPvQeaHlnoUfyLVl4OIupWqNsy71hDd46JXKHnMft8mhmfNAYZaMt6v42gvvcbE6GboaR+rchE45a3VTm+XfoZzplAl2l852UhHuxg/tgZW0SACE4uKf+NdGcwA0CsORenJefTObQ28qYfD0bMP5DwS5nlWLAoGAYrKoYwXJq4zfPrvZcEM85aIxcaLgjC0adCvutTAPi0Lc5u3OM8vehHVgAosmDfF6pcVusw0xdbml5ZEf6rk0bNIo1jvoP7KYvp1oGY2YRtcZxK5UwuoF44hVSsvJ4sDB1cTr0Y0LIvlSQhyPiMjAzeSfSybiwD0ap/Pskw7yCz0CgYEA0TK9mveq1JuzuVH4jLk9WGciFbpRgyqHgKjfT2zAfqtqJpklpLyKjbrO2sFM3bPlsYQkfw4U2L/yDwmOCMya+yj7XrXCNMvDjVHuDpPClie7z2u7BNbqc9k/4I0kUG5XCebF+54OLfjpUFheZ+AXvLSp/SOkVoQB01ViENhfiBM=");//善友aliPayConfigStorage.setAppid("");//appidaliPayConfigStorage.setKeyPublic("");//共有密钥aliPayConfigStorage.setKeyPrivate("");//私有密钥aliPayConfigStorage.setNotifyUrl("");//回调地址aliPayConfigStorage.setReturnUrl("");//支付成功返回地址aliPayConfigStorage.setSignType(SignUtils.RSA2.name());//aliPayConfigStorage.setSeller("");aliPayConfigStorage.setInputCharset("utf-8");//是否为测试账号,沙箱环境aliPayConfigStorage.setTest(false);//请求连接池配置HttpConfigStorage httpConfigStorage = new HttpConfigStorage();//最大连接数httpConfigStorage.setMaxTotal(20);//默认的每个路由的最大连接数httpConfigStorage.setDefaultMaxPerRoute(10);service = new AliPayService(aliPayConfigStorage, httpConfigStorage);//增加支付回调消息拦截器//service.addPayMessageInterceptor(new AliPayMessageInterceptor());//设置回调消息处理//service.setPayMessageHandler(spring.getBean(AliPayMessageHandler.class));}/*** showdoc* @title 支付宝页面* @description 支付宝页面* @method post* @url ip:port/ali/toPay.html* @return* @remark* @number 1*/@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")public Result toPay(@RequestBody Map map) {String orderId = "";if (map.get("orderId") != null) {orderId = map.get("orderId").toString();} else {return ResultGenerator.genFailedResult();}List<OrganizationOrder> orders = orderService.selectOrganizationOrderList(new OrganizationOrder().setOrderNo(orderId));OrganizationOrder organizationOrder = new OrganizationOrder();if (orders != null && orders.size() > 0) {organizationOrder = orders.get(0);}//及时收款PayOrder order = new PayOrder(organizationOrder.getComment(), "余额充值", new BigDecimal(organizationOrder.getPrice()), organizationOrder.getOrderNo(), AliTransactionType.PAGE);return ResultGenerator.genOkResult(service.toPay(order));}/*** 支付回调地址** @param request 请求* @return 返回对应的响应码* @throws IOException IOException*/@Deprecated@RequestMapping(value = "payBackBefore")public String payBackBefore(HttpServletRequest request) throws IOException {//获取支付方返回的对应参数Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());if (null == params) {return service.getPayOutMessage("fail", "失败").toMessage();}//校验if (service.verify(params)) {//这里处理业务逻辑String orderId = params.get("out_trade_no").toString();Float price = Float.parseFloat(params.get("total_amount").toString());List<OrganizationOrder> orders = orderService.selectOrganizationOrderList(new OrganizationOrder().setOrderNo(orderId));if(orders != null && orders.size()> 0){if(orders.get(0).getPrice().equals(price)){//支付成功,更新订单信息orderService.updateOrgOrder(orderId,1);}}//......业务逻辑处理块........return service.successPayOutMessage(null).toMessage();}return service.getPayOutMessage("fail", "失败").toMessage();}
}

需要导入的pom

<pay.version>2.12.7-SNAPSHOT</pay.version><dependency><groupId>com.egzosn</groupId><artifactId>pay-java-ali</artifactId><version>${pay.version}</version></dependency>

上面的pom文件下不下来,可以引用我这个包
支付宝jar

Java调用支付宝完成支付相关推荐

  1. JAVA调用支付宝直充接口

     分类: 技术空间 2009-01-03 00:31 7011人阅读 评论(4) 收藏 举报 java string payment url service object JAVA调用支付宝的直充 ...

  2. java对接支付宝实现支付功能

    ** java对接支付宝实现支付功能 ** Controller /*** 支付功能* @return*/ @RequestMapping("/test") public Mode ...

  3. java 调用支付宝支付接口

    最近公司在做支付模块,在接入过程中遇到了很多坑,费了不少事,现在分享一下接入方法,也记录一下,以后可能还用的到.用的是支付宝的即时到帐支付功能和微信的扫码支付功能,相比起来,个人感觉支付宝的文档和接入 ...

  4. Java调用支付宝支付接口

    一.场景:公司需要在网站上进行支付宝支付. 二.API:使用支付宝开放平台的支付能力-即时到账接口.支付宝开放平台链接 三.分析: 1.支付宝的文档比较容易看,主要是有相应的DEMO,我这里看的DEM ...

  5. java调用支付宝接口代码介绍

    App支付产品介绍 更新时间:2018-05-08 场景介绍 适用于商家在App应用中集成支付宝支付功能. 商家APP调用支付宝提供的SDK,SDK再调用支付宝APP内的支付模块.如果用户已安装支付宝 ...

  6. Java实现支付宝APP支付实现记录

    支付宝支付成功返回结果封装 import com.alibaba.fastjson.annotation.JSONField;import java.math.BigDecimal; import j ...

  7. 【支付宝支付】Java实现支付宝APP支付流程

    前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...

  8. java实现支付宝接口---支付

    java实现实现支付宝接口 蚂蚁沙箱环境 (Beta) 是协助开发者进行接口功能开发及主要功能联调的辅助环境.可以模拟实现支付宝的支付功能. 接下的实现技术是运用到springmvc注解方法实现的支付 ...

  9. php调用支付宝微信支付接口 免签约 实测能用

    找了很多支付宝微信支付收款的办法,接入的时候发现根本不靠谱,终于实测到了一个可以用的,(验证效果不用改代码,php环境下Demo.php直接打开看就行了 附件放在下面了) 支付宝收款实测有效,微信支付 ...

最新文章

  1. 主要元素(超过一半元素)
  2. 深入理解C++中的mutable关键字 ​
  3. jq 获取当时时间的到秒_空军飞行员忆战机被鸟撞后的37秒
  4. 皮一皮:只恨不为女儿身...
  5. 三刺激值计算公式_常用的车削、铣削、钻削加工计算公式全在这里了,随用随查...
  6. 忘记手机绑定过的UC/交易猫账号怎么找回
  7. leetcode 525. Contiguous Array | 525. 连续数组(Java)
  8. 光华科技光刻胶_【收藏】6天5板!21只光刻胶概念(名单)“出炉”!
  9. unity3d 取锚点位置_周三手机课实时共享位置,方便朋友找到见面地点
  10. Spring AOP技术(基于AspectJ)的Annotation开发
  11. vscode取消底部横滚动条(自动换行)
  12. 【乐畅】工作积累 ---- 设置一个弹窗的层
  13. 宝塔面板安装和使用教程(详细)
  14. 前端-微信、企业微信JS-SDK实时调试方法
  15. 全家福缺一个人怎么P图上去-免费+效果好
  16. 基于BP神经网络的PID智能控制
  17. 新概念英语1册57课
  18. windo10系统哪个版本运行最快呢?
  19. windows +linux(ubuntu) 2020.7 双系统最新安装心得
  20. [unknown OJ] 养花

热门文章

  1. python中sample怎么用_python – 在Keras中使用sample_weight进行序列标记
  2. 最新Java学习路线,java入门到精通,Java自学者的福利
  3. IT运维管理工具大全
  4. 黑莓开发之环境的搭建
  5. 科技新问:光明四步PK激光手术,谁是近视眼克星?
  6. CS224W note 3
  7. 数字孪生钢铁行业研究案例
  8. window.open 打开窗口 最大化 close() 强制 关闭窗口
  9. Python编写坦克大战(新增无敌模式)
  10. 精诚EAS-EAM条码化资产管理软件