本代码参照自韩顺平149讲视频后5讲,需要学习的朋友可以参考本代码
这是测试图片:
以下是代码部分:
1 <?php 2 3 4 function Hmacmd5($data, $key) 5 { 6 7 //需要配置环境支撑iconv,否则中文参数不能正常处理 8 $key = iconv("GB2312", "UTF-8", $key); 9 $data = iconv("GB2312", "UTF-8", $data);10 $b = 64;11 if (strlen($key) > $b) {12 $key = pack("H*", md5($key));13 }14 $key = str_pad($key, $b, chr(0x00));15 $ipad = str_pad('', $b, chr(0x36));16 $opad = str_pad('', $b, chr(0x5c));17 $k_ipad = $key ^ $ipad;18 $k_opad = $key ^ $opad;19 return md5($k_opad . pack("H*", md5($k_ipad . $data)));20 }21 //我们把易宝支付要求怎样生成一个签名串22 //把各个请求参数凭借作为$data传入: $key 就是易宝给商家分配的密钥23 24 ?>common.php
1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html;charset=gb2312" /> 4 </head> 5 <form action="payConfirm.php" method="post"> 6 <table> 7 <tr> 8 <td colspan="4"> 9 订单号:<input type="text" name="p2_Order" /> 10 支付金额:<input type="text" name="p3_Amt" />11 </td>12 </tr>13 <tr>14 <td colspan="4">请选择支付银行</td>15 </tr>16 <tr>17 <td><input type="radio" name="pd_FrpId" value="CMBCHINA-NET-B2C" />招商银行</td>18 <td><input type="radio" name="pd_FrpId" value="ICBC-NET-B2C" />工商银行</td>19 <td><input type="radio" name="pd_FrpId" value="ABC-NET-B2C" />农业银行</td>20 <td><input type="radio" name="pd_FrpId" value="CCB-NET-B2C" />建设银行</td>21 </tr>22 <tr>23 <td colspan="4"><input type="submit" value="确认支付" /></td>24 </tr>25 </table>26 </form>27 </html>pay.php
1 <html> 2 <head> 3 <meta http-equiv="content-type" content="text/html;charset=gb2312" /> 4 </head> 5 <?php 6 include 'common.php'; 7 // 这里我们获取用户提交的信息 8 9 // 1.获取订单号10 $p0_Cmd = "Buy";11 $p1_MerId = "10001126856";12 $p2_Order = $_REQUEST['p2_Order'];13 $p3_Amt = $_REQUEST['p3_Amt'];14 $p4_Cur = "CNY";15 // 商品名称16 $p5_Pid = "";17 $p6_Pcat = ""; // 商品种类18 $p7_Pdesc = ""; // 商品介绍19 // 只是易宝支付成功后,给url返回信息20 $p8_Url = "http://loaclhost/FUCKPHP/onlinezhifu/res.php";21 $p9_SAF = "0"; // 送货地址22 $pa_MP = ""; // 额外介绍23 $pd_FrpId = $_REQUEST['pd_FrpId']; // 支付通道24 $PR_NeedResponse = "1"; // 应答机制25 // 我们把请求参数一个一个拼接(拼接的时候,顺序很重要!!)26 $data="";27 $data=$data.$p0_Cmd;28 $data=$data.$p1_MerId;29 $data=$data.$p2_Order;30 $data=$data.$p3_Amt;31 $data=$data.$p4_Cur;32 $data=$data.$p5_Pid;33 $data=$data.$p6_Pcat;34 $data=$data.$p7_Pdesc;35 $data=$data.$p8_Url;36 $data=$data.$p9_SAF;37 $data=$data.$pa_MP;38 $data=$data.$pd_FrpId;39 $data=$data.$pr_NeedResponse;40 41 $merchantKey ="69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl";42 // hmac是签名串,是用于易宝和商家互相确认的关键字43 // 这里我们需要使用算法来生成(md5-hmac算法)44 $hmac = HmacMd5($data,$merchantKey);45 ?>46 你的订单号是:<?php echo $p2_Order; ?>支付的金额是<?php echo $p3_Amt; ?>47 <!-- 把要提交的数据用隐藏域表示 -->48 <form action="https://www.yeepay.com/app-merchant-proxy/node" method="post">49 <input type="hidden" name="p0_Cmd" value="<?php echo $p0_Cmd; ?>"/>50 <input type="hidden" name="p1_MerId" value="<?php echo $p1_MerId; ?>"/>51 <input type="hidden" name="p2_Order" value="<?php echo $p2_Order; ?>"/>52 <input type="hidden" name="p3_Amt" value="<?php echo $p3_Amt; ?>"/>53 <input type="hidden" name="p4_Cur" value="<?php echo $p4_Cur; ?>"/>54 <input type="hidden" name="p5_Pid" value="<?php echo $p5_Pid; ?>"/>55 <input type="hidden" name="p6_Pcat" value="<?php echo $p6_Pcat; ?>"/>56 <input type="hidden" name="p7_Pdesc" value="<?php echo $p7_Pdesc; ?>"/>57 <input type="hidden" name="p8_Url" value="<?php echo $p8_Url; ?>"/>58 <input type="hidden" name="p9_SAF" value="<?php echo $p9_SAF; ?>"/>59 <input type="hidden" name="pa_MP" value="<?php echo $pa_MP; ?>"/>60 <input type="hidden" name="pd_FrpId" value="<?php echo $pd_FrpId; ?>"/>61 <input type="hidden" name="pr_NeedResponse" value="<?php echo $pr_NeedResponse; ?>"/>62 <input type="hidden" name="hmac" value="<?php echo $hmac; ?>"/>63 <input type="submit" value="确认网上支付"/>64 </form>65 </html>payConfirm.php
1 <?php 2 include 'common.php'; 3 //获取从易宝支付网关返回的信息 4 $p1_MerId = "10001126856"; 5 $r0_Cmd = $_REQUEST['r0_Cmd']; 6 $r1_Code = $_REQUEST['r1_Code']; 7 $r2_TrxId = $_REQUEST['r2_TrxId']; 8 $r3_Amt = $_REQUEST['r3_Amt']; 9 $r4_Cur = $_REQUEST['r4_Cur'];10 $r5_Pid = $_REQUEST['r5_Pid'];11 $r6_Order = $_REQUEST['r6_Order'];12 $r7_Uid = $_REQUEST['r7_Uid'];13 $r8_MP = $_REQUEST['r8_MP'];14 $r9_BType = $_REQUEST['r9_BType'];15 $hmac = $_REQUEST['hmac'];16 17 // 拼接18 $res_src = "";19 $res_src = $res_src . $p1_MerId;20 $res_src = $res_src . $r0_Cmd;21 $res_src = $res_src . $r1_Code;22 $res_src = $res_src . $r2_TrxId;23 $res_src = $res_src . $r3_Amt;24 $res_src = $res_src . $r4_Cur;25 $res_src = $res_src . $r5_Pid;26 $res_src = $res_src . $r6_Order;27 $res_src = $res_src . $r7_Uid;28 $res_src = $res_src . $r8_MP;29 $res_src = $res_src . $r9_BType;30 $merchantKey = "69c1522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4P1";31 // 对返回的结果进行MD5-hmac加密处理,和返回的hmac签名串比较32 if (HmacMd5($res_src, $merchantKey) == $hmac) {33 if ($r1_Code == 1) {34 if ($r9_BType == 1) {35 echo '交易成功!';36 echo '订单号为' . $r6_Order . '支付成功!' . '所付金额是' . $r3_Amt . '易宝支付订单号' . $r2_TrxId;37 echo '<br/>浏览器重定向';38 } elseif ($r9_BType == 2) {39 echo 'success';40 echo '<br/>交易成功!';41 echo '<br/>服务器点对点通讯';42 }43 }44 } else {45 echo '签名被篡改了';46 }47 48 ?>res.php