对于ECSHOP来说,支付是以接口的形式存在的。于是:

1:首先添加接口文件

includes\modules\payment下,增加abcbank.php,代码如下:

<?php
/**
* ECSHOP 农行在线插件
* $Author: 嘉兴科蓝软件有限公司
* QQ 32974283
*/ if (!defined('IN_ECS'))
{
die('Hacking attempt');
} $payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/abcbank.php';
if (file_exists($payment_lang))
{
global $_LANG; include_once($payment_lang);
} /* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE)
{
$i = isset($modules) ? count($modules) : 0; /* 代码 */
$modules[$i]['code'] = basename(__FILE__, '.php'); /* 描述对应的语言项 */
$modules[$i]['desc'] = '农行接口'; /* 是否支持货到付款 */
$modules[$i]['is_cod'] = '0'; /* 是否支持在线支付 */
$modules[$i]['is_online'] = '1'; /* 支付费用 */
$modules[$i]['pay_fee'] = '0'; /* 作者 */
$modules[$i]['author'] = '嘉兴科蓝软件有限公司'; /* 网址 */
$modules[$i]['website'] = 'http://www.kelasoft.com/'; /* 版本号 */
$modules[$i]['version'] = 'kelasoft.com V1.0'; /* 配置信息 */
$modules[$i]['config'] = array( ); return;
} /**
* 类
*/
class abcbank
{
/**
* 构造函数
*
* @access public
* @param
*
* @return void
*/
function abcbank()
{
} function __construct()
{
$this->abcbank();
} /**
* 生成支付代码
* @param array $order 订单信息
* @param array $payment 支付方式信息
*/
function get_code($order, $payment)
{
if (!defined('EC_CHARSET'))
{
$charset = 'utf-8';
}
else
{
$charset = EC_CHARSET;
} $tOrderNo = $order['order_id'];//$order['order_sn']; /*订单编号*/
$tOrderDesc = 'Game Card Order'; /*订单说明*/
$tOrderDate = date("Y/m/d", $order['add_time']); /*订单日期*/
$tOrderTime = date("h:i:s", $order['add_time']); /*订单时间*/
$tOrderAmountStr = $order['order_amount'];//sprintf("%012d",$order['order_amount']); /*订单金额*/
$tOrderURL ='http://localhost:8080/huahui/MerchantPayment/MerchantQueryOrder.php?OrderNo=ON200306300001&QueryType=1'; /*订单查询网址*/
$tProductType = '0202'; /*商品种类*/
$tPaymentType ='A'; /*支付类型*/
$tpaymentlinktype ='1'; /*接入类型*/
$tnotifytype = '0'; /*通知方式*/
$tresultnotifyurl ='http://localhost:8080/huahui/MerchantPayment/MerchantResult.php'; /*支付结果地址*/
$tMerchantRemarks = 'Hi!'; /*商家备注*/
$tTotalCount = '1'; /*订单数量*/
$tproductid = "160605"; /*商品ID*/
$tproductname= "HTC s710e"; /*商品名称*/
$tuniteprice ="0.01"; /*商品单价*/
$tqty ="1"; /*购买数量*/ $def_url = '<br /><form style="text-align:center;" method=post action="MerchantPayment/MerchantPayment.php">';
$def_url .= "<input type=HIDDEN name='OrderNo' value='". $tOrderNo."'>";
$def_url .= "<input type=HIDDEN name='OrderDesc' value='". $tOrderDesc."'>";
$def_url .= "<input type=HIDDEN name='OrderDate' value='".$tOrderDate."'>";
$def_url .= "<input type=HIDDEN name='OrderTime' value='".$tOrderTime."'>";
$def_url .= "<input type=HIDDEN name='OrderAmount' value='".$tOrderAmountStr."'>";
$def_url .= "<input type=HIDDEN name='OrderURL' value='".$tOrderURL."'>";
$def_url .= "<input type=HIDDEN name='ProductType' value='".$tProductType."'>";
$def_url .= "<input type=HIDDEN name='PaymentType' value='".$tPaymentType."'>";
$def_url .= "<input type=HIDDEN name='PaymentLinkType' value='".$tpaymentlinktype."'>";
$def_url .= "<input type=HIDDEN name='NotifyType' value='".$tnotifytype."'>";
$def_url .= "<input type=HIDDEN name='ResultNotifyURL' value='".$tresultnotifyurl."'>";
$def_url .= "<input type=HIDDEN name='MerchantRemarks' value='".$tMerchantRemarks."'>";
$def_url .= "<input type=HIDDEN name='TotalCount' value='".$tTotalCount."'>";
$def_url .= "<input type=HIDDEN name='productid[]' value='".$tproductid."'>";
$def_url .= "<input type=HIDDEN name='productname[]' value='".$tproductname."'>";
$def_url .= "<input type=HIDDEN name='uniteprice[]' value='".$tuniteprice."'>";
$def_url .= "<input type=HIDDEN name='qty[]' value='".$tqty."'>";
$def_url .= "<input type=submit value='" .$GLOBALS['_LANG']['pay_button']. "'>";
$def_url .= "</form>"; return $def_url;
} /**
* 响应操作
*/
function respond()
{
}
}
?>

