ECSHOP农行支付接口开发(含手机端)

对于ECSHOP来说,支付是以接口的形式存在的。于是:1:首先添加接口文件includesmodulespayment下,增加abcbank.php,代码如下:那么,注意了,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:修改证书地址、商户号、密码等, 首先,找到文件:ebusclientTrustMerchant.ini,然后把2和4两个证书的路径,改为cert文件夹对应文件的绝对路径。上图3处指需要给接口指定一个日志路径(备注:一定要创建路径)。 至此,我们的ecshop的pc端已经支持农行支付了。 四:关于手机端echshop的支付只要按照上面进行安装,数据库中就有了记录,如下:image 所以,手机端类似,接口文件不需要动了。只不过,需要在mobile目录下一样添加MerchantPayment文件夹,加入发送和接收的文件就可以了。

相关内容推荐