本代码参照自韩顺平149讲视频后5讲,需要学习的朋友可以参考本代码

这是测试图片:

以下是代码部分:

 <?php

 function HmacMd5($data, $key)
{ //需要配置环境支撑iconv,否则中文参数不能正常处理
$key = iconv("GB2312", "UTF-8", $key);
$data = iconv("GB2312", "UTF-8", $data);
$b = 64;
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)));
}
//我们把易宝支付要求怎样生成一个签名串
//把各个请求参数凭借作为$data传入: $key 就是易宝给商家分配的密钥 ?>

common.php

 <html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
</head>
<form action="payConfirm.php" method="post">
<table>
<tr>
<td colspan="4">
订单号:<input type="text" name="p2_Order" />
支付金额:<input type="text" name="p3_Amt" />
</td>
</tr>
<tr>
<td colspan="4">请选择支付银行</td>
</tr>
<tr>
<td><input type="radio" name="pd_FrpId" value="CMBCHINA-NET-B2C" />招商银行</td>
<td><input type="radio" name="pd_FrpId" value="ICBC-NET-B2C" />工商银行</td>
<td><input type="radio" name="pd_FrpId" value="ABC-NET-B2C" />农业银行</td>
<td><input type="radio" name="pd_FrpId" value="CCB-NET-B2C" />建设银行</td>
</tr>
<tr>
<td colspan="4"><input type="submit" value="确认支付" /></td>
</tr>
</table>
</form>
</html>

pay.php

 <html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
</head>
<?php
include 'common.php';
// 这里我们获取用户提交的信息 // 1.获取订单号
$p0_Cmd = "Buy";
$p1_MerId = "10001126856";
$p2_Order = $_REQUEST['p2_Order'];
$p3_Amt = $_REQUEST['p3_Amt'];
$p4_Cur = "CNY";
// 商品名称
$p5_Pid = "";
$p6_Pcat = ""; // 商品种类
$p7_Pdesc = ""; // 商品介绍
// 只是易宝支付成功后,给url返回信息
$p8_Url = "http://loaclhost/FUCKPHP/onlinezhifu/res.php";
$p9_SAF = "0"; // 送货地址
$pa_MP = ""; // 额外介绍
$pd_FrpId = $_REQUEST['pd_FrpId']; // 支付通道
$pr_NeedResponse = "1"; // 应答机制
// 我们把请求参数一个一个拼接(拼接的时候,顺序很重要!!)
$data="";
$data=$data.$p0_Cmd;
$data=$data.$p1_MerId;
$data=$data.$p2_Order;
$data=$data.$p3_Amt;
$data=$data.$p4_Cur;
$data=$data.$p5_Pid;
$data=$data.$p6_Pcat;
$data=$data.$p7_Pdesc;
$data=$data.$p8_Url;
$data=$data.$p9_SAF;
$data=$data.$pa_MP;
$data=$data.$pd_FrpId;
$data=$data.$pr_NeedResponse; $merchantKey ="69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl";
// hmac是签名串,是用于易宝和商家互相确认的关键字
// 这里我们需要使用算法来生成(md5-hmac算法)
$hmac = HmacMd5($data,$merchantKey);
?>
你的订单号是:<?php echo $p2_Order; ?>支付的金额是<?php echo $p3_Amt; ?>
<!-- 把要提交的数据用隐藏域表示 -->
<form action="https://www.yeepay.com/app-merchant-proxy/node" method="post">
<input type="hidden" name="p0_Cmd" value="<?php echo $p0_Cmd; ?>"/>
<input type="hidden" name="p1_MerId" value="<?php echo $p1_MerId; ?>"/>
<input type="hidden" name="p2_Order" value="<?php echo $p2_Order; ?>"/>
<input type="hidden" name="p3_Amt" value="<?php echo $p3_Amt; ?>"/>
<input type="hidden" name="p4_Cur" value="<?php echo $p4_Cur; ?>"/>
<input type="hidden" name="p5_Pid" value="<?php echo $p5_Pid; ?>"/>
<input type="hidden" name="p6_Pcat" value="<?php echo $p6_Pcat; ?>"/>
<input type="hidden" name="p7_Pdesc" value="<?php echo $p7_Pdesc; ?>"/>
<input type="hidden" name="p8_Url" value="<?php echo $p8_Url; ?>"/>
<input type="hidden" name="p9_SAF" value="<?php echo $p9_SAF; ?>"/>
<input type="hidden" name="pa_MP" value="<?php echo $pa_MP; ?>"/>
<input type="hidden" name="pd_FrpId" value="<?php echo $pd_FrpId; ?>"/>
<input type="hidden" name="pr_NeedResponse" value="<?php echo $pr_NeedResponse; ?>"/>
<input type="hidden" name="hmac" value="<?php echo $hmac; ?>"/>
<input type="submit" value="确认网上支付"/>
</form>
</html>

payConfirm.php

 <?php
