Ecshop 支付宝手机网页支付免费版
Ecshop手机网页版本支持在网上找了很多需要花钱购买了,在这里小编整理了一个Ecshop 支付宝手机网页支付免费版供大家参考。
Ecshop 支付宝手机网页支付,针对ecshop 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位字符 //如果签名方式设置为“MD5”时,请设置该参数 //$alipay_config['key'] = $payment['alipay_key']; //商户的私钥(后缀是.pen)文件相对路径 //如果签名方式设置为“0001”时,请设置该参数 $alipay_config['private_key_path'] = dirname(__FILE__) . "/alipay_wap/key/rsa_private_key.pem"; //支付宝公钥(后缀是.pen)文件相对路径 //如果签名方式设置为“0001”时,请设置该参数 $alipay_config['ali_public_key_path'] = dirname(__FILE__) . "/alipay_wap/key/alipay_public_key.pem"; //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ //字符编码格式 目前支持 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位字符 //如果签名方式设置为“MD5”时,请设置该参数 //$alipay_config['key'] = $payment['alipay_key']; //商户的私钥(后缀是.pen)文件相对路径 //如果签名方式设置为“0001”时,请设置该参数 $alipay_config['private_key_path'] = dirname(__FILE__) . "/alipay_wap/key/rsa_private_key.pem"; //支付宝公钥(后缀是.pen)文件相对路径 //如果签名方式设置为“0001”时,请设置该参数 $alipay_config['ali_public_key_path'] = dirname(__FILE__) . "/alipay_wap/key/alipay_public_key.pem"; //↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ //字符编码格式 目前支持 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
随意转载~但请保留教程地址★