先说明,支付是之前写好的,调用的是支付宝旧的即时到账接口,所也没有去集成应用,退款调用的是无密即时到账退款接口!!!

https://doc.open.alipay.com/支付宝文档资料,蚂蚁金服开发平台。首先从开放平台找到即时到账接口资料,上面有demo可以下载,下载demo,修改里面的配置参数即可接通wep支付宝支付(公钥查看支付宝和私钥生成支付宝有生成工具提供)(ps:私钥生成后需要在支付宝上面配置,放到一个地方去才生效)。具体代码修改根据公司需要,支付回掉签名错误问题,demo上面的valueStr不需要进行转码,直接注释掉这一行就行。

下一步生成二维码(我用的是zxing.jar包生成),通过支付宝扫码进行h5跳转到demo里面的掉起支付页面,完成支付,回掉处理根据业务需求写。如果在参数上面加入

sParaTemp.put("app_pay", "Y");//启用该参数启用APP钱包支付。(!!!)

这样在浏览器上面wap支付的时候就能直接打开支付宝app。

下面说退款,退款不要做什么h5页面跳转,只需要后台httpclient去请求支付宝无密退款接口即可,接口地址:https://mapi.alipay.com/gateway.do。

/**
* 处理支付宝退款功能
* @param money 退款金额
* @param alipaycode 支付宝交易流水号
* @return
* @throws DocumentException
*/
public boolean oldAlipayRefund(String money,String alipaycode) throws DocumentException{
boolean bl=false;
Map resultMap=null;
try {
resultMap = AssemblyParameter(money, alipaycode);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();return bl;
}
String result = HttpClientUtil.post(AlipayConfig.old_refund_url, null, resultMap);
Document document = DocumentHelper.parseText(result);
Element root =document.getRootElement();
List<Element> list =root.elements();
for(Element l:list){
if(l.getName().toLowerCase().equals("is_success")){
if(l.getText().equals("T")){
bl=true;
}
}
}
return bl;
} /**
* 拼装支付宝支付接口所需参数,
* @param money 退款金额
* @param alipaycode 支付宝支付完成返回流水号
* @return
* @throws UnsupportedEncodingException
*/
public static Map AssemblyParameter(String money,String alipaycode) throws UnsupportedEncodingException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", AlipayConfig.oldrefundservice);
sParaTemp.put("partner", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("sign_type", AlipayConfig.sign_type);
//sParaTemp.put("notify_url", "");
sParaTemp.put("seller_email", AlipayConfig.seller_email);
sParaTemp.put("seller_user_id", AlipayConfig.partner);
sParaTemp.put("refund_date",DateUtil.normalDateTimeFormat());//退款时间
sParaTemp.put("batch_no", sdf.format(new Date())+System.currentTimeMillis()/1000);//退款号
sParaTemp.put("batch_num", "1");//退款笔数
sParaTemp.put("detail_data",new String((alipaycode+"^"+money+"^正常退款").getBytes("ISO-8859-1"), "utf-8"));//退款描述//alipaycode+"^"+money+"^"+"aaa"
sParaTemp=AlipaySubmit.buildRequestPara(sParaTemp);
sdf=null;
//建立请求
//String sHtmlText = AlipaySubmit.buildRequest(sParaTemp,"get","确认");
return sParaTemp;
}

这个地方有一点需要注意,detail_data,需要转码,不然一直是签名错误。退款流水号是支付宝返回的一个流水号,支付完成的时候是需要保存数据库的,退款需要用到这个流水号!!!

