支付宝h5支付从支付到退款
先说明,支付是之前写好的,调用的是支付宝旧的即时到账接口,所也没有去集成应用,退款调用的是无密即时到账退款接口!!!
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支付从支付到退款的更多相关文章
- 支付宝H5、APP支付服务端的区别(php)
php支付宝H5和APP支付1.准备工作需要前往 蚂蚁金服开放平台申请https://openhome.alipay.com/developmentDocument.htm 2.大致流程1.用户添加商 ...
- 支付宝H5支付demo
支付宝H5支付 首先我们必须注册一个支付宝应用(本案例就直接用支付宝的沙箱环境,这个沙箱也就是支付宝提供给开发者的一个测试环境) 登录地址:https://open.alipay.com/platfo ...
- 支付宝支付-常用支付API详解(查询、退款、提现等)
所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...
- 支付宝H5 与网页端支付开发
在日常生活中,我们基本上都是进行微信与支付宝的支付方式尽心支付,这种方式确实大大便利了我们的生活,那么如何在我们的产品中进行微信与支付宝支付的植入开发呢? 我们先进行支付宝的H5与网页端支付开发,这里 ...
- h5仿微信、支付宝数字键盘|微信支付键盘|支付宝付款键盘
html5仿微信支付数字键盘|仿支付宝键盘|h5仿微信密码输入键盘|自定义数字键盘 很早之前由于项目需求,就有开发过一个h5仿微信支付键盘,这几天就把之前的数字键盘模块独立出来,重新整理开发成demo ...
- 支付宝支付-常用支付API详解(查询、退款、提现等)-转
所有的接口支持沙盒环境的测试 1.前言 前面几篇文件详细介绍了 支付宝提现.扫码支付.条码支付.Wap支付.App支付 支付宝支付-提现到个人支付宝 支付宝支付-扫码支付 支付宝支付-刷卡支付(条码支 ...
- 利用抖音Cookie充值接口提取支付链接,个人调起原生微信h5支付宝h5支付
最近开始搞一些个人支付通道的开发,方便个人不用和第三方平台签约就能收款,省去很多流程手续的成本. 然后翻了一下网上并没有太多现成的技术教程,只能自己研究着搞了. 这次要分享的是利用抖音的充值接口,去分 ...
- ****基于H5的微信支付开发详解[转]
这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...
- 支付宝支付-APP支付服务端详解
支付宝APP支付服务端详解 前面接了微信支付,相比微信支付,支付宝APP支付提供了支付分装类,下面将实现支付宝APP支付.订单查询.支付结果异步通知.APP支付申请参数说明,以及服务端返回APP端发起 ...
- 微信支付/支付宝支付/银联支付,对比加总结(Java服务端)
今天来讲讲支付. 工作到现在,接入过好几个项目的支付,其中涉及到了微信支付.支付宝支付.银联支付. 三种支付的对接感受其实整体上大同小异.都遵循同一个流程: 1).商户APP向商户服务器请求生成订单 ...
随机推荐
- oracle中使用impdp数据泵导入数据提示“ORA-31684:对象类型已经存在”错误的解决
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47448751 本文出自[我是干勾鱼的博客] oracle中使用impdp数据泵导 ...
- 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法
垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己主动内存管理 上(一)内存分配 垃圾回收GC:.Net自己主动内存管理 上(二)内存算法 垃圾回收GC:.Net自己 ...
- 《黑马程序猿》 cocos2d游戏引擎复习笔记一
/** ----------------------------游戏场景的搭建-------------------------------- 1首先创建一个surfaceview ,它能够在子线程中 ...
- insufficient space
- diff比较两个文件的差异
1.diff -ruN a.txt b.txt>patch.txt比较第二个文件与第一个文件相比的变化,并将变化添加到patch.txt文件中,-表示删除的行,+表示添加的行 2.下面的,“&l ...
- 七牛php上传下载类,集成官方文档的方法
<?phpuse Qiniu\Auth;use Qiniu\Storage\UploadManager;class qiniu{ public $_accesskey = null; publi ...
- [Apple开发者帐户帮助]三、创建证书(6)创建创建VoIP服务证书
VoIP:基于IP的语音传输(英语:Voice over Internet Protocol,缩写为VoIP)是一种语音通话技术,经由网际协议(IP)来达成语音通话与多媒体会议,也就是经由互联网来进行 ...
- ArrayList 扩容原理
面试中经常问到的问题之一就是List的扩容机制了,他是怎么做到扩容的,大家都能答出来底层是数组,复制一个数组来扩容,但是再具体一点来说,大家就不知道该怎么说了,如果不看源码说这么多确实就差不多了,但是 ...
- ubuntu Ngin Install
安装gcc g++的依赖库 #apt-get install build-essential #apt-get install libtool 安装 pcre依赖库 #sudo apt-get upd ...
- BZOJ 4332 FFT+快速幂
思路: 最裸的方程:f[i][j]=Σf[i-1][j-k]*F[k] 诶呦 这不是卷积嘛 f[i]就可以用f[i-1]卷F 求到 但是这样还是很慢 设p[i] 为Σ f[j](1<=j< ...