ecshop支付宝自动发货接口用法示例
<p>本文实例讲述了ecshop支付宝自动发货接口用法。分享给大家供大家参考,具体如下:</p>
<p>
一、在数据库order_info中添加trade_no 字段</p>
<p>
SQL语句:</p>
<div>
代码如下:</div>
<div id="phpcode12">
ALTER TABLE `ec_order_info` ADD COLUMN `trade_no` varchar(100) NOT NULL DEFAULT '' AFTER `pay_name`;</div>
<p>
</p>
<p>
二、 修改includes/modules/payment/alipay.php文件</p>
<p>
查找:</p>
<div>
代码如下:</div>
<div id="phpcode13">
$order_sn = trim($order_sn);</div>
<p>
</p>
<p>
代码之下添加:</p>
<div>
代码如下:</div>
<div id="phpcode14">
$trade_no = trim($_GET['trade_no']);//获取支付宝交易号</div>
<p>
</p>
<p>
查找:<br>
</p>
<div>
代码如下:</div>
<div id="phpcode15">
if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS')<br>
{<br>
/* 改变订单状态 */<br>
order_paid($order_sn, 2);</div>
<p>
</p>
<p>
修改:<br>
</p>
<div>
代码如下:</div>
<div id="phpcode16">
if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS')<br>
{<br>
/* 改变订单状态 */<br>
order_paid($order_sn, 2,'',$trade_no);</div>
<p>
</p>
<p>
三、修改includes/lib_payment.php文件原文件118行开始<br>
</p>
<div>
代码如下:</div>
<div id="phpcode17">
/**<br>
* 修改订单的支付状态<br>
*<br>
* @access public<br>
* @param string $log_id 支付编号<br>
* @param integer $pay_status 状态<br>
* @param string $note 备注<br>
* @param string $trade_no 支付宝交易号<br>
* @return void<br>
*/<br>
function order_paid($log_id, $pay_status = PS_PAYED, $note = '',$trade_no = '')<br>
{<br>
/* 取得支付编号 */<br>
$log_id = intval($log_id);<br>
if ($log_id > 0)<br>
{<br>
/* 取得要修改的支付记录信息 */<br>
$sql = "SELECT * FROM " . $GLOBALS['ecs']->table('pay_log') .<br>
" WHERE log_id = '$log_id'";<br>
$pay_log = $GLOBALS['db']->getRow($sql);<br>
if ($pay_log && $pay_log['is_paid'] == 0)<br>
{<br>
/* 修改此次支付操作的状态为已付款 */<br>
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('pay_log') .<br>
" SET is_paid = '1' WHERE log_id = '$log_id'";<br>
$GLOBALS['db']->query($sql);<br>
/* 根据记录类型做相应处理 */<br>
if ($pay_log['order_type'] == PAY_ORDER)<br>
{<br>
/* 取得订单信息 */<br>
$sql = 'SELECT order_id, user_id, order_sn, trade_no, consignee, address, tel, shipping_id, extension_code, extension_id, goods_amount ' .<br>
'FROM ' . $GLOBALS['ecs']->table('order_info') .<br>
" WHERE order_id = '$pay_log'";<br>
$order = $GLOBALS['db']->getRow($sql);<br>
$order_id = $order['order_id'];<br>
$order_sn = $order['order_sn'];<br>
/*解决订单修改后多次付款发货确认*/<br>
$trade = $order['trade_no'];<br>
if (!emptyempty($trade))<br>
{<br>
$trade_no = $trade.",".$trade_no;<br>
}<br>
/* 修改订单状态为已付款 */<br>
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') .<br>
" SET order_status = '" . OS_CONFIRMED . "', " .<br>
" confirm_time = '" . gmtime() . "', " .<br>
" pay_status = '$pay_status', " .<br>
" pay_time = '".gmtime()."', " .<br>
" money_paid = order_amount," .<br>
" trade_no = '$trade_no',".//更新支付宝交易号<br>
" order_amount = 0 ".<br>
"WHERE order_id = '$order_id'";<br>
$GLOBALS['db']->query($sql);</div>
<p>
</p>
<p>
四、修改admin/order.php文件</p>
<p>
查找:<br>
</p>
<div>
代码如下:</div>
<div id="phpcode18">
$smarty->assign('action_list', $act_list);<br>
/* 模板赋值 */<br>
$smarty->assign('delivery_order', $delivery_order);<br>
$smarty->assign('goods_list', $goods_list);<br>
$smarty->assign('delivery_id', $delivery_id); // 发货单id</div>
<p>
</p>
<p>
代码之上添加:<br>
</p>
<div>
代码如下:</div>
<div id="phpcode19">
/*判断支付方式是否支付宝*/<br>
$alipay = false;<br>
$order = order_info($delivery_order['order_id']); //根据订单ID查询订单信息,返回数组$order<br>
$payment = payment_info($order['pay_id']); //取得支付方式信息<br>
if($payment['pay_code'] == "alipay" && $delivery_order['status'] == 2 && !emptyempty($order['trade_no']))<br>
{<br>
$alipay = true;<br>
}<br>
$smarty->assign('alipay', $alipay);</div>
<p>
</p>
<p>
五、修改admin\templates\delivery_info.htm文件</p>
<p>
查找:</p>
<div>
代码如下:</div>
<div id="phpcode20">
<form action="order.php" method="post" name="theForm"></div>
<p>
</p>
<p>
替换:<br>
</p>
<div>
代码如下:</div>
<div id="phpcode21">
<form {if $alipay}onSubmit="this.target='_blank';this.action='alipay_delivery.php';<br>
this.submit();this.target='_self';this.action='order.php'"{else}action="order.php"{/if} method="post" name="theForm"></div>
<p>
</p>
<p>
六、 上传alipay_delivery.php文件到admin 目录下.</p>
<p>
希望本文所述对大家基于Ecshop程序设计有所帮助。</p>
頁:
[1]