支付宝h5支付从支付到退款的更多相关文章

  1. 支付宝H5、APP支付服务端的区别(php)

    php支付宝H5和APP支付1.准备工作需要前往 蚂蚁金服开放平台申请https://openhome.alipay.com/developmentDocument.htm 2.大致流程1.用户添加商 ...

  2. 支付宝H5支付demo

    支付宝H5支付 首先我们必须注册一个支付宝应用(本案例就直接用支付宝的沙箱环境,这个沙箱也就是支付宝提供给开发者的一个测试环境) 登录地址:https://open.alipay.com/platfo ...

  3. 支付宝支付-常用支付API详解(查询、退款、提现等)

    所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...

  4. 支付宝H5 与网页端支付开发

    在日常生活中,我们基本上都是进行微信与支付宝的支付方式尽心支付,这种方式确实大大便利了我们的生活,那么如何在我们的产品中进行微信与支付宝支付的植入开发呢? 我们先进行支付宝的H5与网页端支付开发,这里 ...

  5. h5仿微信、支付宝数字键盘|微信支付键盘|支付宝付款键盘

    html5仿微信支付数字键盘|仿支付宝键盘|h5仿微信密码输入键盘|自定义数字键盘 很早之前由于项目需求,就有开发过一个h5仿微信支付键盘,这几天就把之前的数字键盘模块独立出来,重新整理开发成demo ...

  6. 支付宝支付-常用支付API详解(查询、退款、提现等)-转

    所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...

  7. 利用抖音Cookie充值接口提取支付链接,个人调起原生微信h5支付宝h5支付

    最近开始搞一些个人支付通道的开发,方便个人不用和第三方平台签约就能收款,省去很多流程手续的成本. 然后翻了一下网上并没有太多现成的技术教程,只能自己研究着搞了. 这次要分享的是利用抖音的充值接口,去分 ...

  8. ****基于H5的微信支付开发详解[转]

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  9. 支付宝支付-APP支付服务端详解

    支付宝APP支付服务端详解 前面接了微信支付,相比微信支付,支付宝APP支付提供了支付分装类,下面将实现支付宝APP支付.订单查询.支付结果异步通知.APP支付申请参数说明,以及服务端返回APP端发起 ...

  10. 微信支付/支付宝支付/银联支付,对比加总结(Java服务端)

    今天来讲讲支付. 工作到现在,接入过好几个项目的支付,其中涉及到了微信支付.支付宝支付.银联支付. 三种支付的对接感受其实整体上大同小异.都遵循同一个流程: 1).商户APP向商户服务器请求生成订单 ...

随机推荐

  1. http自己定义超时检測方法、主动抛出异常

    上次为了解决无网路由器超时的问题,将问题重心转移到了HttpClient. HttpUrLConnection上面,什么各种设置ReadTimeout. connectionTimeOut,还有所谓的 ...

  2. 霸气側漏的HTML5--之--强大的form表单

    今天学习了一下html5,发现他真的太强大了,暂不说新增的画布,通信,本地存储等的炸天功能,就连表单也是异常的好用.忍不住发一篇博客和大家分享一下.原谅我标题党了.以后的html5的学习记录博文就以& ...

  3. ArcGis空间参考的设置

    ArcGis10.0空间参考设置: 选择一个数据右击,进入属性properties 点击进入后则出现以下界面 双击进入后则出现以下界面 双击进入后出现如下界面,此时则可选择需要设置的空间参考 ArcG ...

  4. Catalan数(卡特兰数)

    Catalan数(卡特兰数) 卡特兰数:规定h(0)=1,而h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=429,h(8)=1430,h(9)= ...

  5. poi读取docx中的文字和图片(自己应用)

    poi读取docx中的文字和图片(自己应用) package com.fry.poiDemo.dao; import java.io.File; import java.io.FileInputStr ...

  6. 【HDU 6162】 Ch’s gift

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6162 [算法] 离线树剖 我们知道,u到v路径上权值为[A,B]的数的和 = u到v路径上权值小于 ...

  7. ie8 不支持 position:fixed 的简单解决办法

    今天发现使用 position:fixed 的页面在firefox下没有问题,在IE8下却不能正常显示,在网上找了找,有不少相关文章,但是不是不起作用就是太复杂,后来终于发现一个简单的解决办法,就是在 ...

  8. [Swift]LeetCode1071.字符串的最大公因子 | Greatest Common Divisor of Strings

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. 基于artDialog的扩展

    /* * * 引用此文件必须引用以下两个资源文件,并且还要引用jQuery * <link href="ui-dialog.css" rel="stylesheet ...

  10. RabbitMQ 官方NET教程(一)【介绍】

    本教程假定RabbitMQ已在标准端口(5672)上的localhost上安装并运行.如果使用不同的主机,端口或凭据,连接设置将需要调整. RabbitMQ是一个消息代理:它接受并转发消息. 您可以将 ...