当前位置:首页 > CMS教程 > ecshop > 列表

ecshop 支付宝自动发货接口

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-14 14:26:40 浏览: 评论:0 

一、在数据库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); 

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

查找:<form action="order.php" method="post" name="theForm">

替换:

  1. <form {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 目录下.

Tags: ecshop 支付宝自动发货

分享到: