因为工作的需要,就接触了易宝支付。本以为根据易宝支付提供的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 易宝支付,网站接入易宝支付遇上的问题相关推荐

  1. H5网站接入支付宝的支付接口

    写本文章的目的是为了记录工作中遇到的问题,方便以后遇到可以迅速解决问题 H5手机网站接入支付宝的支付接口,推荐使用支付宝提供的SDK来快速开发 我使用的是SDK开发 引用命名空间 using Aop. ...

  2. 2021年PC电脑网站接入微信登陆支付精讲--1小时自已就可动手接入功能,--所有流程一目了然

    2021年了,你还要疲于拼命吗,2001年初,遇到BUG就是躲,放下,去吃最好吃的,吃好喝好,睡一觉,再来解决, 现在是喜欢上BUG了,出现BUG,就发自内心的想搞清楚,是什么源因导致的,呵呵呵 PC ...

  3. 光大银行h5支付(php接入光大银行h5支付)

    光大银行h5支付(php接入光大银行h5支付) 光大银行和其它主流支付流程不一样,接这个支付最费时间,最开始是我来开发,但银行一直不给测试环境,等了大概1到2个月,给了测试环境,开始遇到各种问题,大概 ...

  4. Android PayPal支付的接入和SDK支付过程解析

    Android PayPal支付的接入和SDK支付过程解析 根据产品需求,要接入PayPal支付,在研究了几天支付后,总结下内容给新手使用,本篇文章如果与官方文档有差异的话,一切以官方为准.转载请注明 ...

  5. phpcms实现PC网站接入微信Native支付

    微信支付-PC网站接入支付 微信支付支持完成域名ICP备案的网站接入支付功能.PC网站接入支付后,可以通过JSAPI支付或Native支付,自行开发生成二维码,用户使用微信"扫一扫" ...

  6. 汇付聚合支付自助接入解决方案快捷支付接口代码详解

    上篇文章 <汇付聚合支付自助接入的一点经验分享> 发出后,受到众多朋友的阅读与评论,在此感谢大家的厚爱.看有些朋友评论说:很有用,能不能再讲具体一点,今天我就应大伙需求,来具体讲一讲里面的 ...

  7. python对接微信支付_python3接入微信企业支付实现小程序提现

    最近发现某些小程序有了提现功能,原来小程序是不支持提现的,所以当初实现方法是打算让用户去关注公众号,再从公众号提现,当然前提要公众号跟小程序使用同一的unionid来标记唯一用户,既然现在支持小程序直 ...

  8. 挂机宝和网站服务器,挂机宝SSD硬盘vs普通硬盘访问官网哪个快?

    原标题:挂机宝SSD硬盘vs普通硬盘访问官网哪个快? 秒开云硬盘篇:SSD固态硬盘vs机械硬盘 硬盘读写速度越快结构类型.网络服务器中的固态盘(SSD)比SATA磁盘驱动器给予更高的电脑磁盘读/写强度 ...

  9. php网站接入微信支付,PHP接入微信H5支付的方法示例

    开发前配置 进行代码接入前,需在微信后台填写授权回调域名,此域名必须经过icp备案 开发主要流程 用户下单时选择微信支付 商户进行业务逻辑处理并调用微信统一下单接口,微信h5交易类型为:trade_t ...

  10. 网站接入银联网上支付(B2B)

    1.公钥还有银行卡号和密码等银联会提供,私钥按照银联提供的文档申请就可以了,需要说明的是申请的时候要用ie,并且在internet 选项-->安全-->自定义级别中, 将Active X ...

最新文章

  1. 页面调度框架 justep.Shell
  2. 记一次lua打包环境导致的coredump
  3. 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?
  4. 迷宫问题pascal程序
  5. QT的QMutableSetIterator类的使用
  6. 【图解】java8性能对比_Java 11 究竟比 8 快了多少?
  7. redis哨兵模式没有切换主机_Redis的哨兵模式
  8. Spring boot 日志框架
  9. Flutter 常用的按钮组件
  10. php 获取文件名 行号,PHP – 找到文件中的字符串,然后显示它的行号
  11. synopsys软件介绍
  12. Linux 下如何彻底卸载MySQL数据库
  13. z17刷miui_努比亚Z17刷机包
  14. linux mysql 视频教程_Linux视频教程基础入门到精通Shell高级编程实战/Nginx/MySQL运维视频教程下载...
  15. airplus.exe
  16. 这些行业已经开始用数据挖掘了,我们的前途光明
  17. 2023最新版easyrecovery数据恢复软件免费版测评
  18. 移动开发Weex原理之带你去蹲坑
  19. 惊天消息!美国重启病毒实验,或对人类造成巨大威胁
  20. 基于Python的地理数据分析之一元线性回归分析-数学原理02.md

热门文章

  1. java虚拟机家族种类
  2. Android获取用户通讯录上传,Android获取通讯录并上传(包含通讯录加密)(示例代码)...
  3. nodejs如何运行JavaScript代码
  4. 信息学奥赛一本通,题解列表
  5. 【百度网盘】老罗android开发视频教程[压缩后3.63G]
  6. swc反编译工具_ffdec 10.0|ffdec(flash反编译工具)下载v10.0.0官方最新版 - 欧普软件下载...
  7. xp系统internet信息服务器地址,XP系统下Internet信息服务IIS的安装方法
  8. 信号与线性系统管致中第六版pdf_2021年西北工业大学887信号与系统基础考研全套...
  9. R 学习笔记《二》 R语言初学者指南
  10. Logisim元件用法详解四:Arithmetic 运算器