博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
花生壳+支付宝沙盒支付
阅读量:3962 次
发布时间:2019-05-24

本文共 3242 字,大约阅读时间需要 10 分钟。

目录

1.进入支付宝开放者平台

https://openhome.alipay.com/platform/home.htm

注册并实名
在这里插入图片描述
下载并注册花生壳,将内网映射为外网可以访问的的工具
在这里插入图片描述

2.导入pom依赖

com.alipay.sdk
alipay-sdk-java
3.7.110.ALL

3.controller

@RestControllerpublic class PayController {
@RequestMapping("/pay") public void pay(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws IOException {
AlipayClient alipayClient = new DefaultAlipayClient( "https://openapi.alipaydev.com/gateway.do" , "AppID", "自己的私钥", "json", "utf-8", "自己的公钥", "RSA2"); //获得初始化的AlipayClient AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); //创建API对应的request //支付成功后的回调地址 alipayRequest.setReturnUrl( "回调网址(花生壳)" ); alipayRequest.setNotifyUrl( "http://domain.com/CallBack/notify_url.jsp" ); //在公共参数中设置回跳和通知地址 alipayRequest.setBizContent("{" + " \"out_trade_no\":\"12345678909875\"," + " \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," + " \"total_amount\":88.88," + " \"subject\":\"Iphone6 16G\"," + " \"body\":\"Iphone6 16G\"," + " \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," + " \"extend_params\":{" + " \"sys_service_provider_id\":\"2088511833207846\"" + " }" + " }" ); //填充业务参数 String form= "" ; try {
form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单 } catch (AlipayApiException e) {
e.printStackTrace(); } httpResponse.setContentType( "text/html;charset=" + "UTF-8"); httpResponse.getWriter().write(form); //直接将完整的表单html输出到页面 httpResponse.getWriter().flush(); httpResponse.getWriter().close(); } @RequestMapping("/returnUrl") public void returnUrl(HttpServletRequest request , HttpResponse httpResp) throws AlipayApiException {
Map
stringStringMap = convertRequestParamsToMap(request); boolean signVerified = AlipaySignature.rsaCheckV1(stringStringMap, "公钥", "utf-8", "RSA2"); //调用SDK验证签名 if (signVerified){
// TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure System.out.println(stringStringMap); } else {
// TODO 验签失败则记录异常日志,并在response中返回failure. } } // 将request中的参数转换成Map private static Map
convertRequestParamsToMap(HttpServletRequest request) {
Map
retMap = new HashMap
(); Set
> entrySet = request.getParameterMap().entrySet(); for (Map.Entry
entry : entrySet) { String name = entry.getKey(); String[] values = entry.getValue(); int valLen = values.length; if (valLen == 1) { retMap.put(name, values[0]); } else if (valLen > 1) { StringBuilder sb = new StringBuilder(); for (String val : values) { sb.append(",").append(val); } retMap.put(name, sb.toString().substring(1)); } else { retMap.put(name, ""); } } return retMap; }}

4.访问

http://localhost:8088/pay

在这里插入图片描述

转载地址:http://hcezi.baihongyu.com/

你可能感兴趣的文章
SSM配置文件信息加密实现
查看>>
@Produces注解
查看>>
谈谈序列化—实体bean一定要实现Serializable接口?
查看>>
实用小技巧之电脑如何滚动截屏/截取长图
查看>>
Eclipse离线安装Java Decompiler插件
查看>>
Http预请求options
查看>>
未来设计师的工作模式?从室内设计领域的实时设计说起 | Mixlab趋势
查看>>
智能设计 | MixAI 知识库 No.69
查看>>
通过研究微信文章的相关推荐逻辑 ,尝试生成指南| Mixlab设计黑客
查看>>
这个世界上肯定有另一个我,做着我不敢做的事,过着我想过的生活 | MixAI 知识库 No.70...
查看>>
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>