网站接入易宝支付遇上的问题

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/143/ ]

因为工作的需要,就接触了易宝支付.本以为根据易宝支付提供的demo跟文档就能快速的完成接入工作,可是这一过程并不顺利,耽误了不少时间,所以我就把遇上的问题给记录下来,也许能帮到更多朋友.

因为工作的需要,就接触了易宝支付。本以为根据易宝支付提供的demo跟文档就能快速的完成接入工作,可是这一过程并不顺利,耽误了不少时间,所以我就把遇上的问题给记录下来,也许能帮到更多朋友。

1)文档选择


存在两份文档:最新的文档没有demo,而且测试提供的接口响应速度让人无法忍受;最后还是选了带有demo的文档,虽然最后更新时间为200X年

2)编码问题


易宝支付的接口使用的是GBK/GB2312编码,如果我们使用的是UTF8编码,就需要把字符串编码转成GBK,所以我们得给form表单添加一个属性,标识数据编码为gbk,代码如下:

<html>
<head>
<title>磨途歌-易宝支付</title>
</head>
<body onLoad='document.yeepay.submit();'>
<form name='yeepay' action='{$reqURL_onLine}' method='post' accept-charset='gbk'>
<input type='hidden' name='p0_Cmd'             value='{$p0_Cmd}'>
<input type='hidden' name='p1_MerId'           value='{$p1_MerId}'>
<input type='hidden' name='p2_Order'           value='{$p2_Order}'>
<input type='hidden' name='p3_Amt'             value='{$p3_Amt}'>
<input type='hidden' name='p4_Cur'             value='{$p4_Cur}'>
<input type='hidden' name='p5_Pid'             value='{$p5_Pid}'>
<input type='hidden' name='p6_Pcat'            value='{$p6_Pcat}'>
<input type='hidden' name='p7_Pdesc'           value='{$p7_Pdesc}'>
<input type='hidden' name='p8_Url'             value='{$p8_Url}'>
<input type='hidden' name='p9_SAF'             value='{$p9_SAF}'>
<input type='hidden' name='pa_MP'              value='{$pa_MP}'>
<input type='hidden' name='pd_FrpId'           value='{$pd_FrpId}'>
<input type='hidden' name='pr_NeedResponse'    value='{$pr_NeedResponse}'>
<input type='hidden' name='hmac'               value='{$hmac}'>
</form>
</body>
</html>

接下来的问题是,易宝支付返回的数据也是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 mean