include 'common.php';
//获取从易宝支付网关返回的信息
$p1_MerId = "10001126856";
$r0_Cmd = $_REQUEST['r0_Cmd'];
$r1_Code = $_REQUEST['r1_Code'];
$r2_TrxId = $_REQUEST['r2_TrxId'];
$r3_Amt = $_REQUEST['r3_Amt'];
$r4_Cur = $_REQUEST['r4_Cur'];
$r5_Pid = $_REQUEST['r5_Pid'];
$r6_Order = $_REQUEST['r6_Order'];
$r7_Uid = $_REQUEST['r7_Uid'];
$r8_MP = $_REQUEST['r8_MP'];
$r9_BType = $_REQUEST['r9_BType'];
$hmac = $_REQUEST['hmac']; // 拼接
$res_src = "";
$res_src = $res_src . $p1_MerId;
$res_src = $res_src . $r0_Cmd;
$res_src = $res_src . $r1_Code;
$res_src = $res_src . $r2_TrxId;
$res_src = $res_src . $r3_Amt;
$res_src = $res_src . $r4_Cur;
$res_src = $res_src . $r5_Pid;
$res_src = $res_src . $r6_Order;
$res_src = $res_src . $r7_Uid;
$res_src = $res_src . $r8_MP;
$res_src = $res_src . $r9_BType;
$merchantKey = "69c1522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4P1";
// 对返回的结果进行MD5-hmac加密处理,和返回的hmac签名串比较
if (HmacMd5($res_src, $merchantKey) == $hmac) {
if ($r1_Code == 1) {
if ($r9_BType == 1) {
echo '交易成功!';
echo '订单号为' . $r6_Order . '支付成功!' . '所付金额是' . $r3_Amt . '易宝支付订单号' . $r2_TrxId;
echo '<br/>浏览器重定向';
} elseif ($r9_BType == 2) {
echo 'success';
echo '<br/>交易成功!';
echo '<br/>服务器点对点通讯';
}
}
} else {
echo '签名被篡改了';
} ?>

res.php

易宝网上支付平台的PHP接口代码的更多相关文章

  1. 玩蛇记之用python实现易宝快速支付接口

    玩蛇记之用python实现易宝快速支付接口 现在很多这种快速支付的通道,易宝支持的通道算是很全面的,正好最近需要集成易宝的支付通道到平台中,所以写一贴来记录一下,顺便鄙视一下国内的支付平台,api的支 ...

  2. 农业银行网上支付平台-商户接口编程-demo调试

    调试的时候会报一个这样的错误. ReturnCode = [1999]ErrorMessage = [系统发生无法预期的错误 - 第1个证书无法读取证书文档] 网上其他资料说是权限问题,有的人可能是权 ...

  3. php网上支付易宝

    巴巴运动网是通过易宝向招商银行打钱,这个首先易宝是需要审核巴巴运动网的钱来的是否正当不然易宝就成了一个洗钱的工具,这个是犯法的:因为钱的来路不明!财政部是需要抓起来的!所以钱的流向实际上是用户的招商银 ...

  4. 【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】

    一.网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付. 1.直接和银行对接. 2.使用第三方支付平台 3.常见的第三方支付平台 二.使用易宝 ...

  5. 【SSH网上商城项目实战21】从Demo中看易宝支付的流程

         转自: https://blog.csdn.net/eson_15/article/details/51447492 这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程后, ...

  6. 开发自己的网上支付案例代码(易宝支付php)

    1.简单的图解(如上所示) 易宝支付与支付宝是不一样的,但也有类似之处,支付宝是专门为淘宝软件开发的一套机制,资金会在中间支付公司(支付宝)停留,等待顾客确认,当顾客确认后,才会真正扣钱.而易宝支付时 ...

  7. 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径

    最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...

  8. 【SSH网上商城项目实战20】在线支付平台的介绍

    转自:https://blog.csdn.net/eson_15/article/details/51441431 之前已经完成了首页的显示,用户添加购物车,确认订单等功能,下面就是支付功能的开发了. ...

  9. 支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!

    支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者! 锋锐支付平台程序(www.100freenet.com)隶属于盐城市沐良商贸有限公司(沈阳杰速网络科技有限公司旗下 ...

随机推荐

  1. 集装箱学习(两):动手模拟AOP

    简单的说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 上文已经介绍模拟IoC实现,这篇文章来动手模拟AOP. AOP简述 面向对象强调"一切皆是对象&quo ...

  2. ng-validate

    客户端表单验证是AngularJS里面最酷的功能之一. AngularJS表单验证可以让你从一开始就写出一个具有交互性和可相应的现代HTML5表单. 在AngularJS中,有许多表单验证指令.在这里 ...

  3. NPOI导出为Excel文件

    1.添加引用 2.将ExcelRender.cs和SqlHelper.cs两个类拷贝到App_Code文件夹下 3.写后台代码 eg:根据部门和日期导出成绩表 /// <summary> ...

  4. oracle 定义数据完整性

    1. 定义主键约束 1.1 在创建表时定义主键约束 create table student(name varchar2(8),studentid varchar2(10) primary key,s ...

  5. c#中的数据类型简介(数组)

    c#中的数据类型简介(数组) 数组定义 可以将数组看成相同数据类型的一组或多组数据,包括一维数组,多维数组和交错数组. 数值数组元素的默认值设置为零,而引用元素的默认值设置为 null. 交错数组是指 ...

  6. linux 链接控制

    如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,vim /etc/sysctl.conf编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1net.ip ...

  7. juce AsyncUpdaterMessage 分析

    这个类同样是基于 CallbackMessage, 主要目的是为了在主线程中进行回调,只不过在收到消息的时候进行检测,检测消息发送对象是否已经删除,如果消息发送对象已经没了.消息回调最终调用了调用者的 ...

  8. HDU1789(Doing Homework again)题解

    HDU1789(Doing Homework again)题解 以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定任务分数和其截止日期,每日可完成一任务,输出当罚分尽可能小时 ...

  9. java web每天定时执行任务(四步轻松搞定)

    第一步: package com.eh.util; import java.util.Calendar; import java.util.Date; import java.util.Timer; ...

  10. Android 大神博客汇集

    非常给力的CSDNBlog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要你下定决心跟随强者的脚步,成为人们眼中的大神,只不过是时间问题! 下 ...