php 易宝支付,网站接入易宝支付遇上的问题
因为工作的需要,就接触了易宝支付。本以为根据易宝支付提供的demo跟文档就能快速的完成接入工作,可是这一过程并不顺利,耽误了不少时间,所以我就把遇上的问题给记录下来,也许能帮到更多朋友。
1)文档选择
存在两份文档:最新的文档没有demo,而且测试提供的接口响应速度让人无法忍受;最后还是选了带有demo的文档,虽然最后更新时间为200X年
2)编码问题
易宝支付的接口使用的是GBK/GB2312编码,如果我们使用的是UTF8编码,就需要把字符串编码转成GBK,所以我们得给form表单添加一个属性,标识数据编码为gbk,代码如下:
磨途歌-易宝支付
接下来的问题是,易宝支付返回的数据也是GBK的,我们看一下易宝支付提供的HmacMd5函数function HmacMd5($data,$key)
{
// RFC 2104 HMAC implementation for php.
// Creates an md5 HMAC.
// Eliminates the need to install mhash to compute a HMAC
// Hacked by Lance Rushing(NOTE: Hacked means written)
//需要配置环境支持iconv,否则中文参数不能正常处理
$key = iconv("GB2312","UTF-8",$key);
$data = iconv("GB2312","UTF-8",$data);
$b = 64; // byte length for md5
if (strlen($key) > $b) {
$key = pack("H*",md5($key));
}
$key = str_pad($key, $b, chr(0x00));
$ipad = str_pad('', $b, chr(0x36));
$opad = str_pad('', $b, chr(0x5c));
$k_ipad = $key ^ $ipad ;
$k_opad = $key ^ $opad;
return md5($k_opad . pack("H*",md5($k_ipad . $data)));
}
这里易宝支付假定用户全部使用的是GB2312编码,导致UTF8编码的网站无法直接使用demo提供的代码,所以我们也得做修改,以下只显示修改的部分代码:function HmacMd5($data,$key,$true = false)
{
if($true) {
$key = iconv("GB2312","UTF-8",$key);
$data = iconv("GB2312","UTF-8",$data);
}
再修改getCallbackHmacString函数://return HmacMd5($sbOld,MERCHANTKEY);
return HmacMd5($sbOld,MERCHANTKEY,true);
接下来给大家分析一下为什么这么修改:
1)易宝支付demo默认处理的是GBK/GB2312编码的字符串
2)加密过程需要使用iconv函数,把GBK转码成UTF8
但是如果是UTF8编码的网站,字符串已经是UTF8了,执行操作2)就会出问题,导致生成的加密字符串有误。所以我们添加了一个if条件,来控制转码操作,默认不转码。
什么情况需要转码呢?我们先看一下哪些地方调用了HmacMd5函数:
1)getReqHmacString,在demo中,该函数基于网站提供的参数生成form表单中的hmac值,因为网站已经是UTF8编码了,所以不需要转码。
2)getCallbackHmacString,在demo中,该函数基于易宝支付接口返回的参数生成hmac值,因为易宝支付返回的是GBK编码的字符串,需要转码,所以就有了上边的修改。
3)易宝支付回调操作
充值成功后,易宝支付有两种类型的回调操作:
1)前端回调,浏览器能看到提示:支付成功,10秒后跳转到商家页面,或点此[直接跳转]
2)服务器回调:避免前端回调页面被意外关闭
这里主要说一下服务器回调。
为了防止被已知的恶意工具检测网站,就做了一些安全配置。例如使用nginx屏蔽掉一些请求,配置代码如下:if ($http_user_agent ~ ApacheBench|WebBench|Java|Http_load|Wget) {
return 403;
}
通过测试,得出易宝支付使用的是JAVA程序执行的回调操作。所以上述nginx的配置就把易宝支付的服务器回调给屏蔽了,只好把Java给去掉if ($http_user_agent ~ ApacheBench|WebBench|Http_load|Wget) {
return 403;
}
4)易宝支付,订单信息问题
易宝支付会把订单名称跟订单金额拼接在一起,生成新的订单信息,看起来这没什么问题。但是,如果订单金额有小数点的时候,问题就来了。例如:
1)订单名称:磨途歌服务器续费
2)订单金额:888.88(单位:元)
拼接后的字符串为:磨途歌服务器续费88888元
看到了吗,小数点不见了!
后来易宝支付的技术人员这么回复我:不好意思啊,,这个产品好多年了,,之前就是这样设计的
我不禁想问,有什么理由选择易宝支付呢?
php 易宝支付,网站接入易宝支付遇上的问题相关推荐
- H5网站接入支付宝的支付接口
写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题 H5手机网站接入支付宝的支付接口,推荐使用支付宝提供的SDK来快速开发 我使用的是SDK开发 引用命名空间 using Aop. ...
- 2021年PC电脑网站接入微信登陆支付精讲--1小时自已就可动手接入功能,--所有流程一目了然
2021年了,你还要疲于拼命吗,2001年初,遇到BUG就是躲,放下,去吃最好吃的,吃好喝好,睡一觉,再来解决, 现在是喜欢上BUG了,出现BUG,就发自内心的想搞清楚,是什么源因导致的,呵呵呵 PC ...
- 光大银行h5支付(php接入光大银行h5支付)
光大银行h5支付(php接入光大银行h5支付) 光大银行和其它主流支付流程不一样,接这个支付最费时间,最开始是我来开发,但银行一直不给测试环境,等了大概1到2个月,给了测试环境,开始遇到各种问题,大概 ...
- Android PayPal支付的接入和SDK支付过程解析
Android PayPal支付的接入和SDK支付过程解析 根据产品需求,要接入PayPal支付,在研究了几天支付后,总结下内容给新手使用,本篇文章如果与官方文档有差异的话,一切以官方为准.转载请注明 ...
- phpcms实现PC网站接入微信Native支付
微信支付-PC网站接入支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫" ...
- 汇付聚合支付自助接入解决方案快捷支付接口代码详解
上篇文章 <汇付聚合支付自助接入的一点经验分享> 发出后,受到众多朋友的阅读与评论,在此感谢大家的厚爱.看有些朋友评论说:很有用,能不能再讲具体一点,今天我就应大伙需求,来具体讲一讲里面的 ...
- python对接微信支付_python3接入微信企业支付实现小程序提现
最近发现某些小程序有了提现功能,原来小程序是不支持提现的,所以当初实现方法是打算让用户去关注公众号,再从公众号提现,当然前提要公众号跟小程序使用同一的unionid来标记唯一用户,既然现在支持小程序直 ...
- 挂机宝和网站服务器,挂机宝SSD硬盘vs普通硬盘访问官网哪个快?
原标题:挂机宝SSD硬盘vs普通硬盘访问官网哪个快? 秒开云硬盘篇:SSD固态硬盘vs机械硬盘 硬盘读写速度越快结构类型.网络服务器中的固态盘(SSD)比SATA磁盘驱动器给予更高的电脑磁盘读/写强度 ...
- php网站接入微信支付,PHP接入微信H5支付的方法示例
开发前配置 进行代码接入前,需在微信后台填写授权回调域名,此域名必须经过icp备案 开发主要流程 用户下单时选择微信支付 商户进行业务逻辑处理并调用微信统一下单接口,微信h5交易类型为:trade_t ...
- 网站接入银联网上支付(B2B)
1.公钥还有银行卡号和密码等银联会提供,私钥按照银联提供的文档申请就可以了,需要说明的是申请的时候要用ie,并且在internet 选项-->安全-->自定义级别中, 将Active X ...
最新文章
- 页面调度框架 justep.Shell
- 记一次lua打包环境导致的coredump
- 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?
- 迷宫问题pascal程序
- QT的QMutableSetIterator类的使用
- 【图解】java8性能对比_Java 11 究竟比 8 快了多少?
- redis哨兵模式没有切换主机_Redis的哨兵模式
- Spring boot 日志框架
- Flutter 常用的按钮组件
- php 获取文件名 行号,PHP – 找到文件中的字符串,然后显示它的行号
- synopsys软件介绍
- Linux 下如何彻底卸载MySQL数据库
- z17刷miui_努比亚Z17刷机包
- linux mysql 视频教程_Linux视频教程基础入门到精通Shell高级编程实战/Nginx/MySQL运维视频教程下载...
- airplus.exe
- 这些行业已经开始用数据挖掘了,我们的前途光明
- 2023最新版easyrecovery数据恢复软件免费版测评
- 移动开发Weex原理之带你去蹲坑
- 惊天消息!美国重启病毒实验,或对人类造成巨大威胁
- 基于Python的地理数据分析之一元线性回归分析-数学原理02.md
热门文章
- java虚拟机家族种类
- Android获取用户通讯录上传,Android获取通讯录并上传(包含通讯录加密)(示例代码)...
- nodejs如何运行JavaScript代码
- 信息学奥赛一本通,题解列表
- 【百度网盘】老罗android开发视频教程[压缩后3.63G]
- swc反编译工具_ffdec 10.0|ffdec(flash反编译工具)下载v10.0.0官方最新版 - 欧普软件下载...
- xp系统internet信息服务器地址,XP系统下Internet信息服务IIS的安装方法
- 信号与线性系统管致中第六版pdf_2021年西北工业大学887信号与系统基础考研全套...
- R 学习笔记《二》 R语言初学者指南
- Logisim元件用法详解四:Arithmetic 运算器