那么,注意了,respond在这里是不需要写任何代码的,农行数据会直接跳转到tresultnotifyurl 所定义的地址上。

二:发送和接收

MerchantPayment/MerchantPayment.php,如下:

<?php

require_once ('../ebusclient/PaymentRequest.php');

$tRequest = new PaymentRequest();

$tRequest->order["PayTypeID"] = "ImmediatePay";//($_POST['PayTypeID']); //设定交易类型
$tRequest->order["OrderNo"] = ($_POST['OrderNo']); //设定订单编号
$tRequest->order["ExpiredDate"] = "30";//($_POST['ExpiredDate']); //设定订单保存时间
$tRequest->order["OrderAmount"] = ($_POST['OrderAmount']);//($_POST['PaymentRequestAmount']); //设定交易金额
$tRequest->order["Fee"] = "";//($_POST['Fee']); //设定手续费金额
$tRequest->order["CurrencyCode"] = "156";//($_POST['CurrencyCode']); //设定交易币种
$tRequest->order["ReceiverAddress"] = "xx";//($_POST['ReceiverAddress']); //收货地址
$tRequest->order["InstallmentMark"] = "0";//($_POST['InstallmentMark']); //分期标识
$installmentMerk = "0";//$_POST['InstallmentMark'];
$paytypeID = "ImmediatePay";//$_POST['PayTypeID'];
if (strcmp($installmentMerk, "1") == 0 && strcmp($paytypeID, "DividedPay") == 0) {
$tRequest->order["InstallmentCode"] = ($_POST['InstallmentCode']); //设定分期代码
$tRequest->order["InstallmentNum"] = ($_POST['InstallmentNum']); //设定分期期数
}
$tRequest->order["BuyIP"] = "";//($_POST['BuyIP']); //IP
$tRequest->order["OrderDesc"] = ($_POST['OrderDesc']); //设定订单说明
$tRequest->order["OrderURL"] = ($_POST['OrderURL']); //设定订单地址
$tRequest->order["OrderDate"] = ($_POST['OrderDate']); //设定订单日期 (必要信息 - YYYY/MM/DD)
date_default_timezone_set('PRC');
$hh = date("H:i:s",time());
$tRequest->order["OrderTime"] = $hh;//($_POST['OrderTime']); //设定订单时间 (必要信息 - HH:MM:SS)
$tRequest->order["orderTimeoutDate"] = "20240619104901";//($_POST['orderTimeoutDate']); //设定订单有效期
$tRequest->order["CommodityType"] = "0202";//($_POST['CommodityType']); //设置商品种类 $orderitem = array ();
$orderitem["SubMerName"] = "HongYue HuaHui"; //设定二级商户名称
$orderitem["SubMerId"] = "12345"; //设定二级商户代码
$orderitem["SubMerMCC"] = "0000"; //设定二级商户MCC码
$orderitem["SubMerchantRemarks"] = "xx"; //二级商户备注项
$orderitem["ProductID"] = "IP000001"; //商品代码,预留字段
$orderitem["ProductName"] = ($_POST['OrderDesc']); //商品名称
$orderitem["UnitPrice"] = "1.00"; //商品总价
$orderitem["Qty"] = "1"; //商品数量
$orderitem["ProductRemarks"] = ($_POST['OrderDesc']); //商品备注项
$orderitem["ProductType"] = "0202"; //商品类型
$orderitem["ProductDiscount"] = "0.9"; //商品折扣
$orderitem["ProductExpiredDate"] = "10"; //商品有效期
$tRequest->orderitems[0] = $orderitem; //3、生成支付请求对象
$tRequest->request["PaymentType"] = ($_POST['PaymentType']); //设定支付类型
$tRequest->request["PaymentLinkType"] = ($_POST['PaymentLinkType']); //设定支付接入方式
if ($_POST['PaymentType'] === "6" && $_POST['PaymentLinkType'] === "2") {
$tRequest->request["UnionPayLinkType"] = ($_POST['UnionPayLinkType']); //当支付类型为6,支付接入方式为2的条件满足时,需要设置银联跨行移动支付接入方式
}
$tRequest->request["ReceiveAccount"] = "";//($_POST['ReceiveAccount']); //设定收款方账号
$tRequest->request["ReceiveAccName"] = "";//($_POST['ReceiveAccName']); //设定收款方户名
$tRequest->request["NotifyType"] = ($_POST['NotifyType']); //设定通知方式
$tRequest->request["ResultNotifyURL"] = ($_POST['ResultNotifyURL']); //设定通知URL地址
$tRequest->request["MerchantRemarks"] = ($_POST['MerchantRemarks']); //设定附言
$tRequest->request["IsBreakAccount"] = "0"; //($_POST['IsBreakAccount']); //设定交易是否分账
$tRequest->request["SplitAccTemplate"] = "";//($_POST['SplitAccTemplate']); //分账模版编号 $tResponse = $tRequest->postRequest();
//支持多商户配置
//$tResponse = $tRequest->extendPostRequest(2); if ($tResponse->isSuccess()) {
// print ("<br>Success!!!" . "</br>");
// print ("ReturnCode = [" . $tResponse->getReturnCode() . "]</br>");
// print ("ReturnMsg = [" . $tResponse->getErrorMessage() . "]</br>");
$PaymentURL = $tResponse->GetValue("PaymentURL");
// print ("<br>PaymentURL=$PaymentURL" . "</br>");
echo "<script language='javascript'>";
echo "window.location.href='$PaymentURL'";
echo "</script>";
} else {
print ("<br>对不起,不能重复发起支付, 请重新下单!!!" . "</br>");
//print ("<br>Failed!!!" . "</br>");
//print ("ReturnCode = [" . $tResponse->getReturnCode() . "]</br>");
//print ("ReturnMsg = [" . $tResponse->getErrorMessage() . "]</br>");
}
?>

