Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Evan Liu
hms
提交
a89dc879
H
hms
项目概览
Evan Liu
/
hms
通知
10
Star
5
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hms
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a89dc879
编写于
8月 17, 2021
作者:
刘
刘兴
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增支付宝控制器
上级
22bdafbb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
198 addition
and
0 deletion
+198
-0
HMS/src/main/java/com/hqyj/seven/controller/AlipayController.java
...main/java/com/hqyj/seven/controller/AlipayController.java
+198
-0
未找到文件。
HMS/src/main/java/com/hqyj/seven/controller/AlipayController.java
0 → 100644
浏览文件 @
a89dc879
package
com.hqyj.seven.controller
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.DefaultAlipayClient
;
import
com.alipay.api.request.*
;
import
com.hqyj.seven.utils.AlipayConfig
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
/**
* Created by IntelliJ IDEA.
* @File AlipayController.java
* @Auth liuxing
* @Date 2021/8/17 00:53
* @Email liuxing997@foxmail.com
*/
@Controller
public
class
AlipayController
{
//付款
@RequestMapping
(
value
=
"/alipay"
,
method
=
RequestMethod
.
POST
)
public
void
alipay
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
AlipayApiException
{
PrintWriter
out
=
response
.
getWriter
();
request
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"text/html;charset=utf-8"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
//获得初始化的AlipayClient
AlipayClient
alipayClient
=
new
DefaultAlipayClient
(
AlipayConfig
.
gatewayUrl
,
AlipayConfig
.
app_id
,
AlipayConfig
.
merchant_private_key
,
"json"
,
AlipayConfig
.
charset
,
AlipayConfig
.
alipay_public_key
,
AlipayConfig
.
sign_type
);
//设置请求参数
AlipayTradePagePayRequest
alipayRequest
=
new
AlipayTradePagePayRequest
();
alipayRequest
.
setReturnUrl
(
AlipayConfig
.
return_url
);
alipayRequest
.
setNotifyUrl
(
AlipayConfig
.
notify_url
);
//商户订单号,商户网站订单系统中唯一订单号,必填
String
out_trade_no
=
new
String
(
request
.
getParameter
(
"WIDout_trade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//付款金额,必填
String
total_amount
=
new
String
(
request
.
getParameter
(
"WIDtotal_amount"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//订单名称,必填
String
subject
=
new
String
(
request
.
getParameter
(
"WIDsubject"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//商品描述,可空
String
body
=
new
String
(
request
.
getParameter
(
"WIDbody"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
alipayRequest
.
setBizContent
(
"{\"out_trade_no\":\""
+
out_trade_no
+
"\","
+
"\"total_amount\":\""
+
total_amount
+
"\","
+
"\"subject\":\""
+
subject
+
"\","
+
"\"body\":\""
+
body
+
"\","
+
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"
);
//若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明
//alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
// + "\"total_amount\":\""+ total_amount +"\","
// + "\"subject\":\""+ subject +"\","
// + "\"body\":\""+ body +"\","
// + "\"timeout_express\":\"10m\","
// + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
//请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节
//请求
String
result
=
alipayClient
.
pageExecute
(
alipayRequest
).
getBody
();
//输出
out
.
println
(
result
);
}
//交易查询
@RequestMapping
(
value
=
"/tradeQuery"
,
method
=
RequestMethod
.
POST
)
public
void
tradeQuery
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
AlipayApiException
{
PrintWriter
out
=
response
.
getWriter
();
request
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"text/html;charset=utf-8"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
//获得初始化的AlipayClient
AlipayClient
alipayClient
=
new
DefaultAlipayClient
(
AlipayConfig
.
gatewayUrl
,
AlipayConfig
.
app_id
,
AlipayConfig
.
merchant_private_key
,
"json"
,
AlipayConfig
.
charset
,
AlipayConfig
.
alipay_public_key
,
AlipayConfig
.
sign_type
);
//设置请求参数
AlipayTradeQueryRequest
alipayRequest
=
new
AlipayTradeQueryRequest
();
//商户订单号,商户网站订单系统中唯一订单号
String
out_trade_no
=
new
String
(
request
.
getParameter
(
"WIDTQout_trade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//支付宝交易号
String
trade_no
=
new
String
(
request
.
getParameter
(
"WIDTQtrade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//请二选一设置
alipayRequest
.
setBizContent
(
"{\"out_trade_no\":\""
+
out_trade_no
+
"\","
+
"\"trade_no\":\""
+
trade_no
+
"\"}"
);
//请求
String
result
=
alipayClient
.
execute
(
alipayRequest
).
getBody
();
//输出
out
.
println
(
result
);
}
//退款
@RequestMapping
(
value
=
"/tradeRefund"
,
method
=
RequestMethod
.
POST
)
public
void
tradeRefund
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
AlipayApiException
{
PrintWriter
out
=
response
.
getWriter
();
request
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"text/html;charset=utf-8"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
//获得初始化的AlipayClient
AlipayClient
alipayClient
=
new
DefaultAlipayClient
(
AlipayConfig
.
gatewayUrl
,
AlipayConfig
.
app_id
,
AlipayConfig
.
merchant_private_key
,
"json"
,
AlipayConfig
.
charset
,
AlipayConfig
.
alipay_public_key
,
AlipayConfig
.
sign_type
);
//设置请求参数
AlipayTradeRefundRequest
alipayRequest
=
new
AlipayTradeRefundRequest
();
//商户订单号,商户网站订单系统中唯一订单号
String
out_trade_no
=
new
String
(
request
.
getParameter
(
"WIDTRout_trade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//支付宝交易号
String
trade_no
=
new
String
(
request
.
getParameter
(
"WIDTRtrade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//请二选一设置
//需要退款的金额,该金额不能大于订单金额,必填
String
refund_amount
=
new
String
(
request
.
getParameter
(
"WIDTRrefund_amount"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//退款的原因说明
String
refund_reason
=
new
String
(
request
.
getParameter
(
"WIDTRrefund_reason"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传
String
out_request_no
=
new
String
(
request
.
getParameter
(
"WIDTRout_request_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
alipayRequest
.
setBizContent
(
"{\"out_trade_no\":\""
+
out_trade_no
+
"\","
+
"\"trade_no\":\""
+
trade_no
+
"\","
+
"\"refund_amount\":\""
+
refund_amount
+
"\","
+
"\"refund_reason\":\""
+
refund_reason
+
"\","
+
"\"out_request_no\":\""
+
out_request_no
+
"\"}"
);
//请求
String
result
=
alipayClient
.
execute
(
alipayRequest
).
getBody
();
//输出
out
.
println
(
result
);
}
//退款查询
@RequestMapping
(
value
=
"/refundQuery"
,
method
=
RequestMethod
.
POST
)
public
void
refundQuery
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
AlipayApiException
{
PrintWriter
out
=
response
.
getWriter
();
request
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"text/html;charset=utf-8"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
//获得初始化的AlipayClient
AlipayClient
alipayClient
=
new
DefaultAlipayClient
(
AlipayConfig
.
gatewayUrl
,
AlipayConfig
.
app_id
,
AlipayConfig
.
merchant_private_key
,
"json"
,
AlipayConfig
.
charset
,
AlipayConfig
.
alipay_public_key
,
AlipayConfig
.
sign_type
);
//设置请求参数
AlipayTradeFastpayRefundQueryRequest
alipayRequest
=
new
AlipayTradeFastpayRefundQueryRequest
();
//商户订单号,商户网站订单系统中唯一订单号
String
out_trade_no
=
new
String
(
request
.
getParameter
(
"WIDRQout_trade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//支付宝交易号
String
trade_no
=
new
String
(
request
.
getParameter
(
"WIDRQtrade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//请二选一设置
//请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的外部交易号,必填
String
out_request_no
=
new
String
(
request
.
getParameter
(
"WIDRQout_request_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
alipayRequest
.
setBizContent
(
"{\"out_trade_no\":\""
+
out_trade_no
+
"\","
+
"\"trade_no\":\""
+
trade_no
+
"\","
+
"\"out_request_no\":\""
+
out_request_no
+
"\"}"
);
//请求
String
result
=
alipayClient
.
execute
(
alipayRequest
).
getBody
();
//输出
out
.
println
(
result
);
}
//交易关闭
@RequestMapping
(
value
=
"/tradeClose"
,
method
=
RequestMethod
.
POST
)
public
void
tradeClose
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
IOException
,
AlipayApiException
{
PrintWriter
out
=
response
.
getWriter
();
request
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"text/html;charset=utf-8"
);
response
.
setCharacterEncoding
(
"UTF-8"
);
//获得初始化的AlipayClient
AlipayClient
alipayClient
=
new
DefaultAlipayClient
(
AlipayConfig
.
gatewayUrl
,
AlipayConfig
.
app_id
,
AlipayConfig
.
merchant_private_key
,
"json"
,
AlipayConfig
.
charset
,
AlipayConfig
.
alipay_public_key
,
AlipayConfig
.
sign_type
);
//设置请求参数
AlipayTradeCloseRequest
alipayRequest
=
new
AlipayTradeCloseRequest
();
//商户订单号,商户网站订单系统中唯一订单号
String
out_trade_no
=
new
String
(
request
.
getParameter
(
"WIDTCout_trade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//支付宝交易号
String
trade_no
=
new
String
(
request
.
getParameter
(
"WIDTCtrade_no"
).
getBytes
(
"ISO-8859-1"
),
"UTF-8"
);
//请二选一设置
alipayRequest
.
setBizContent
(
"{\"out_trade_no\":\""
+
out_trade_no
+
"\","
+
"\"trade_no\":\""
+
trade_no
+
"\"}"
);
//请求
String
result
=
alipayClient
.
execute
(
alipayRequest
).
getBody
();
//输出
out
.
println
(
result
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录