zoukankan      html  css  js  c++  java
  • 易宝网上支付平台的PHP接口代码

    本代码参照自韩顺平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
  • 相关阅读:
    C++实例 分解质因数
    C++语言 堆排序
    下载吧压缩工具(360超级注释压缩)
    unresolved external symbol __endthreadex错误解决
    C语言 常用函数A
    C++实例 获取进程所在文件夹
    IIS 服务或万维网发布服务,或者依赖这 服务可能在启动期间发生错误或者已禁用
    字體的css
    ubuntu下mono初体验<一>
    NOSQL之mongodb简介及安装 for linux(centOS)<二>
  • 原文地址:https://www.cnblogs.com/guaidaodark/p/4547926.html
Copyright © 2011-2022 走看看