ecshop支付宝自动发货接口用法示例

教程大全 2026-01-08 18:28:42 浏览

本文实例讲述了ecshop支付宝自动发货接口用法。分享给大家供大家参考,具体如下:

一、在数据库order_info中添加trade_no 字段

SQL语句:

代码如下:ALTER TABLE `ec_order_info` ADD COLUMN `trade_no` varchar(100) NOT NULL DEFAULT '' AFTER `pay_name`;

二、 修改includes/modules/payment/alipay.php文件

查找:

代码如下:$order_sn = trim($order_sn);

代码之下添加:

代码如下:$trade_no = trim($_GET['trade_no']);//获取支付宝交易号

查找:

代码如下:if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS'){/* 改变订单状态 */order_paid($order_sn, 2);

修改:

代码如下:if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS'){/* 改变订单状态 */order_paid($order_sn, 2,'',$trade_no); ecshop

三、修改includes/lib_payment.php文件原文件118行开始

代码如下:/*** 修改订单的支付状态** @access public* @param string $log_id 支付编号* @param integer $pay_status 状态* @param string $note 备注* @param string $trade_no 支付宝交易号* @return void*/function order_paid($log_id, $pay_status = PS_PAYED, $note = '',$trade_no = ''){/* 取得支付编号 */$log_id = intval($log_id);if ($log_id > 0){/* 取得要修改的支付记录信息 */$sql = "SELECT * FROM " . $GLOBALS['ecs']->table('pay_log') ." WHERE log_id = '$log_id'";$pay_log = $GLOBALS['db']->getRow($sql);if ($pay_log && $pay_log['is_paid'] == 0){/* 修改此次支付操作的状态为已付款 */$sql = 'UPDATE ' . $GLOBALS['ecs']->table('pay_log') ." SET is_paid = '1' WHERE log_id = '$log_id'";$GLOBALS['db']->query($sql);/* 根据记录类型做相应处理 */if ($pay_log['order_type'] == PAY_ORDER){/* 取得订单信息 */$sql = 'SELECT order_id, user_id, order_sn, trade_no, consignee, address, tel, shipping_id, extension_code, extension_id, goods_amount ' .'FROM ' . $GLOBALS['ecs']->table('order_info') ." WHERE order_id = '$pay_log[order_id]'";$order = $GLOBALS['db']->getRow($sql);$order_id = $order['order_id'];$order_sn = $order['order_sn'];/*解决订单修改后多次付款发货确认*/$trade = $order['trade_no'];if (!emptyempty($trade)){$trade_no = $trade.",".$trade_no;}/* 修改订单状态为已付款 */$sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') ." SET order_status = '" . OS_CONFIRMED . "', " ." confirm_time = '" . gmtime() . "', " ." pay_status = '$pay_status', " ." pay_time = '".gmtime()."', " ." money_paid = order_amount," ." trade_no = '$trade_no',".//更新支付宝交易号" order_amount = 0 "."WHERE order_id = '$order_id'";$GLOBALS['db']->query($sql);

四、修改admin/order.php文件

查找:

代码如下:$smarty->assign('action_list', $act_list);/* 模板赋值 */$smarty->assign('delivery_order', $delivery_order);$smarty->assign('goods_list', $goods_list);$smarty->assign('delivery_id', $delivery_id); // 发货单id

代码之上添加:

代码如下:/*判断支付方式是否支付宝*/$alipay = false;$order = order_info($delivery_order['order_id']); //根据订单ID查询订单信息,返回数组$order$payment = payment_info($order['pay_id']); //取得支付方式信息if($payment['pay_code'] == "alipay" && $delivery_order['status'] == 2 && !emptyempty($order['trade_no'])){$alipay = true;}$smarty->assign('alipay', $alipay);

五、修改admin\templates\delivery_info.htm文件

查找:

代码如下:

替换:

代码如下:

六、 上传alipay_delivery.php文件到admin 目录下.

希望本文所述对大家基于Ecshop程序设计有所帮助。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