当前位置:首页 > 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.     /* 取得支付编号 */ 
  14.     $log_id = intval($log_id); 
  15.     if ($log_id > 0) 
  16.     { 
  17.         /* 取得要修改的支付记录信息 */ 
  18.         $sql = "SELECT * FROM " . $GLOBALS['ecs']->table('pay_log') . 
  19.                 " WHERE log_id = '$log_id'"; 
  20.         $pay_log = $GLOBALS['db']->getRow($sql); 
  21.         if ($pay_log && $pay_log['is_paid'] == 0) 
  22.         { 
  23.             /* 修改此次支付操作的状态为已付款 */ 
  24.             $sql = 'UPDATE ' . $GLOBALS['ecs']->table('pay_log') . 
  25.                     " SET is_paid = '1' WHERE log_id = '$log_id'"; 
  26.             $GLOBALS['db']->query($sql); 
  27.  
  28.             /* 根据记录类型做相应处理 */ 
  29.             if ($pay_log['order_type'] == PAY_ORDER) 
  30.             { 
  31.                 /* 取得订单信息 */ 
  32.                              $sql = 'SELECT order_id, user_id, order_sn, trade_no, consignee, address, tel, shipping_id, extension_code, extension_id, goods_amount ' . 
  33.                         'FROM ' . $GLOBALS['ecs']->table('order_info') . 
  34.                        " WHERE order_id = '$pay_log[order_id]'"; 
  35.                 $order    = $GLOBALS['db']->getRow($sql); 
  36.                 $order_id = $order['order_id']; 
  37.                 $order_sn = $order['order_sn']; 
  38.                              /*解决订单修改后多次付款发货确认*/ 
  39.                              $trade    = $order['trade_no']; 
  40.                              if (!emptyempty($trade)) 
  41.                              { 
  42.                                        $trade_no = $trade.",".$trade_no; 
  43.                              } 
  44.                 /* 修改订单状态为已付款 */ 
  45.                 $sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') . 
  46.                             " SET order_status = '" . OS_CONFIRMED . "', " . 
  47.                                 " confirm_time = '" . gmtime() . "', " . 
  48.                                 " pay_status = '$pay_status', " . 
  49.                                                                    " pay_time = '".gmtime()."', " . 
  50.                                 " money_paid = order_amount," . 
  51.                                                                    " trade_no = '$trade_no',".//更新支付宝交易号 
  52.                                 " order_amount = 0 ". 
  53.                        "WHERE order_id = '$order_id'"; 
  54.                 $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 支付宝自动发货

分享到: