快钱支付平台 退款功能
最近做快钱支付平台的退款功能,遇到不少问题,在解决问题的过程中,也获得了不少心得,现在将它们整理出来,以备不时之需。
首先,在做退款功能前,需要研究《快钱人民币网关商户退款接口规范》,弄明白退款所必需的流程,根据接口规范定义,完整的退款流程应该包含以下步骤:
1. 在我们的web应用中,首先要确定两个要素:需要退款的订单和本次退款金额,接下来,便是根据快钱接口规范,拼接退款Url地址。
2. 拼接退款地址时,我们需要先了解接口规范,理解每个参数的含义,下图是接口规范的定义。
merchant_id为商户的编号,即快钱的客户编号,找他们要就是了。
version与command_type固定不变。
txOrder为退款流水号,由你自己制定生成规则,对于快钱来说,你只需要保证生成出来的号码唯一就OK了。
amount为本次退款金额,在提交时最好格式化一下,统一带两位小数。
postdata为退款提交时间,一般取当前时间,格式为“yyyyMMddHHMMSS”。
orderid为订单号,是缴费时,由你自己制定规则,生成的订单编号,同样要保证唯一性,快钱通过这个编号,找到对应的缴费订单。
mac为加密串,MD5加密,偏移量由快钱提供,加密内容包含退款流水线号、退款金额、提交时间、订单号等等,用于安全校验,避免其他参数被修改,导致一系列安全问题。
以上参数中,merchant_id、version、command_type,这三个是固定不变的,可以放到配置文件中,也可以放到数据库表格中。
3. 第三步便是由我们的web应用来访问这个拼接好的地址了,这个地址的返回值是一段XML文档,只有接受到返回值,才能说明退款流程顺利,我们才能进行后续的退款修改数据库的操作。
问题是在这个阶段发生的,由于某些原因,我们的web服务器是无法连接外网的,也就是说,如果我们的web应用采用服务端访问这段地址,是永远获取不到快钱返回给我们的数据。
于是,我们决定将访问操作放在客户端,由客户端使用Ajax来访问这个链接,并且由于是Ajax访问,我们写了一段非常漂亮,用户体验超棒的代码,但是,很快我们发现又遇到了另外一个问题,那就是js跨域访问的问题。
尝试过很多解决办法,例如:
JavaSrcipt跨域解决方案(这也是我说服我老大的一个凭据, - - 还是专家博客比较好使!)
关于跨域有三个办法,第一个是使用服务端代理,这是一个最常见也最好使的办法,但是,这个办法被我们当前的实际条件所拒绝(服务端不能连外网,公司不会因为这个功能而做出让步)。
至此,我们似乎走到了胡同的死角,基本上,在技术层面已经无法解决这个问题了,只能通过沟通,来获得更多的一些东西。
上面解决了思路问题,下面就附贴一些代码吧!贴点代码,篇幅都要长一点 - -
快钱支付平台 退款功能相关推荐
- 快钱 支付 php,GitHub - laraveler/omnipay-99bill: 基于Omnipay的快钱支付SDK
omnipay-99bill 基于Omnipay的快钱支付SDK 该文档共包含以下5个部分: 1.创建交易 2.支付回调 3.交易查询 4.网关退款 Quick Start 快速开始 PHP版本要求: ...
- 在J2EE项目中集成快钱支付接口
转载地址 [url] http://my.oschina.net/bairrfhoinn/blog/78184[/url] 首先是发送快钱支付请求的页面send.jsp,内容如下: 001 <% ...
- magento -- 开发magento快钱支付模块
浪费了三四天时间终于完成了magento的快钱支付模块.其实对于熟悉magento的程序员来说,开发一个普通的支付模块不需要太多的时间,可能一天或者一个下午就可以完成开发和测试.然而快钱的magent ...
- php 银行支付通道_使用php实现快钱支付功能(涉及到接口)
本项目用zend framework框架实现的modules/default/controllers/IndexController.php IndexController.php class Ind ...
- php 实现快钱支付功能(涉及到接口)
本项目用zend framework框架实现的 modules/default/controllers/IndexController.php IndexController.php <?php ...
- 快钱接口php,快钱支付接口
1.下载快钱的demo代码和一个证书包,还有 人民币网关自助接入接口文档 2.生成自己的证书 2.0.安装 Win32OpenSSL_Light-0_9_8k.exe 打开openssl.exe, ...
- php 微信支付 退款接口,php实现微信支付之退款功能
网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入微信支付的带来些许帮助和借鉴意义. 直接运行该文件即可给指定的微信用户退款 ...
- 微信小程序支付以及退款功能(超详细)
Springboot整合微信小程序支付 第一步: 第二步:导入微信支付的依赖 第三步:在springboot核心配置文件中配置参数 第四步:创建配置类WxPayAppConfig 第五步:支付方法 s ...
- 第三方支付公司之快钱
疯传了近半月快钱要卖的消息,今天终于坐实了,但是卖身对象最终却由传闻中的百度转向了万达. 今日上午,"万达集团战略控股快钱"具体细节正式公开,万达集团将出资20亿控股快钱.快钱方面 ...
最新文章
- Commonly Hacked Ports
- SpringBoot-hello world
- 点(Dot)与像素(Pixel)的区别
- [PE格式分析] 3.IMAGE_NT_HEADER
- 浏览器预连接性能测试
- Per-FedAvg:联邦个性化元学习
- Zookeeper 入门指北
- 原 python实现模糊匹配_使用python中的fuzzywuzzy库进行模糊匹配实例
- 【我看Spring】从一个简单的AOP示例看切面编程
- 交互设计中的“所见即所得”原则
- swift5的下标Subscripts 花式玩法
- powerbuilder11的webform发布和webservices调用实践
- sql server 2008导出数据至Excel或者wps
- php 字符相似度比较,php 比较两个字符串的相似度
- 霍尼韦尔Granit 1990iSR工业二维码扫描枪
- vue进阶实战 vue进阶课程 vue进阶
- Android中使用封装的OKHttp上传图片,从相机和相册中获取图片并剪切
- 路由器、交换机、服务器等网络设备常见故障及解决方法
- 第十一届“挑战杯”广东省大学生课外学术科技作品竞赛总结——谢凌云
- 一文整理总结常见Java后端面试题系列——Java虚拟机篇(2022最新版)
热门文章
- c语言表示整型变量,在表示 C语言的整型变量时,表示“无符号长整型”的符号是( )。...
- Matlab中switch, case, otherwise语句
- 自动驾驶路径规划技术-高速公路路径规划
- 递推算法与递推套路(算法基础篇)
- 并查集——NUIST OJ P1648 炼丹术为例
- php 如何启动ica文件,什么是ICA文件?Win10专业版如何打开ICA文件?
- 桥牌坐庄训练bm2000 level3闯关记录——A5
- 囊括七大主流搜索引擎 这个网站统计工具神了!
- 自动控制原理->根轨迹
- FLASH多文件上传组件