Home  >  Article  >  php教程  >  Ecshop 支付宝手机网页支付免费版

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

WBOY
WBOYOriginal
2016-06-08 17:20:281295browse

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

<script>ec(2);</script>

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

ecshop-alipay-wap


 
/**
* 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 = '' . $notify_url . '' . $call_back_url . '' . $seller_email . '' . $out_trade_no . '' . $subject . '' . $total_fee . '' . $merchant_url . '';
//必填
 
/************************************************************/
 
//构造要请求的参数数组,无需改动
$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 = '' . $request_token . '';
//必填
 
//构造要请求的参数数组,无需改动
$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;
}
}
 
}
}
 
?>

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn