/**
  * 生成支付代码
  * @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);
}
Exemple #3
0
 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('操作失败!');
         }
     }
 }
Exemple #5
0
 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;
         }
     }
 }