MerchantPayment/MerchantResult.php,如下:

<?php
define('IN_ECS', true); require('../includes/init.php'); require_once ('../includes/lib_payment.php');
require_once ('../ebusclient/Result.php'); $tResult = new Result();
$tResponse = $tResult->init($_POST['MSG']); if ($tResponse->isSuccess()) {
//2、、支付成功
// print ("TrxType = [" . $tResponse->getValue("TrxType") . "]<br/>");
// print ("OrderNo = [" . $tResponse->getValue("OrderNo") . "]<br/>");
// print ("Amount = [" . $tResponse->getValue("Amount") . "]<br/>");
// print ("BatchNo = [" . $tResponse->getValue("BatchNo") . "]<br/>");
// print ("VoucherNo = [" . $tResponse->getValue("VoucherNo") . "]<br/>");
// print ("HostDate = [" . $tResponse->getValue("HostDate") . "]<br/>");
// print ("HostTime = [" . $tResponse->getValue("HostTime") . "]<br/>");
// print ("MerchantRemarks = [" . $tResponse->getValue("MerchantRemarks") . "]<br/>");
// print ("PayType = [" . $tResponse->getValue("PayType") . "]<br/>");
// print ("NotifyType = [" . $tResponse->getValue("NotifyType") . "]<br/>");
new_order_paid($tResponse->getValue("OrderNo"), PS_PAYED, '', '农行支付');
// print ("xxx");
$url = "http://localhost:8080/huahui/user.php?act=order_list";
echo "<script language='javascript' type='text/javascript'>";
echo "window.location.href='$url'";
echo "</script>";
} else {
//3、失败
print ("<br>ReturnCode = [" . $tResponse->getReturnCode() . "]<br>");
print ("ErrorMessage = [" . $tResponse->getErrorMessage() . "]<br>");
set_pay_error($tResponse->getValue("OrderNo"), "", $tResponse->getValue("Amount"), '农行支付', $tResponse->getReturnCode()); }
?>

三:安装

接下来,我们就需要安装了,

1:首先将文件夹和文件进行覆盖;

2:进入系统后台,点击安装

3:修改证书地址、商户号、密码等,

首先,找到文件:\ebusclient\TrustMerchant.ini,然后把2和4两个证书的路径,改为cert文件夹对应文件的绝对路径。上图3处指需要给接口指定一个日志路径(备注:一定要创建路径)。

至此,我们的ecshop的pc端已经支持农行支付了。

四:关于手机端

