最近完成的差不多的项目突然需要加退款的流程需求了,所以来小小的实现以下。

其实对比其他的支付和退款来说,支付宝算是特别专业,也是特别简单的一个了。

一、引入支付宝SDK

在这里说一下,其实每种支付都会有一个官方带的SDK,我们可以把这个sdk引入到我们的项目中去,然后我们就可以调用里面的方法和对象,给里面传值,进行我们相应的请求的访问和介入。

首先引入如上图所示的jar包,然后我们就算是成功了一半了。

下载地址

然后我们需要把这个jar包引入到所需要的地方,这里不做过多的描述。

二、找到需要的资源

做支付,最最基本的还是各种appid,还有公钥,私钥,以及请求的网关等等内容,支付宝需要的包括:

APP_ID:开放平台账号申请的appid

requestUrl:实现功能所需要请求的网关地址

APP_PRIVATE_KEY:用户自己生成的私钥

ALIPAY_PUBLIC_KEY:支付宝生成的公钥

CHARSET:我们需要的字符编码,一般为utf-8的

三、编写请求代码

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import com.alipay.api.AlipayClient;

import com.alipay.api.DefaultAlipayClient;

import com.alipay.api.domain.AlipayTradeRefundModel;

import com.alipay.api.request.AlipayTradeRefundRequest;

import com.alipay.api.response.AlipayTradeRefundResponse;

public class AlipayUtil {

private static final Logger LOGGER = LoggerFactory.getLogger(AlipayUtil.class);

private static String APP_ID = "234789720984098";

//支付宝退款请求的网关

private static String requestUrl = "https://openapi.alipay.com/gateway.do";

//用户自己生成的私钥

private static String APP_PRIVATE_KEY = "随机字符,见文档";

//支付宝公钥

private static String ALIPAY_PUBLIC_KEY = "从支付宝中获得";

//编码级别

private static String CHARSET = "UTF-8";

public static String refundOrder(AliRefundTO aliRefundTO){

System.out.println("开始调用支付宝加密******************************************************");

//实例化客户端

AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");

//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。

AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel();

refundModel.setTradeNo(aliRefundTO.getTrade_no());

refundModel.setRefundAmount(aliRefundTO.getRefund_amount());

refundModel.setRefundReason("商品退款");

//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay

AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

request.setBizModel(refundModel);

try{

AlipayTradeRefundResponse response = alipayClient.execute(request);

System.out.println(response.getMsg()+"n");

System.out.println(response.getBody());

}catch(Exception e){

e.printStackTrace();

LOGGER.error("支付宝退款错误!",e.getMessage());

}

return "";

}

public static void main(String[] arg){

AliRefundTO aliRefundTO=new AliRefundTO();

aliRefundTO.setRefund_amount("0.01");

aliRefundTO.setTrade_no("2018050421001004310518105890");

String res=refundOrder(aliRefundTO);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 支付宝退款_java实现支付宝退款功能相关推荐

  1. java lambda函数_Java SE 8新功能介绍:使用Lambda Expression进行函数式编程

    java lambda函数 " Java SE 8新功能浏览 "系列的这篇文章将深入了解Lambda表达式 . 我将向您展示Lambda表达式的几种不同用法. 它们都具有功能接口的 ...

  2. java web购物车_java web开发——购物车功能实现

    之前没有接触过购物车的东东,也不知道购物车应该怎么做,所以在查询了很多资料,总结一下购物车的功能实现. 查询的资料,找到三种方法: 1.用cookie实现购物车: 2.用session实现购物车: 3 ...

  3. java web 分页_Java Web(十一) 分页功能的实现

    虽然现在有很多好用的框架,对分页进行支持,很简单的就把分页的效果做出来,但是如果自己手写是一个怎样的流程的?今天就来说说它,手动实现分页效果. --WH 一.分页的思路 首先我们得知道写分页代码时的思 ...

  4. java ftp服务器_Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Downl ...

  5. java udp聊天_Java UDP实现聊天功能代码

    我以前经常写的是基于TCP的网络编程,由于TCP建立连接鼻血要经过三次握手连接,服务器端需要阻塞式等待客户端的连接.而UDP则是可以直接向目的地址的目的端口上发送数据包,由于它只负责发送出去就好,不管 ...

  6. java实现抽奖_Java实现简单抽奖功能界面

    本文实例为大家分享了Java实现简单抽奖功能的具体代码,供大家参考,具体内容如下 要求:定义文本框添加姓名,将姓名存储并且在界面中可见,点击抽奖按钮进行抽奖并输出最后的中奖得主. 关于抽奖当然需要用到 ...

  7. java arraylist实现_java实现ArrayList基本功能

    本篇介绍手动实现一个ArrayList的基本功能. ArrayList的底层是一个动态数组,这个有别于LinkedList的链表.代码实现了ArrayList的基本功能,所以没有实现ArrayList ...

  8. java虚拟路由器_Java实现模拟路由功能

    本文实现根据路由表适配最优的号段,选择路由器.选择路由的规则: 1.号段num和网元都不能重复 2.号段num不能重复 3.选择号码适配长度最长的网元为路由目的地 RouterService.java ...

  9. java 代码重用_Java 代码重用:功能与上下文重用

    我几乎不需要讨论为什么重用代码是有利的.代码重用通常使得程序开发更加快速,并使得 BUG 减少.一旦一段代码被封装和重用,那么只需要检查很少的一段代码即可确保程序的正确性.如果在整个应用程序中只需要在 ...

最新文章

  1. C#2.0模拟List和内置算法
  2. Java并发编程:阻塞队列
  3. seaborn系列 (2) | 散点图scatterplot()
  4. Zabbix监控详解
  5. python怎么反转单链表_单链表反转python实现代码示例
  6. Python练习 | Python3中的格式化输入输出之print函数
  7. java 绝对路径_java 获取绝对路径
  8. javascript 栈 Stack
  9. 使用google map实现周边搜索的功能_「转」“搜索”的原理,架构,实现,实践,面试不用再怕了...
  10. Java关键字synchronized的简单理解
  11. 菜鸟春招启动:面向全球毕业生开放八类岗位 超8成是物流运营人员
  12. 地理空间数据Geometry在MySQL中使用(二)
  13. java 生成zip如法打开_Java创建ZIP压缩文件的方法
  14. 安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)
  15. 中南林科大c语言程序设计,2017年中南林业科技大学计算机与信息工程学院802C语言与数据结构之C程序设计考研强化模拟题...
  16. java设置随机数教程
  17. ARM开发比51开发高级吗—嵌入式就业技能分类
  18. 爱思服务器shsh文件类型,爱思服务器查询shsh失败
  19. 神舟电脑文件丢失怎么办?分享文件丢失常见原因和恢复方法
  20. 花嫁之容氏浅浅最后怎么样了_花嫁之容氏浅浅小说

热门文章

  1. 在64位Ubuntu 16.04系统里安装Qt 5.9.1
  2. 李沐《动手学深度学习》第二版比赛2-Classify Leaves
  3. 基于JAVA房屋租赁系统计算机毕业设计源码+系统+lw文档+部署
  4. 南京大学本科、斯坦福博士、化学奥赛金牌得主 王庆根 人生反思
  5. 万用表和示波器测量的区别?简单看完,让你少走弯路
  6. 20162316刘诚昊 队列课下作业
  7. 2021年汉语高考成绩查询,2021年全国高考成绩查询入口,全国教育局高考成绩查询官网...
  8. yep Chain连通虚拟与现实
  9. 【ROS学习】ROS系统安装 kinetic (超详细)
  10. latex 公式 (正式,非正式。编号,不编号)