Ecshop 支付宝手机网页支付免费版
发布:smiling 来源: PHP粉丝网 添加日期:2015-12-24 13:51:59 浏览: 评论:0
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 (!emptyempty($_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( ! emptyempty($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);
- //phpfensi.com
- return true;
- }else{
- return false;
- }
- }
- }
- }
- ?>
Tags: Ecshop支付宝 Ecshop网页支付
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)