• 微信、支付宝个人免签约第三方支付接口需求,欢迎联系我们!
  • 严禁一切非法使用,请不要将本站接口用于违法行为!

ECShop是一款流行的B2C独立网店系统,本文将给出开发好的ECSHOP个人免签支付接口插件(支持支付宝/微信扫码支付),并提供开发思路,供有需求的用户参考或快速接入。

概述

环境

本接口插件基于ECSHOP 2.7.3开发,3.6版本测试通过,其余版本正常也是可以用的,可自行尝试。

效果展示

会员充值展示:
会员充值展示

商品购买页面效果:
商品购买页面效果

微信支付页面效果:
微信支付页面效果

支付宝支付页面效果:
支付宝支付页面效果

快速接入

下载

源码下载

源码上传

将源码包里www文件夹内的文件上传到网站根目录

安装

进入ECSHOP后台 - 系统设置 - 支付方式 - 找到如下图易支付,并安装
安装位置

APPID和APPKEY在这里获取:http://user./account,其余项根据自己需要填写。
安装配置

回调设置

设置回调地址为:http://域名/respond.php?code=ezhifu(设置入口
回调设置

测试

至此已安装完成,可以测试下功能是否正常了。

代码解析

ECSHOP支付功能已经封装得很遍历了,本次新增该个人免签支付,仅增加了两个文件,并且没有更改任何原有文件

语言包文件

语言包文件路径为:languages/zh_cn/payment/ezhifu.php,本次仅开发了简体中文包,如需支持其他语言参考本代码新增一份放相应路径下即可。语言包较为简单,直接展示代码:

global $_LANG;
$_LANG['ezhifu'] = '易支付';
$_LANG['ezhifu_desc'] = 'EZHIFU 易支付(www.ygkfpay.com) 免签约收款接口<br/>在线即可开通,<font color="red"><b>无需签约,快速接入</b></font><br/><a href="/Other/user/index.html" target="_blank"><font color="red">立即在线申请</font></a>';
$_LANG['ezhifu_APPID'] = 'APPID';
$_LANG['ezhifu_APPKEY'] = 'APPKEY';
$_LANG['pay_button'] = '立即支付';

$_LANG['ezhifu_pay_method'] = '选择接口类型';
$_LANG['ezhifu_pay_method_desc'] = '控制支付接口类型';
$_LANG['ezhifu_pay_method_range'][0] = '微信+支付宝';
$_LANG['ezhifu_pay_method_range'][1] = '仅微信';
$_LANG['ezhifu_pay_method_range'][2] = '仅支付宝';

支付接口主文件

ECSHOP支付接口最重要得文件:includes/modules/payment/ezhifu.php,代码及注释如下:

/**
 * EZHIFU 易支付(www.ygkfpay.com) 易支付免签约支付插件
 * 无需签约,快速接入
 */

if (!defined('IN_ECS'))
{
    die('Hacking attempt');
}

$payment_lang = ROOT_PATH . 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/ezhifu.php';

if (file_exists($payment_lang))
{
    global $_LANG;

    include_once($payment_lang);
}

/* 模块的基本信息 */
if (isset($set_modules) && $set_modules == TRUE)
{
    $i = isset($modules) ? count($modules) : 0;

    /* 代码 */
    $modules[$i]['code']    = basename(__FILE__, '.php');

    /* 描述对应的语言项 */
    $modules[$i]['desc']    = 'ezhifu_desc';

    /* 是否支持货到付款 */
    $modules[$i]['is_cod']  = '0';

    /* 是否支持在线支付 */
    $modules[$i]['is_online']  = '1';

    /* 作者 */
    $modules[$i]['author']  = 'EZHIFU';

    /* 网址 */
    $modules[$i]['website'] = 'http://www.';

    /* 版本号 */
    $modules[$i]['version'] = '1.0.0';

    /* 配置信息 */
    $modules[$i]['config']  = array(
        array('name' => 'ezhifu_APPID',      'type' => 'text',   'value' => ''),
        array('name' => 'ezhifu_APPKEY',     'type' => 'text',   'value' => ''),
        array('name' => 'ezhifu_pay_method', 'type' => 'select', 'value' => '')
    );

    return;
}

/**
 * 类
 */
class ezhifu
{
    function __construct()
    {
        $this->ezhifu();
    }

    /**
     * 构造函数
     *
     * @access  public
     * @param
     *
     * @return void
     */
    function ezhifu()
    {

    }

    /**
     * 生成支付代码
     * @param   array   $order      订单信息
     * @param   array   $payment    支付方式信息
     */
    function get_code($order, $payment)
    {
        if (!defined('EC_CHARSET'))
        {
            $charset = 'utf-8';
        }
        else
        {
            $charset = EC_CHARSET;
        }
        //整理参数
        $url = "?appid={$payment['ezhifu_APPID']}&money={$order['order_amount']}&subject={$order['order_sn']}&logid={$order['log_id']}&returnurl=".urlencode(return_url(basename(__FILE__, '.php')));
        $real_method = $payment['ezhifu_pay_method'];
        $html = "";
        switch ($real_method){
            case '0'://双通道
                $html = '<a href="/Other/pay/index.html'.$url.'&type=1" target="_blank"><img src="/static/wechat.png" style="height:40px;margin-right:25px"></a><a href="/Other/pay/index.html'.$url.'&type=2" target="_blank"><img src="/static/alipay.png" height="40px"></a>';
                break;
            case '1'://仅微信
                $html = '<a href="/Other/pay/index.html'.$url.'&type=1" target="_blank"><img src="/static/wechat.png" style="height:40px;"></a>';
                break;
            case '2'://仅支付宝
                $html = '<a href="/Other/pay/index.html'.$url.'&type=2" target="_blank"><img src="/static/alipay.png" height="40px"></a>';
                break;
        }

        return '<div style="text-align:center;padding:10px">'.$html.'</div>';
    }

    /**
     * 响应操作
     */
    function respond()
    {
        $payment  = get_payment($_GET['code']);
        unset($_GET['code']);
        $sign = $_GET['sign'];
        unset($_GET['sign']);
        ksort($_GET);
        if(md5(http_build_query($_GET).$payment['ezhifu_APPKEY'])!=$sign){
            return false;
        }
        //校验成功
        $order_sn = $_GET['logid'];
        /* 检查支付的金额是否相符 */
        if (!check_money($order_sn, $_GET['money']))
        {
            return false;
        }
        //置订单为成功
        order_paid($order_sn);
        return true;
    }
}

其他问题

ECSHOP 3.6 mobile安装

部分单独安装了mobile模块的用户可能进入mobile后台没有显示易支付的选项,可下载下面源码,解压上传后即可。

源码下载

拓展阅读