您好,欢迎来到菜鸟吧源码网-本站资源仅供学习与参考,禁止用于商业或违法行为!
  • 首 页
  • 下载APP
  • 公告:菜鸟吧APP于2024.9.15正式上线,请首页右上角进入下载,本站资源均来源于互联网及会员投稿发布,所有资源仅供学习参考研究使用,请勿商用或其它非法用途,商用请购买正版,否则产生一切后果由用户自行承担!谢谢!

     

    当前位置:主页 > 站长学堂 > ecshop >
    ecshop支付宝自动发货接口用法
    时间:2019-10-15 14:51 作者:菜鸟哥 浏览:收藏 挑错 打印

    这篇文章主要介绍了ecshop支付宝自动发货接口用法,结合实例形式分析了Ecshop实现支付宝自动发货功能的相关代码修改与接口操作代码功能与修改技巧,需要的朋友可以参考下

    本文实例讲述了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);

    三、修改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文件

    查找:

    代码如下:
    <form action="order.php" method="post" name="theForm">

    替换:

    代码如下:
    <form {if $alipay}onSubmit="this.target='_blank';this.action='alipay_delivery.php';
    this.submit();this.target='_self';this.action='order.php'"{else}action="order.php"{/if} method="post" name="theForm">

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

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

    郑重声明:
    本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
    我们不承担任何技术及版权问题,且不对任何资源负法律责任。
    如无法下载,联系站长索要。
    如有侵犯您的版权,请给我们来信:cainiaovip8@qq.com,我们尽快处理。

    修改ECSHOP评论表单中的Email为非必填的教程修改ECSHOP评论表单中的Email为非必填
    介绍ecshop中如何添加限时抢购功能介绍ecshop中如何添加限时抢购功能
    ecshop数据库ecs_stats短时间内会变很大的解决方案ecshop数据库ecs_stats短时间内会变很