【ecshop模板】Ecshop 支付宝手机网页支付免费版

时间:2019-11-04  来源:开发手册  阅读:

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;
}
}
 
}
}
 
?>

【ecshop模板】Ecshop 支付宝手机网页支付免费版

http://m.bbyears.com/shipin/77189.html

推荐访问:ecshop下载 ecshop二次开发教程 ecshop官网 ecshop安装教程 ecshop数据库配置文件 ecshop表结构
相关阅读 猜你喜欢
本类排行 本类最新