function return_f() { $sn = $this->trans_lib->safe("sn"); $pass = $this->trans_lib->safe("pass"); $paycode = "alipay"; $rs = $this->payment_m->get_one_code($paycode); $order_rs = $this->checkout_m->get_one_sn($sn); $data = array(); $id = $order_rs["id"]; $f_rs = $this->payment_m->get_fields($rs["id"]); include_once LIBS . "payment/alipay_notify.php"; //加载alipay_notify操作类 $alipay = new alipay_notify($f_rs["partner"], $f_rs["code"], $f_rs["sign_type"], $f_rs["charset"], $f_rs["transport"]); $tmp_array = array(); $tmp_array[] = $this->config->c; $tmp_array[] = $this->config->f; $tmp_array[] = "sn"; $tmp_array[] = "pass"; $verify_result = $alipay->return_verify($tmp_array); if (!$verify_result) { error($this->lang["alipay_payment_false"], $this->url("checkout,info", "sn=" . $sn . "&pass="******"id"]); $data["pay_status"] = 1; $data["pay_price"] = $this->trans_lib->safe("total_fee"); $data["pay_currency"] = $f_rs["currency"]; $data["pay_type"] = $rs["id"]; $data["pay_date"] = $this->system_time; $data["pay_code"] = $this->trans_lib->safe("trade_no"); $this->payment_m->update_order($id, $data); error($this->lang["alipay_payment_success"], $this->url("checkout,info", "sn=" . $sn . "&pass=" . $pass)); } }
public function callback() { require_once APP_ROOT_PATH . 'system/api_login/alipay/alipay_notify.php'; es_session::start(); //构造通知函数信息 $alipay = new alipay_notify($this->api['config']['app_key'], $this->api['config']['app_secret'], "MD5", "utf-8", "http"); //计算得出通知验证结果 $verify_result = $alipay->return_verify(); if ($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数 $user_id = $_GET['user_id']; //获取支付宝用户唯一ID号 //判断获取到的user_id的值是否在商户会员数据库中存在(即:是否曾经做过支付宝会员免注册登陆) // 若不存在,则程序自动为会员快速注册一个会员,把信息插入商户网站会员数据表中, // 且把该会员的在商户网站上的登录状态,更改成“已登录”状态。并记录在商家网站会员数据表中记录登陆信息,如登陆时间、次数、IP等。 // 若存在,判断该会员在商户网站上的登录状态是否是“已登录”状态 // 若不是,则把该会员的在商户网站上的登录状态,更改成“已登录”状态。并记录在商家网站会员数据表中记录登陆信息,如登陆时间、次数、IP等。 // 若是,则不做任何数据库业务逻辑处理。判定该次反馈信息为重复刷新返回链接导致。 //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $msg['id'] = $user_id; $msg['name'] = "ali_" . $user_id; $msg['field'] = 'alipay_id'; es_session::set("api_user_info", $msg); $user_data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where alipay_id = " . $msg['id'] . " and alipay_id <> 0"); if ($user_data) { $user_current_group = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_group where id = " . intval($user_data['group_id'])); $user_group = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_group where score <=" . intval($user_data['score']) . " order by score desc"); if ($user_current_group['score'] < $user_group['score']) { $user_data['group_id'] = intval($user_group['id']); } es_session::set("user_info", $user_data); $GLOBALS['db']->query("update " . DB_PREFIX . "user set login_ip = '" . get_client_ip() . "',login_time= " . TIME_UTC . ",group_id=" . intval($user_data['group_id']) . " where id =" . $user_data['id']); //$GLOBALS['db']->query("update ".DB_PREFIX."deal_cart set user_id = ".intval($_SESSION['user_info']['id'])." where session_id = '".es_session::id()."'"); es_session::delete("api_user_info"); app_recirect_preview(); } else { app_redirect(url("shop", "user#api_login")); } } else { //验证失败 //如要调试,请看alipay_notify.php页面的return_verify函数,比对sign和mysign的值是否相等,或者检查$veryfy_result有没有返回true echo "fail"; } exit; }
/** * 响应操作 */ function respond() { $payment = get_payment_info('alipay'); $partner = trim($payment['partnerid']); $key = trim($payment['ytauthkey']); $sign_type = "MD5"; $_input_charset = "GBK"; $transport = "http"; $alipay = new alipay_notify($partner, $key, $sign_type, $_input_charset, $transport); $verify_result = $alipay->return_verify(); if ($verify_result) { //验证成功 $dingdan = $_GET['out_trade_no']; //获取订单号 $total_fee = $_GET['total_fee']; //获取总价格 return order_paid($dingdan); } else { return false; } }
//该页面称作“返回页”,是由支付宝服务器同步调用,可当作是支付完成后的提示信息页,如“您的某某某订单,多少金额已支付成功”。 //可放入HTML等美化页面的代码和订单交易完成后的数据库更新程序代码 //该页面可以使用PHP开发工具调试,也可以使用写文本函数log_result进行调试,该函数已被默认关闭,见alipay_notify.php中的函数return_verify //TRADE_FINISHED(表示交易已经成功结束,为普通即时到帐的交易状态成功标识); //TRADE_SUCCESS(表示交易已经成功结束,为高级即时到帐的交易状态成功标识); /////////////////////////////////// error_reporting(0); require_once "class/alipay_notify.php"; require_once "alipay_config.php"; require_once dirname(dirname(dirname(__FILE__))) . "/data/db.config.php"; require_once dirname(dirname(dirname(__FILE__))) . "/include/mysql.class.php"; $db = new mysql($db_config['dbhost'], $db_config['dbuser'], $db_config['dbpass'], $db_config['dbname'], ALL_PS, $db_config['charset']); //构造通知函数信息 $alipay = new alipay_notify($partner, $security_code, $sign_type, $_input_charset, $transport); //计算得出通知验证结果 $verify_result = $alipay->return_verify(); if ($verify_result) { //验证成功 //获取支付宝的通知返回参数 $dingdan = $_GET['out_trade_no']; //获取订单号 $total_fee = $_GET['total_fee']; //获取总价格 $sOld_trade_status = "0"; //获取商户数据库中查询得到该笔交易当前的交易状态 /*假设: sOld_trade_status="0";表示订单未处理; sOld_trade_status="1";表示交易成功(TRADE_FINISHED/TRADE_SUCCESS); */ if ($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') { $select = $db->query("select * from `" . $db_config[def] . "company_order` where `order_id`='{$dingdan}'");
public function verifyReturnUrl() { /*{{{*/ $alipay = new alipay_notify($this->partner, $this->security_code, $this->sign_type, $this->_input_charset, 'http'); return $alipay->return_verify(); }