Ecshop 支付宝手机网页支付,针对ecshop 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 = "
//必填
/************************************************************/
//构造要请求的参数数组,无需改动
$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 = "
//必填
//构造要请求的参数数组,无需改动
$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://m.bbyears.com/shipin/77189.html
推荐访问:ecshop下载 ecshop二次开发教程 ecshop官网 ecshop安装教程 ecshop数据库配置文件 ecshop表结构