首页 > php代码 > Ecshop 支付宝手机网页支付免费版

Ecshop 支付宝手机网页支付免费版

Ecshop手机网页版本支持在网上找了很多需要花钱购买了,在这里小编整理了一个Ecshop 支付宝手机网页支付免费版供大家参考。

Ecshop 支付宝手机网页支付,针对ecshop wap手机版

ecshop-alipay-wap

<?php
/**
 * ECSHOP 支付宝手机网页插件
 */
if (!defined('IN_ECS')) {
    die('Hacking attempt');
}
$payment_lang = ROOT_PATH . 'languages/' . $GLOBALS['_CFG']['lang'] . '/payment/alipay_wap.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'] = 'alipay_wap_desc';
    /* 是否支持货到付款 */
    $modules[$i]['is_cod'] = '0';
    /* 是否支持在线支付 */
    $modules[$i]['is_online'] = '1';
    /* 作者 */
    $modules[$i]['author'] = 'ECSHOP TEAM';
    /* 网址 */
    $modules[$i]['website'] = 'http://www.alipay.com';
    /* 版本号 */
    $modules[$i]['version'] = '1.0.2';
    /* 配置信息 共用?? */
    $modules[$i]['config'] = array(
        array(
            'name' => 'alipay_account',
            'type' => 'text',
            'value' => ''
        ) ,
        array(
            'name' => 'alipay_key',
            'type' => 'text',
            'value' => ''
        ) ,
        array(
            'name' => 'alipay_partner',
            'type' => 'text',
            'value' => ''
        ) ,
        array(
            'name' => 'alipay_pay_method',
            'type' => 'select',
            'value' => ''
        )
    );
    return;
}
/**
 * 类
 */
class alipay_wap {
    /**
     * 构造函数
     *
     * @access public
     * @param
     *
     * @return void
     */
    function alipay() {
    }
    function __construct() {
        $this->alipay();
    }
    /**
     * 生成支付代码
     * @param array $order 订单信息
     * @param array $payment 支付方式信息
     */
    function get_code($order, $payment) {
        if (!defined('EC_CHARSET')) {
            $charset = 'utf-8';
        } else {
            $charset = EC_CHARSET;
        }
        //合作身份者id,以2088开头的16位纯数字
        $alipay_config['partner'] = $payment['alipay_partner'];
        //签名方式 不需修改
        $alipay_config['sign_type'] = '0001';
        //安全检验码,以数字和字母组成的32位字符
        //如果签名方式设置为&ldquo;MD5&rdquo;时,请设置该参数
        //$alipay_config['key'] = $payment['alipay_key'];
        //商户的私钥(后缀是.pen)文件相对路径
        //如果签名方式设置为&ldquo;0001&rdquo;时,请设置该参数
        $alipay_config['private_key_path'] = dirname(__FILE__) . "/alipay_wap/key/rsa_private_key.pem";
        //支付宝公钥(后缀是.pen)文件相对路径
        //如果签名方式设置为&ldquo;0001&rdquo;时,请设置该参数
        $alipay_config['ali_public_key_path'] = dirname(__FILE__) . "/alipay_wap/key/alipay_public_key.pem";
        //&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;请在这里配置您的基本信息&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;
        //字符编码格式 目前支持 gbk 或 utf-8
        $alipay_config['input_charset'] = 'utf-8';
        //ca证书路径地址,用于curl中ssl校验
        //请保证cacert.pem文件在当前文件夹目录中
        $alipay_config['cacert'] = dirname(__FILE__) . "/alipay_wap/cacert.pem";
        //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
        $alipay_config['transport'] = 'http';
        require_once (dirname(__FILE__) . "/alipay_wap/lib/alipay_submit.class.php");
        //返回格式
        $format = "xml";
        //必填,不需要修改
        //返回格式
        $v = "2.0";
        //必填,不需要修改
        //请求号
        $req_id = date('Ymdhis');
        //必填,须保证每次请求都是唯一
        //**req_data详细信息**
        //服务器异步通知页面路径
        $notify_url = return_url(basename(__FILE__, '.php'));
        //需http://格式的完整路径,不允许加?id=123这类自定义参数
        //页面跳转同步通知页面路径
        $call_back_url = return_url(basename(__FILE__, '.php'));
        //需http://格式的完整路径,不允许加?id=123这类自定义参数
        //操作中断返回地址
        $merchant_url = $GLOBALS['ecs']->url();
        //用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数
        //卖家支付宝帐户
        $seller_email = $payment['alipay_account'];
        //必填
        //商户订单号
        $out_trade_no = $order['order_sn'] . $order['log_id'];
        //商户网站订单系统中唯一订单号,必填
        //订单名称
        $subject = $order['order_sn'];
        //必填
        //付款金额
        $total_fee = $order['order_amount'];
        //必填
        //请求业务参数详细
        $req_data = '<direct_trade_create_req><notify_url>' . $notify_url . '</notify_url><call_back_url>' . $call_back_url . '</call_back_url><seller_account_name>' . $seller_email . '</seller_account_name><out_trade_no>' . $out_trade_no . '</out_trade_no><subject>' . $subject . '</subject><total_fee>' . $total_fee . '</total_fee><merchant_url>' . $merchant_url . '</merchant_url></direct_trade_create_req>';
        //必填
        /************************************************************/
        //构造要请求的参数数组,无需改动
        $para_token = array(
            "service" => "alipay.wap.trade.create.direct",
            "partner" => trim($alipay_config['partner']) ,
            "sec_id" => trim($alipay_config['sign_type']) ,
            "format" => $format,
            "v" => $v,
            "req_id" => $req_id,
            "req_data" => $req_data,
            "_input_charset" => trim(strtolower($alipay_config['input_charset']))
        );
        //建立请求
        $alipaySubmit = new AlipaySubmit($alipay_config);
        $html_text = $alipaySubmit->buildRequestHttp($para_token);
        //URLDECODE返回的信息
        $html_text = urldecode($html_text);
        //解析远程模拟提交后返回的信息
        $para_html_text = $alipaySubmit->parseResponse($html_text);
        //获取request_token
        $request_token = $para_html_text['request_token'];
        /**************************根据授权码token调用交易接口alipay.wap.auth.authAndExecute**************************/
        //业务详细
        $req_data = '<auth_and_execute_req><request_token>' . $request_token . '</request_token></auth_and_execute_req>';
        //必填
        //构造要请求的参数数组,无需改动
        $parameter = array(
            "service" => "alipay.wap.auth.authAndExecute",
            "partner" => trim($alipay_config['partner']) ,
            "sec_id" => trim($alipay_config['sign_type']) ,
            "format" => $format,
            "v" => $v,
            "req_id" => $req_id,
            "req_data" => $req_data,
            "_input_charset" => trim(strtolower($alipay_config['input_charset']))
        );
        //建立请求
        $alipaySubmit = new AlipaySubmit($alipay_config);
        $html_text = $alipaySubmit->buildRequestForm($parameter, 'get', '进行付款');
        return $html_text;
    }
    /**
     * 响应操作
     */
    function respond() {
        if (!empty($_POST)) {
            foreach ($_POST as $key => $data) {
                $_GET[$key] = $data;
            }
        }
        log_write($_GET, 'alipay_wap');
        $payment = get_payment($_GET['code']);
        $seller_email = rawurldecode($_GET['seller_email']);
        $order_sn = str_replace($_GET['subject'], '', $_GET['out_trade_no']);
        $order_sn = trim($order_sn);
        /* 检查数字签名是否正确 */
        ksort($_GET);
        reset($_GET);
        //合作身份者id,以2088开头的16位纯数字
        $alipay_config['partner'] = $payment['alipay_partner'];
        //签名方式 不需修改
        $alipay_config['sign_type'] = '0001';
        //安全检验码,以数字和字母组成的32位字符
        //如果签名方式设置为&ldquo;MD5&rdquo;时,请设置该参数
        //$alipay_config['key'] = $payment['alipay_key'];
        //商户的私钥(后缀是.pen)文件相对路径
        //如果签名方式设置为&ldquo;0001&rdquo;时,请设置该参数
        $alipay_config['private_key_path'] = dirname(__FILE__) . "/alipay_wap/key/rsa_private_key.pem";
        //支付宝公钥(后缀是.pen)文件相对路径
        //如果签名方式设置为&ldquo;0001&rdquo;时,请设置该参数
        $alipay_config['ali_public_key_path'] = dirname(__FILE__) . "/alipay_wap/key/alipay_public_key.pem";
        //&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;请在这里配置您的基本信息&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;&uarr;
        //字符编码格式 目前支持 gbk 或 utf-8
        $alipay_config['input_charset'] = 'utf-8';
        //ca证书路径地址,用于curl中ssl校验
        //请保证cacert.pem文件在当前文件夹目录中
        $alipay_config['cacert'] = dirname(__FILE__) . "/alipay_wap/cacert.pem";
        //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
        $alipay_config['transport'] = 'http';
        require_once (dirname(__FILE__) . "/alipay_wap/lib/alipay_notify.class.php");
        //计算得出通知验证结果
        $alipayNotify = new AlipayNotify($alipay_config);
        $verify_result = $alipayNotify->verifyNotify();
        if (!$verify_result) { //验证不成功
            return false;
        }
        $notify_data = $alipayNotify->decrypt($_GET['notify_data']);
        $doc = new DOMDocument();
        $doc->loadXML($notify_data);
        if (!empty($doc->getElementsByTagName("notify")->item(0)->nodeValue)) {
            //商户订单号
            $out_trade_no = $doc->getElementsByTagName("out_trade_no")->item(0)->nodeValue;
            $out_trade_no = str_replace($_GET['subject'], '', $out_trade_no);
            $out_trade_no = trim($out_trade_no);
            //支付宝交易号
            $trade_no = $doc->getElementsByTagName("trade_no")->item(0)->nodeValue;
            //交易状态
            $trade_status = $doc->getElementsByTagName("trade_status")->item(0)->nodeValue;
            /* 检查支付的金额是否相符 */
            if (!check_money($out_trade_no, $_GET['total_fee'])) {
                return false;
            }
            if ($_GET['trade_status'] == 'TRADE_FINISHED') {
                /* 改变订单状态 */
                order_paid($out_trade_no);
                return true;
            } else if ($_GET['trade_status'] == 'TRADE_SUCCESS') {
                /* 改变订单状态 */
                order_paid($out_trade_no, 2);
                return true;
            } else {
                return false;
            }
        }
    }
}
?>


教程链接:http://www.phprm.com/code/86087.html

随意转载~但请保留教程地址★

标签:foreach include select request

相关文章

发表留言