public function execute($request) { $view = new Sp_View(); $request = Request::current(); $order_sn = $request->c_order; $order_id = $request->c_orderid; $order_amount = $request->c_orderamount; $the_order = Sp_Shopping_Order::load($order_sn, 'odrcode'); if (!$the_order->ID or $the_order->ID != $order_id) { $view->assign('error_message', "错误的订单编号"); $view->out_404(); return; } $TruePr = $the_order["TruePr"]; $ComePr = $the_order["ComePr"]; $BackPr = $the_order["BackPr"]; $the_order['order_amount'] = round($TruePr - $ComePr + $BackPr, 2); $Payment = Sp_Payment::factory("alipay"); $params = array('order_id' => $order_id, 'order_sn' => $order_sn, 'order_amount' => $the_order['order_amount']); $link = $Payment->prepare($params); echo $link; }
/** * 支付完成后返回处理 * * @param array params * @return void */ public function complete($params) { $view = new Sp_View(); # 解析返回参数. $return = Sp_Payment_Yeepay_Common::getCallBackValue($r0_Cmd, $r1_Code, $r2_TrxId, $r3_Amt, $r4_Cur, $r5_Pid, $r6_Order, $r7_Uid, $r8_MP, $r9_BType, $hmac); # 判断返回签名是否正确(True/False) $bRet = Sp_Payment_Yeepay_Common::CheckHmac($r0_Cmd, $r1_Code, $r2_TrxId, $r3_Amt, $r4_Cur, $r5_Pid, $r6_Order, $r7_Uid, $r8_MP, $r9_BType, $hmac); # 以上代码和变量不需要修改. # 校验码正确. if ($bRet) { if ($r1_Code == "1") { # 需要比较返回的金额与商家数据库中订单的金额是否相等,只有相等的情况下才认为是交易成功. # 并且需要对返回的处理进行事务控制,进行记录的排它性处理,在接收到支付结果通知后,判断是否进行过业务逻辑处理,不要重复进行业务逻辑处理,防止对同一条交易重复发货的情况发生. $user_id = $r8_MP; //用户id $sn = trim($r6_Order); //订单号 $amount = floatval($r3_Amt); //金额 $recharge_info = Sp_Trade_Recharge::getBySn($sn); if (floatval($recharge_info['amount']) == $amount and $recharge_info['user_id'] == $user_id) { if ($r9_BType == "1") { #交易成功 在线支付页面返回 $request = Request::current(); if ($request->isMobile()) { Loader::redirect(SP_URL_WAP . 'moneyrecord.html'); } else { Loader::redirect(SP_URL_USER . 'moneyrecord.html'); } /* $ret = false; if($recharge_info['status'] < 1) { $param = array( 'id' => $recharge_info['id'], 'user_id' => $user_id, 'sn' => $sn, 'amount' => $amount, 'bank_sn' => $_REQUEST['ro_BankOrderId'], 'trd_sn' => $_REQUEST['r2_TrxId'], 'remark' => json_encode($_REQUEST) ); $ret = Sp_Trade_Tradeprocess::recharge($param); } if($ret) {//处理成功 $user = Sp_Account_User::getUserBase($user_id); //用户信息 $data = array( 'user_id' => $user_id, 'account' => $amount, 'user_name' => $user->data["username"], 'email' => $user->data['email'], 'realname' => $user->data["username"], 'phone' => $user->data['phone'], ); Sp_Message::send('recharge', $data);//发送消息 Loader::redirect(SP_URL_USER.'moneyrecord.html'); }elseif($recharge_info['status'] < 1) {//失败 echo '资金流处理失败!'; $body = print_r($_REQUEST,true); Sp_Admin_Mail::send('*****@*****.**', '资金流处理失败!', $body); }else{ $request = Request::current(); if($request->isMobile()) { Loader::redirect(SP_URL_WAP.'moneyrecord.html'); }else{ Loader::redirect(SP_URL_USER.'moneyrecord.html'); } }*/ } elseif ($r9_BType == "2") { #如果需要应答机制则必须回写流,以success开头,大小写不敏感. $ret = false; if ($recharge_info['status'] == 1) { echo "success"; } elseif ($recharge_info['status'] < 1) { $param = array('id' => $recharge_info['id'], 'user_id' => $user_id, 'sn' => $sn, 'amount' => $amount, 'bank_sn' => $_REQUEST['ro_BankOrderId'], 'trd_sn' => $_REQUEST['r2_TrxId'], 'remark' => json_encode($_REQUEST)); $amount_num = Sp_Trade_Recharge::getUserRechargeReport('WHERE status = 1 AND user_id=' . $user_id); $ret = Sp_Trade_Tradeprocess::recharge($param); if ($ret) { //处理成功 //首冲奖励 if ($amount_num == 0) { $active_send_info = array('uid' => $user_id, 'type' => 'first_recharge'); $client_active = MQClient::factory('active'); $client_active->send('activePrizeReset_new_register', $active_send_info); } $user = Sp_Account_User::getUserBase($user_id); //用户信息 $data = array('user_id' => $user_id, 'account' => $amount, 'user_name' => $user->data["username"], 'email' => $user->data['email'], 'realname' => $user->data["username"], 'phone' => $user->data['phone']); Sp_Message::send('recharge', $data); //发送消息 } else { echo '资金流处理失败!'; $body = print_r($_REQUEST, true); Sp_Admin_Mail::send('*****@*****.**', '资金流处理失败!', $body); } } } } } } else { $body = print_r($_REQUEST, true); Sp_Admin_Mail::send('*****@*****.**', '易宝支付失败(签名验证失败)', $body); $view->assign('error_message', "抱歉,您的支付没有成功,请重新支付,谢谢"); $view->out_404(); return; } }
<?php include_once "init.php"; include_once LIB_ROOT . "Sp/View.php"; include_once LIB_ROOT . "Sp/Taobao/Goods.php"; include_once LIB_ROOT . "Sp/Taobao/Shop.php"; include_once LIB_ROOT . "Sp/Taobao/Taobaoke.php"; $sp_view = new Sp_View('utf-8'); $nick = isset($_GET['nick']) ? $_GET['nick'] : $sp_view->out_404(true); //静态编码网址转码 if (Config::get('special.static') == '1') { $nick = htmlspecialchars(url_base64_decode($nick)); } //$goods = Sp_Taobao_Shop::getCategoes($nick,0,1,10); //print_r($goods); //商铺信息 $shop_info = Sp_Taobao_Shop::getShopinfo($nick); if (isset($shop_info['shop'])) { $info = Sp_Taobao_Taobaoke::getShopsConvert($shop_info['shop']['sid'], Config::get('taoke.pid_short')); $click_url = $info['taobaoke_shops']['taobaoke_shop']['click_url']; $shop_info['shop']['click_url'] = $click_url; } //商店商品分类信息 $goods = Sp_Taobao_Goods::getShopItems($nick, null, 1, 1); //按分类产品数量倒序 $category = $goods['item_search']['item_categories']['item_category']; $category = array_sort($category, 'count', 'desc'); //最多取8个分类的商品,并且每个分类下的产品数量要大于4 $step = count($category) < 8 ? count($category) : 8; $category = array_slice($category, 0, $step); $catids = "";
/** * function description * * @param * @return void */ public function execute($request) { $view = new Sp_View(); $view->out_404(); }
<?php include_once "init.php"; include_once LIB_ROOT . "Sp/View.php"; include_once LIB_ROOT . "Sp/Taobao/Goods.php"; include_once LIB_ROOT . "Sp/Taobao/Shop.php"; include_once LIB_ROOT . "Sp/Taobao/Taobaoke.php"; $sp_view = new Sp_View('utf-8'); $cache_id = 'goods|' . md5(var_export($_GET, true)); if (!$sp_view->isCached('goods.html', $cache_id)) { $num_iid = isset($_GET['iid']) ? $_GET['iid'] : $sp_view->out_404(true); /* $categores = Sp_Taobao_Shop::getCategoes('康美健食品专营店'); print_r($categores); die(); */ //取商品详情 $goods_detail = Sp_Taobao_Goods::getItemDetail($num_iid); //淘宝客点击url $url = Sp_Taobao_Taobaoke::getItemConvert($num_iid, Config::get('taoke.pid_short')); $cid = $goods_detail["item"]['cid']; $props = $goods_detail["item"]['props']; //商品属性 $props = Sp_Taobao_Goods::getItemPropValues($cid, $props); //商品分类信息 $catgory = Sp_Taobao_Goods::getItemcats($cid); //当前分类的推荐商品 $cat_goods = Sp_Taobao_Goods::getCategoryItems($cid, 40, Config::get('taoke.pid_short')); //从40个商品中随机取8个 shuffle($cat_goods['taobaoke_items']['taobaoke_item']); $cat_goods['taobaoke_items']['taobaoke_item'] = array_slice($cat_goods['taobaoke_items']['taobaoke_item'], 0, 8);
/** * 接收支付平台通知(同步) * * @param array params * @return void */ public function complete($params) { $view = new Sp_View(); # 解析返回参数. $version = $params["version"]; $charset = $params["charset"]; $language = $params["language"]; $signType = $params["signType"]; $tranCode = $params["tranCode"]; $merchantID = $params["merchantID"]; $merOrderNum = $params["merOrderNum"]; $tranAmt = $params["tranAmt"]; $feeAmt = $params["feeAmt"]; $frontMerUrl = $params["frontMerUrl"]; $backgroundMerUrl = $params["backgroundMerUrl"]; $tranDateTime = $params["tranDateTime"]; $tranIP = $params["tranIP"]; $respCode = $params["respCode"]; $msgExt = $params["msgExt"]; $orderId = $params["orderId"]; $gopayOutOrderId = $params["gopayOutOrderId"]; $bankCode = $params["bankCode"]; $tranFinishTime = $params["tranFinishTime"]; $merRemark1 = $params["merRemark1"]; $merRemark2 = $params["merRemark2"]; $signValue = $params["signValue"]; # 判断返回签名是否正确(True/False) $bRet = Sp_Payment_Gopay_HttpClient::CheckHmac($version, $tranCode, $merchantID, $merOrderNum, $tranAmt, $feeAmt, $tranDateTime, $frontMerUrl, $backgroundMerUrl, $orderId, $gopayOutOrderId, $tranIP, $respCode, '', self::$verficationCode, $signValue); if ($bRet) { if ($respCode == '0000') { $sn = trim($merOrderNum); //订单号 $amount = floatval($tranAmt); //金额 $recharge_info = Sp_Trade_Recharge::getBySn($sn); if (floatval($recharge_info['amount']) == $amount) { $ret = false; $amount_num = 1; if ($recharge_info['status'] == 1) { $ret = true; } elseif ($recharge_info['status'] < 1) { $amount_num = Sp_Trade_Recharge::getUserRechargeReport('WHERE status = 1 AND user_id=' . $recharge_info['user_id']); $param = array('id' => $recharge_info['id'], 'user_id' => $recharge_info['user_id'], 'sn' => $sn, 'amount' => $amount, 'bank_sn' => $_REQUEST['gopayOutOrderId'], 'trd_sn' => $_REQUEST['orderId'], 'remark' => json_encode($_REQUEST)); $ret = Sp_Trade_Tradeprocess::recharge($param); } if ($ret) { //处理成功 //首冲奖励 if ($amount_num == 0) { $active_send_info = array('uid' => $recharge_info['user_id'], 'type' => 'first_recharge'); $client_active = MQClient::factory('active'); $client_active->send('activePrizeReset_new_register', $active_send_info); } $user = Sp_Account_User::getUserBase($recharge_info['user_id']); //用户信息 $data = array('user_id' => $recharge_info['user_id'], 'account' => $amount, 'user_name' => $user->data["username"], 'email' => $user->data['email'], 'realname' => $user->data["username"], 'phone' => $user->data['phone']); Sp_Message::send('recharge', $data); //发送消息 $request = Request::current(); if ($request->isMobile()) { Loader::redirect(SP_URL_WAP . 'moneyrecord.html'); } else { Loader::redirect(SP_URL_USER . 'moneyrecord.html'); } } else { echo 'RespCode=9999|JumpURL='; $body = print_r($_REQUEST, true); Sp_Admin_Mail::send('*****@*****.**', '国付宝支付失败(数据库操作失败)', $body); } } } else { echo 'RespCode=9999|JumpURL='; $body = print_r($_REQUEST, true); Sp_Admin_Mail::send('*****@*****.**', '国付宝支付失败(国付宝操作失败)', $body); } } else { $body = print_r($_REQUEST, true); Sp_Admin_Mail::send('*****@*****.**', '国付宝支付失败(签名验证失败)', $body); $view->assign('error_message', "抱歉,您的支付没有成功,请重新支付,谢谢"); $view->out_404(); return; } }