/** * 生成支付代码 * @param array $order 订单信息 * @param array $payment 支付方式信息 */ function get_code($order, $payment) { /** * 消费交易-后台 */ //$orderNumber = $order['order_sn'] . '-' . $this->_formatSN($order['log_id']); $ecmobile_url = ecmobile_url(); $orderNumber = $order['order_sn']; $amount = $order['order_amount']; //需要填入的部分 $req['version'] = upmp_config::$version; // 版本号 $req['charset'] = upmp_config::$charset; // 字符编码 $req['transType'] = "01"; // 交易类型 $req['merId'] = upmp_config::$mer_id; // 商户代码 $req['backEndUrl'] = $ecmobile_url . "/payment/UPMP/notify_url.php"; // 通知URL $req['frontEndUrl'] = $ecmobile_url . "/payment/wap_callback.php?code=upop"; // 前台通知URL(可选) $req['orderDescription'] = $orderNumber; // 订单描述(可选) $req['orderTime'] = date("YmdHis"); // 交易开始日期时间yyyyMMddHHmmss //$req['orderTimeout'] = ""; // 订单超时时间yyyyMMddHHmmss(可选) $req['orderNumber'] = $orderNumber; //订单号(商户根据自己需要生成订单号) $req['orderAmount'] = $amount * 100; // 订单金额 $req['orderCurrency'] = "156"; // 交易币种(可选) $req['reqReserved'] = "透传信息"; // 请求方保留域(可选,用于透传商户信息) // 保留域填充方法 $merReserved['test'] = "test"; $req['merReserved'] = UpmpService::buildReserved($merReserved); // 商户保留域(可选) $resp = array(); $validResp = UpmpService::trade($req, $resp); // 商户的业务逻辑 if ($validResp) { // 服务器应答签名验证成功 //print_r($resp); //返回结果展示 $upop_tn = $resp['tn']; $ecmobile_url = ecmobile_url(); $resultURL = $ecmobile_url . "/payment/wap_callback.php?code=upop{$argName}="; $resultURL = urlencode($resultURL); $paydata = "tn=" . $upop_tn . ",resultURL=" . $resultURL . ",usetestmode=false"; $paydata = base64_encode($paydata); $pay_url = $ecmobile_url . "/payment/wap_upmp.php?paydata=" . $paydata; return array('upop_tn' => $upop_tn, "pay_url" => $pay_url); } else { // 服务器应答签名验证失败 //print_r($resp); return array(); } }
// 通知URL $req['frontEndUrl'] = upmp_config::$mer_front_end_url; // 前台通知URL(可选) $req['orderDescription'] = "订单描述"; // 订单描述(可选) $req['orderTime'] = date("YmdHis"); // 交易开始日期时间yyyyMMddHHmmss $req['orderTimeout'] = ""; // 订单超时时间yyyyMMddHHmmss(可选) $req['orderNumber'] = date("YmdHiss"); //订单号(商户根据自己需要生成订单号) $req['orderAmount'] = "1"; // 订单金额 $req['orderCurrency'] = "156"; // 交易币种(可选) $req['reqReserved'] = "透传信息"; // 请求方保留域(可选,用于透传商户信息) // 保留域填充方法 $merReserved['test'] = "test"; $req['merReserved'] = UpmpService::buildReserved($merReserved); // 商户保留域(可选) $resp = array(); $validResp = UpmpService::trade($req, $resp); // 商户的业务逻辑 if ($validResp) { // 服务器应答签名验证成功 print_r($resp); } else { // 服务器应答签名验证失败 print_r($resp); }
function postbank() { //需要填入的部分 $req['version'] = upmp_config::$version; // 版本号 $req['charset'] = upmp_config::$charset; // 字符编码 $req['transType'] = "01"; // 交易类型 $req['merId'] = upmp_config::$mer_id; // 商户代码 $req['backEndUrl'] = upmp_config::$mer_back_end_url; // 通知URL $req['frontEndUrl'] = upmp_config::$mer_front_end_url; // 前台通知URL(可选) $req['orderDescription'] = "订单描述"; // 订单描述(可选) $req['orderTime'] = date("YmdHis"); // 交易开始日期时间yyyyMMddHHmmss $req['orderTimeout'] = ""; // 订单超时时间yyyyMMddHHmmss(可选) $req['orderNumber'] = date("YmdHiss"); //订单号(商户根据自己需要生成订单号) $req['orderAmount'] = "1"; // 订单金额 $req['orderCurrency'] = "156"; // 交易币种(可选) $req['reqReserved'] = "透传信息"; // 请求方保留域(可选,用于透传商户信息) // 保留域填充方法 $merReserved['test'] = "test"; $req['merReserved'] = UpmpService::buildReserved($merReserved); // 商户保留域(可选) $resp = array(); $validResp = UpmpService::trade($req, $resp); // 商户的业务逻辑 if ($validResp) { // 服务器应答签名验证成功 $tn = $resp['tn']; $resultURL = upmp_config::$mer_front_end_url; $usetestmode = 'true'; $paydata = urlencode(base64_encode("tn=" . $tn . ",resultURL=" . urlencode($resultURL . "?argName=") . ",usetestmode=true")); $url = "uppay://uppayservice/?style=token&paydata=" . $paydata; header("Content-type:text/html;charset=utf-8"); $html = "<a href='" . $url . "'>提交</a>"; //$msg="<script> window.location.href='".$url."' </script>"; echo $html; } else { // 服务器应答签名验证失败 print_r($resp); } }
public function end() { if (IS_POST) { //支付方式 $payment_id = $_POST['payment_id']; //$orderid=$_POST['orderid']; $alldingdanhao = $_POST['dingdanhao']; //取得支付号 $all_order_arr = M('order_merge')->where("mergeid='" . $alldingdanhao . "'")->select(); $all_order_price = 0; //xxl start $orderinfos = array(); $orderInfo = array(); //xxl end foreach ($all_order_arr as $dingdanhao) { $item_order = M('item_order')->where("userId='" . $this->visitor->info['id'] . "' and orderId='" . $dingdanhao['orderid'] . "'")->find(); !$item_order && $this->_404(); $all_order_price = $all_order_price + floatval($item_order['order_sumPrice']); //xxl start 短信提醒 $order_detail = M('order_detail'); $order_title_arr = $order_detail->field('title')->where("orderId='" . $dingdanhao['orderid'] . "'")->select(); $order_titles = ""; foreach ($order_title_arr as $order_title) { $order_titles = $order_titles . $order_title['title'] . " "; } $orderInfo['orderid'] = $dingdanhao['orderid']; $orderInfo['address_name'] = $item_order['address_name']; $orderInfo['mobile'] = $item_order['mobile']; $orderInfo['title'] = $order_titles; $orderinfos[] = $orderInfo; //xxl end } //xxl start $_SESSION['orderinfos'] = $orderinfos; //xxl end if (2 == $payment_id) { foreach ($all_order_arr as $dingdanhao) { $data['status'] = 2; $data['supportmetho'] = 2; $data['support_time'] = time(); if (M('item_order')->where("userId='" . $this->visitor->info['id'] . "' and orderId='" . $dingdanhao['orderid'] . "'")->data($data)->save()) { //成功就继续 //$this->redirect('user/index'); } else { $this->error('操作失败!'); } } //短信提醒 xxl start $this->send_tel_mail(); //xxl end $this->success('货到付款,保存成功!', U('user/index', array('status' => 2))); } elseif (3 == $payment_id) { // 银联支付 // 订单支付号 $this->assign('dingdanhao', $alldingdanhao); // 价格总额 $ordersumPrice = $_GET['ordersumPrice']; $this->assign('ordersumPrice', $ordersumPrice); //先查一下,看看是否已经支付过 if ($this->orderUpmpQuery($alldingdanhao) == "not_paid") { // 根据订单号获取银联流水号 header('Content-Type:text/html;charset=utf-8'); require_once "wapupay/lib/upmp_service.php"; $req['version'] = upmp_config::$version; // 版本号 $req['charset'] = upmp_config::$charset; // 字符编码 $req['transType'] = "01"; // 交易类型 $req['merId'] = upmp_config::$mer_id; // 商户代码 $req['backEndUrl'] = $this->_server('HTTP_ORIGIN') . "/weTall/wapupay/yinlian_notify_back.php"; // 后台通知URL $req['frontEndUrl'] = ""; // 前台通知URL(可选) //经过沟通,银联还未实现这个功能. $req['orderDescription'] = "微指购订单支付"; // 订单描述(可选) $req['orderTime'] = substr($alldingdanhao, 0, 14); //date("YmdHis"); // 交易开始日期时间yyyyMMddHHmmss $req['orderTimeout'] = ""; // 订单超时时间yyyyMMddHHmmss(可选) $req['orderNumber'] = $alldingdanhao; //支付号 $req['orderAmount'] = $all_order_price * 100; // 订单金额,精确到分 ,1块请输入100 $req['orderCurrency'] = "156"; // 交易币种(可选) $req['reqReserved'] = ""; // 请求方保留域(可选,用于透传商户信息) // 保留域填充方法 $merReserved['test'] = "test"; $req['merReserved'] = UpmpService::buildReserved($merReserved); // 商户保留域(可选) $resp = array(); $validResp = UpmpService::trade($req, $resp); // 商户的业务逻辑 if ($validResp) { // 服务器应答签名验证成功 // 写入文件 $filename = 'order_push.txt'; $fh = fopen($filename, "w"); //请求报文 fwrite($fh, "订单推送请求报文:" . $this->transUpmpInfo($req) . "\r\n"); //应答报文 fwrite($fh, "订单推送应答报文:" . $this->transUpmpInfo($resp) . "\r\n"); // 准备支付控件所需信息 // urlEncode(base64(tn=流水号,resultURL=urlEcode(交易结果展示url),usetestmode=true|false)) $strOrderInfo = "tn=" . $resp['tn'] . ",ResultURL=" . urlencode($this->_server('HTTP_ORIGIN') . "/weTall/index.php?m=order&a=notify_kongjian&dingdanhao=" . $alldingdanhao . "&rid=") . ",UseTestMode=true"; // base64加密 $strOrderInfo = base64_encode($strOrderInfo); // 转换字符串 $strOrderInfo = urlencode($strOrderInfo); // 输出支付控件所需信息到页面 $this->assign('strOrderInfo', $strOrderInfo); //关闭文件 fclose($fh); //成功信息 $connectInfo = '1'; } else { // 服务器应答签名验证失败 //echo "failture"."<br>"; $connectInfo = '0'; } } else { if ($this->orderUpmpQuery($alldingdanhao) == "paid") { foreach ($all_order_arr as $dingdan) { $data['status'] = 2; $data['supportmetho'] = 3; $data['support_time'] = time(); M('item_order')->where("orderId='" . $dingdan['orderid'] . "' and status=1")->data($data)->save(); } $connectInfo = '2'; } } $this->assign('connectInfo', $connectInfo); $this->display(); } elseif (1 == $payment_id) { //支付宝 foreach ($all_order_arr as $dingdanhao) { $data['supportmetho'] = 1; if (M('item_order')->where("userId='" . $this->visitor->info['id'] . "' and orderId='" . $dingdanhao['orderid'] . "'")->data($data)->save()) { //成功就继续 } else { $this->error('操作失败!'); } } $alipay = M('alipay')->find(); echo "<script>location.href='wapapli/alipayapi.php?WIDseller_email=" . $alipay['alipayname'] . "&WIDout_trade_no=" . $alldingdanhao . "&WIDsubject=" . $alldingdanhao . "&WIDtotal_fee=" . $all_order_price . "'</script>"; } else { $this->error('操作失败!'); } } }
function postbank() { $msg = ''; $this->load->database(); $payType = 1; $msg = ''; $money = $this->input->post('money'); $isJuan = $this->input->post('isJuan'); $juan_jine = $this->input->post('juan_jine'); $juan_qixian = $this->input->post('juan_qixian'); $wId = $this->input->post('wId'); $user = $this->db->query(" select * from `users` where `wId`='" . $wId . "'")->row(); if (!$user) { echo 0; exit; } //银联支付 if ($payType == 1) { //需要填入的部分 $req['version'] = upmp_config::$version; // 版本号 $req['charset'] = upmp_config::$charset; // 字符编码 $req['transType'] = "01"; // 交易类型 $req['merId'] = upmp_config::$mer_id; // 商户代码 $req['backEndUrl'] = upmp_config::$mer_back_end_url; // 通知URL $req['frontEndUrl'] = upmp_config::$mer_front_end_url; // 前台通知URL(可选) $req['orderDescription'] = "充值"; // 订单描述(可选) $req['orderTime'] = date("YmdHis"); // 交易开始日期时间yyyyMMddHHmmss $req['orderTimeout'] = ""; // 订单超时时间yyyyMMddHHmmss(可选) $req['orderNumber'] = $user->mobile . date("YmdHiss") . rand(10, 99); //订单号(商户根据自己需要生成订单号) $req['orderAmount'] = $money * 100; // 订单金额 $req['orderCurrency'] = "156"; // 交易币种(可选) $req['reqReserved'] = "透传信息"; // 请求方保留域(可选,用于透传商户信息) // 保留域填充方法 $merReserved['cardType'] = "01"; $req['merReserved'] = UpmpService::buildReserved($merReserved); // 商户保留域(可选) $resp = array(); $validResp = UpmpService::trade($req, $resp); $msg .= http_build_query($req); $msg .= "======="; // 商户的业务逻辑 if ($validResp) { $msg .= "\n"; $msg .= http_build_query($resp); $path = dirname(STATICPATH) . "/application/logs/" . date("Ym"); if (!is_dir($path)) { mkdir($path, 0777); } $filename = $path . "/" . date("d") . ".txt"; $file = fopen($filename, "a+"); fwrite($file, $msg); fclose($file); // 服务器应答签名验证成功 $tn = $resp['tn']; $resultURL = upmp_config::$mer_front_end_url . "/" . $req['orderNumber']; $usetestmode = 'false'; $paydata = urlencode(base64_encode("tn=" . $tn . ",resultURL=" . urlencode($resultURL . "?argName=") . ",usetestmode=false")); $url = "uppay://uppayservice/?style=token&paydata=" . $paydata; $add['ordernumber'] = $req['orderNumber']; $add['payType'] = 1; $add['cztype'] = 1; $add['link'] = $url; $add['wId'] = $wId; $add['type'] = 3; $add['shouru'] = $money; $add['tnumber'] = $tn; $add['isJuan'] = $isJuan; $add['juan_jine'] = $juan_jine; $add['userId'] = $user->userId; $add['juan_qixian'] = $juan_qixian; $add['jieyu'] = $user->counts + $money; $add['addtime'] = date("Y-m-d H:i:s"); $id = $this->Common->add("moneylog", $add); if ($id > 0) { $data['statue'] = 1; $data['url'] = "http://" . $_SERVER['HTTP_HOST'] . "/cz/pay?logId=" . $id; echo json_encode($data); exit; } else { echo 0; exit; } } else { // 服务器应答签名验证失败 echo 0; exit; } } }