echshop的支付只要按照上面进行安装,数据库中就有了记录,如下:

所以,手机端类似,接口文件不需要动了。只不过,需要在mobile目录下一样添加MerchantPayment文件夹,加入发送和接收的文件就可以了。

ECSHOP农行支付接口开发(含手机端)的更多相关文章

  1. windows下shopex农行支付接口开发笔记

    1.首先是配置Java和tomcat 农行文档里的是linux下的说明.window下我们要按照以下在setclasspath.bat里设置JAVA_HOME,JRE_HOME(红色字体部分).设置这 ...

  2. 支付宝WAP支付接口开发(Node/Coffee语言)

    此博客不更新很久了, 更新的文档在这, 有兴趣到这里围观: http://neutra.github.io/2013/%E6%94%AF%E4%BB%98%E5%AE%9DWAP%E6%94%AF%E ...

  3. 支付宝WAP支付接口开发

    支付宝WAP支付接口开发 因项目需要,要增加支付宝手机网站支付功能,找了支付宝的样例代码和接口说明,折腾两天搞定,谨以此文作为这两天摸索的总结.由于公司有自己的支付接口,并不直接使用这个接口,所以晚些 ...

  4. 【转】支付宝WAP支付接口开发

    支付宝WAP支付接口开发 因项目需要,要增加支付宝手机网站支付功能,找了支付宝的样例代码和接口说明,折腾两天搞定,谨以此文作为这两天摸索的总结.由于公司有自己的支付接口,并不直接使用这个接口,所以晚些 ...

  5. php支付宝在线支付接口开发教程【转】

    php支付宝在线支付接口开发教程 这篇文章主要为大家详细介绍了php支付宝在线支付接口开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   1.什么是第三方支付 所谓第三方支付,就是一些和各 ...

  6. php微信支付接口开发程序

    php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...

  7. JAVA微信支付接口开发——支付

    微信支付接口开发--支付 这几天在做支付服务,系统接入了支付宝.微信.银联三方支付接口.个人感觉支付宝的接口开发较为简单,并且易于测试. 关于数据传输,微信是用xml,所以需要对xml进行解析. 1. ...

  8. php微信支付接口开发程序(流程已通)

    php微信支付接口开发程序(流程已通) 来源:未知    时间:2014-12-11 17:11   阅读数:11843   作者:xxadmin [导读] 微信支付接口现在也慢慢的像支付宝一个可以利 ...

  9. 银盛支付ecshop,shopex,shopnc在线支付接口,php版本支付接口开发

    最近应一个客户的要求,给他的一个ecshop商城开发银盛支付在线支付接口.银盛支付服务股份有限公司(简称银盛支付)成立于2009年7月,总注册资本14000万元人民币,员工队伍持续壮大.2011年5月 ...

随机推荐

  1. PhoneGap--001 入门 安装

    PhoneGap 百度百科 PhoneGap 中文网 3.0 安装使用 今天也配置好phonegap3.0 android开发环境了,操作系统是win7,就楼主文章做些补充. 我是按phonegap官 ...

  2. RSpec shared examples with template methods

    It’s pretty common to have multiple tests that are nearly the same. In one app, we support bidding o ...

  3. Socket通信基本原理

    Http通信: http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据. Socket通信: Socket通信则是在双方建立起连接后就 ...

  4. 实验 2 用C语言编写简单程序

    #include<stdio.h> int main() { int x,y; printf("enter x:"); scanf("%d",&am ...

  5. python中的enumerate

    读取一个iter,返回[index,内容]的一个list

  6. github基本操作

    http://www.cnblogs.com/SeeYouBug/p/6193527.html#3583637

  7. lua 自己编译源文件

    ,下载源代码 http://www.lua.org/download.html 直接下载source ,vs2010新建win32项目 应用程序设置中设成静态库 ,将.c(除去lua.c)和.h文件加 ...

  8. listener监听器

    前言:之前写了一篇关于Filter的文章:http://tianweili.github.io/blog/2015/01/26/java-filter/,现在再来一篇Listener的,Filter和 ...

  9. jsp页面格式时间yy-mm-dd

    这个问题把我花了1小时都没弄出来  各种报错  还是最后同学告知才知道的. 导入  :<%@ taglib uri="http://java.sun.com/jsp/jstl/func ...

  10. 最小和(min)

    题目描述: N 个数排成一排,你可以任意选择连续的若干个数,算出它们的和.问该如何选择才能 使得和的绝对值最小. 如:N=8 时,8个数如下: 1    2    3     4    5    6 ...