php专区

 首页 > php专区 > PHP应用 > CMS建站 > ecshop 支付宝自动发货接口 - ecshop

ecshop 支付宝自动发货接口 - ecshop

分享到:
【字体:
导读:
          一、在数据库order_info中添加trade_no 字段SQL语句:ALTER TABLE `ec_order_info` ADD COLUMN `trade_no` varchar(100) NOT NULL DEFAULT 39; 39; AFTER `pay_name`;二、 修改inc...

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']);//获取支付宝交易号

查找:

  1. if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS'
  2.         { 
  3.             /* 改变订单状态 */ 
  4.             order_paid($order_sn, 2); 

修改:

  1. if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS'
  2.         { 
  3.             /* 改变订单状态 */ 
  4.             order_paid($order_sn, 2,'',$trade_no); 

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

  1. /** 
  2.  * 修改订单的支付状态 
  3.  * 
  4.  * @access public 
  5.  * @param   string $log_id     支付编号 
  6.  * @param   integer $pay_status 状态 
  7.  * @param   string $note       备注 
  8.  * @param   string $trade_no   支付宝交易号 
  9.  * @return void 
  10.  */ 
  11. function order_paid($log_id$pay_status = PS_PAYED, $note = '',$trade_no = ''
  12.     /* 取得支付编号 */ 
  13.     $log_id = intval($log_id); 
  14.     if ($log_id > 0) 
  15.     { 
  16.         /* 取得要修改的支付记录信息 */ 
  17.         $sql = "SELECT * FROM " . $GLOBALS['ecs']->table('pay_log') . 
  18.                 " WHERE log_id = '$log_id'"
  19.         $pay_log = $GLOBALS['db']->getRow($sql); 
  20.         if ($pay_log && $pay_log['is_paid'] == 0) 
  21.         { 
  22.             /* 修改此次支付操作的状态为已付款 */ 
  23.             $sql = 'UPDATE ' . $GLOBALS['ecs']->table('pay_log') . 
  24.                     " SET is_paid = '1' WHERE log_id = '$log_id'"
  25.             $GLOBALS['db']->query($sql); 
  26.  
  27.             /* 根据记录类型做相应处理 */ 
  28.             if ($pay_log['order_type'] == PAY_ORDER) 
  29.             { 
  30.                 /* 取得订单信息 */ 
  31.                              $sql = 'SELECT order_id, user_id, order_sn, trade_no, consignee, address, tel, shipping_id, extension_code, extension_id, goods_amount ' . 
  32.                         'FROM ' . $GLOBALS['ecs']->table('order_info') . 
  33.                        " WHERE order_id = '$pay_log[order_id]'"
  34.                 $order    = $GLOBALS['db']->getRow($sql); 
  35.                 $order_id = $order['order_id']; 
  36.                 $order_sn = $order['order_sn']; 
  37.                              /*解决订单修改后多次付款发货确认*/ 
  38.                              $trade    = $order['trade_no']; 
  39.                              if (!emptyempty($trade)) 
  40.                              { 
  41.                                        $trade_no = $trade.",".$trade_no
  42.                              } 
  43.                 /* 修改订单状态为已付款 */ 
  44.                 $sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') . 
  45.                             " SET order_status = '" . OS_CONFIRMED . "', " . 
  46.                                 " confirm_time = '" . gmtime() . "', " . 
  47.                                 " pay_status = '$pay_status', " . 
  48.                                                                    " pay_time = '".gmtime()."', " . 
  49.                                 " money_paid = order_amount," . 
  50.                                                                    " trade_no = '$trade_no',".//更新支付宝交易号 
  51.                                 " order_amount = 0 "
  52.                        "WHERE order_id = '$order_id'"
  53.                 $GLOBALS['db']->query($sql); 

四、修改admin/order.php文件

查找:

  1. $smarty->assign('action_list'$act_list); 
  2.  
  3.     /* 模板赋值 */ 
  4.     $smarty->assign('delivery_order'$delivery_order); 
  5.     $smarty->assign('goods_list'$goods_list); 
  6. $smarty->assign('delivery_id'$delivery_id); // 发货单id 

代码之上添加:

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

五、修改admintemplatesdelivery_info.htm文件

查找:

替换:

  1. if $alipay}onSubmit="this.target='_blank';this.action='alipay_delivery.php'
  2.  
  3.  this.submit();this.target='_self';this.action='order.php'"{else}action="order.php"{/if} method="post" name="theForm"> 

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

分享到:
ECshop中注册时的邮箱验证功能实现代码 -...
ECshop中注册时的邮箱验证功能实现代码 1、注册成功自动发邮件并退出登录状态,提示需要验证邮件才能登录。 在user.php大约233行很234行,把: $ucdata = emptyempty($user->ucdata)? "" : $user->ucdata;              show_message(sprintf($_LANG['register_...
如何去掉ecshop文章页面评论模块 - ecsho...
如何去掉ecshop文章页面评论模块 ecshop评论模块是商品详细页,与文章页面都有的功能,但是有些用户觉得文章不需要评论,那么如何修改呢? 首页打开article.dwt,找到以下代码:    {insert_scripts files='transport.js,utils.js'}   {* ECSHOP 提醒您:动态载入comm...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……