Example #1
0
 /**
  * 
  * 查询订单情况
  * @param string $out_trade_no  商户订单号
  * @param int $succCode         查询订单结果
  * @return 0 订单不成功,1表示订单成功,2表示继续等待
  */
 public function query($out_trade_no, &$succCode)
 {
     $queryOrderInput = new WxPayOrderQuery();
     $queryOrderInput->SetOut_trade_no($out_trade_no);
     $result = WxPayApi::orderQuery($queryOrderInput);
     if ($result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         //支付成功
         if ($result["trade_state"] == "SUCCESS") {
             $succCode = 1;
             return $result;
         } else {
             if ($result["trade_state"] == "USERPAYING") {
                 $succCode = 2;
                 return false;
             }
         }
     }
     //如果返回错误码为“此交易订单号不存在”则直接认定失败
     if ($result["err_code"] == "ORDERNOTEXIST") {
         $succCode = 0;
     } else {
         //如果是系统错误,则后续继续
         $succCode = 2;
     }
     return false;
 }
Example #2
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     //		Log::DEBUG("query:" . json_encode($result));
     ilog(iLOG_INFO, 'Queryorder:' . json_encode($result), __LINE__);
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         $user_trade_no = $result['out_trade_no'];
         $transaction_id = $result['transaction_id'];
         $info1 = 'wxapp/interface/appnotify.php,operator success,session == trade_no,ordernum:' . $user_trade_no . ',wxno:' . $transaction_id;
         ilog(iLOG_INFO, $info1, __LINE__);
         $body_arr['order_no'] = $user_trade_no;
         $body_arr['pay_result'] = 2;
         //支付成功
         $body_arr['alipay_no'] = $transaction_id;
         //微信流水号
         $body_arr['channel'] = 'wxapp';
         //
         $ret = exec_procedure($body_arr, 'p_order_pay_result');
         if ($ret['status'] == 0 || $ret['status'] == 1040) {
             //成功,返回success
             return true;
         } else {
             //返回错误码,非success
             $info = 'wxapp/interface/appnotify.php,p_order_pay_result failed';
             ilog(iLOG_INFO, $info, __LINE__);
             return false;
         }
     }
     $info = 'wxapp/interface/appnotify.php,operator failed';
     ilog(iLOG_INFO, $info, __LINE__);
     //验证失败
     return false;
 }
Example #3
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     \Log::info("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         // 处理订单
         $pay = \App\Pay::find($result['out_trade_no']);
         $pay->pay($result['transaction_id']);
         if ($pay->state < 2) {
             $pay->state = '2';
             $pay->bak_id = '0';
             $pay->other_id = $result['transaction_id'];
             $pay->save();
         } else {
             if ($pay->state == 2) {
                 $pay->bak_id++;
                 $pay->save();
             }
         }
         return true;
     }
     return false;
 }
 /**
  * 查询订单根据out_trade_no
  */
 public function queryByOutTradeNo($out_trade_no)
 {
     $input = new WxPayOrderQuery();
     $input->setConfig($this->config);
     $input->SetOut_trade_no($out_trade_no);
     \Common\Api\Wxpay\WxPayApi::setConfig($this->config);
     return \Common\Api\Wxpay\WxPayApi::orderQuery($input);
 }
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         return true;
     }
     return false;
 }
Example #6
0
 public function Queryorder($mpid, $transaction_id)
 {
     //\TMS_APP::M('log')->log('debug', 'pay-Queryorder', '0');
     $input = new \WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = \WxPayApi::orderQuery($mpid, $input);
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         return true;
     }
     //\TMS_APP::M('log')->log('debug', 'pay-Queryorder', 'ok');
     return false;
 }
Example #7
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         return true;
     }
     $log = Log::factory(NT_LOGS_PATH . 'wxpay_saoma/');
     $log->write('wxpay_saoma_notify_orderQuery', "订单查询失败\n" . json_encode($result) . "\n");
     return false;
 }
Example #8
0
 public function Queryorder($data)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($data['transaction_id']);
     $input->SetTradeType($data['trade_type']);
     $result = WxPayApi::orderQuery($input, Config::API_TIMEOUT);
     $this->query_data = $result;
     Log::DEBUG("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         return true;
     }
     return false;
 }
Example #9
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     Log::DEBUG("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         return true;
         // echo "OK";
     }
     return false;
     // echo "Fail";
 }
Example #10
0
 private function queryOrder($out_trade_no, $inStatus = '')
 {
     if (isset($out_trade_no) && $out_trade_no != "") {
         $input = new WxPayOrderQuery();
         $input->SetOut_trade_no($out_trade_no);
         $info = WxPayApi::orderQuery($input);
         if ($inStatus == 'code') {
             return $info['trade_state'];
         }
         $status = orderState($info['trade_state']);
     }
     return $status;
 }
Example #11
0
 public function queryOrder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     Log::DEBUG("query:" . Tools::jsonEncode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         if (!$this->changeOrderStatus($result['out_trade_no'])) {
             Log::DEBUG("change:5.更改定单状态失败");
         }
         return true;
     }
     return false;
 }
 public function Queryorder($transaction_id)
 {
     $input = new \WxPayOrderQuery();
     $input->setWxPayApi($this->wxPayApi);
     $input->SetTransaction_id($transaction_id);
     $result = $this->wxPayApi->orderQuery($input);
     //        if ($this->logger) {
     //            $logContent = static::log_tag . " query:" . json_encode($result);
     //            $this->logger->log($logContent);
     //        }
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && array_key_exists('trade_state', $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS" && $result['trade_state'] == "SUCCESS") {
         return true;
     }
     return false;
 }
Example #13
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     Log::DEBUG("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         //支付成功后 开通相关的操作方法
         require_once dirname(__FILE__) . '/../common.inc.php';
         $url = $_CFG['site_domain'] . $_CFG['site_dir'] . "include/payment/respond_weixinpay.php";
         $return_oid = $this->curl_file_get_contents($url, $result);
         @unlink(QISHI_ROOT_PATH . 'data/wxpay/' . $return_oid . '.tmp');
         return true;
     }
     return false;
 }
Example #14
0
 /**
  *
  * 查询订单,WxPayOrderQuery中out_trade_no、transaction_id至少填一个
  * appid、mchid、spbill_create_ip、nonce_str不需要填入
  * @param WxPayOrderQuery $inputObj
  * @param int $timeOut
  * @throws WxPayException
  * @return 成功时返回,其他抛异常
  */
 public static function orderQuery($mpid, $inputObj, $timeOut = 6)
 {
     $wxPayConfig = new \WxPayConfig($mpid);
     $url = "https://api.mch.weixin.qq.com/pay/orderquery";
     //检测必填参数
     if (!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) {
         throw new WxPayException("订单查询接口中,out_trade_no、transaction_id至少填一个!");
     }
     $inputObj->SetAppid($wxPayConfig->APPID);
     //公众账号ID
     $inputObj->SetMch_id($wxPayConfig->MCHID);
     //商户号
     $inputObj->SetNonce_str(self::getNonceStr());
     //随机字符串
     $inputObj->SetSign($mpid);
     //签名
     $xml = $inputObj->ToXml();
     $startTimeStamp = self::getMillisecond();
     //请求开始时间
     $response = self::postXmlCurl($xml, $url, false, $timeOut);
     $result = WxPayResults::Init($mpid, $response);
     self::reportCostTime($url, $startTimeStamp, $result);
     //上报请求花费时间
     return $result;
 }
 public function queryOrder($out_trade_no)
 {
     $input = new \WxPayOrderQuery();
     $input->setWxPayApi($this->wxPayApi);
     $input->SetOut_trade_no($out_trade_no);
     $result = \WxPayApi::orderQuery($input);
     /*
     if(array_key_exists("return_code", $result)
         && array_key_exists("result_code", $result)
         && $result["return_code"] == "SUCCESS"
         && $result["result_code"] == "SUCCESS")
     {
         return true;
     }
     */
     return $result;
 }
Example #16
0
 /**
  *
  * 查询订单,WxPayOrderQuery中out_trade_no、transaction_id至少填一个
  * appid、mchid、spbill_create_ip、nonce_str不需要填入
  *
  * @param WxPayOrderQuery $inputObj
  * @param int $timeOut
  * @throws WxPayException
  * @return 成功时返回,其他抛异常
  */
 public static function orderQuery($inputObj, $timeOut = 30)
 {
     $url = "https://api.mch.weixin.qq.com/pay/orderquery";
     // 检测必填参数
     if (!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) {
         throw new WxPayException("订单查询接口中,out_trade_no、transaction_id至少填一个!");
     }
     $inputObj->SetSign();
     // 签名
     $xml = $inputObj->ToXml();
     $startTimeStamp = self::getMillisecond();
     // 请求开始时间
     $response = self::postXmlCurl($xml, $url, false, $timeOut);
     $result = WxPayResults::Init($response, $inputObj->wx_config);
     self::reportCostTime($url, $startTimeStamp, $result);
     // 上报请求花费时间
     return $result;
 }
Example #17
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     Log::DEBUG("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         $url = "http://" . $_SERVER['SERVER_NAME'] . "/index.php?g=weixin&m=scan&a=notify";
         $post_params = $result;
         $ch = curl_init();
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         curl_setopt($ch, CURLOPT_POST, 1);
         curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
         $output = curl_exec($ch);
         curl_close($ch);
         return true;
     }
     return false;
 }
Example #18
0
 /**
  *
  * 查询订单,WxPayOrderQuery中out_trade_no、transaction_id至少填一个
  * appid、mchid、spbill_create_ip、nonce_str不需要填入
  * @param WxPayOrderQuery $inputObj
  * @param int $timeOut
  * @throws WxPayException
  * @return 成功时返回,其他抛异常
  */
 public static function orderQuery($inputObj, $timeOut = 6)
 {
     $url = "https://api.mch.weixin.qq.com/pay/orderquery";
     $inputObj->SetAppid(APPID);
     //公众账号ID
     $inputObj->SetMch_id(MCHID);
     //商户号
     $inputObj->SetNonce_str(self::getNonceStr());
     //随机字符串
     $inputObj->SetSign();
     //签名
     $xml = $inputObj->ToXml();
     $startTimeStamp = self::getMillisecond();
     //请求开始时间
     $response = self::postXmlCurl($xml, $url, false, $timeOut);
     $result = WxPayResults::Init($response);
     return $result;
 }
Example #19
0
 private function queryOrder($out_trade_no = '', $inStatus = 0)
 {
     if ($inStatus == 4) {
         return $status = '已经申请退款';
     }
     if (isset($out_trade_no) && $out_trade_no != "") {
         $input = new WxPayOrderQuery();
         $input->SetOut_trade_no($out_trade_no);
         $info = WxPayApi::orderQuery($input);
         if (isset($info['err_code']) && $info['err_code'] == 'ORDERNOTEXIST') {
             $trade_state = 'NOTPAY';
         } else {
             $trade_state = $info['trade_state'];
         }
         // $status = orderState($trade_state);
     }
     return $trade_state;
 }
Example #20
0
function printf_info($data)
{
    foreach ($data as $key => $value) {
        echo "<font color='#f00;'>{$key}</font> : {$value} <br/>";
    }
}
if (isset($_REQUEST["transaction_id"]) && $_REQUEST["transaction_id"] != "") {
    $transaction_id = $_REQUEST["transaction_id"];
    $input = new WxPayOrderQuery();
    $input->SetTransaction_id($transaction_id);
    printf_info(WxPayApi::orderQuery($input));
    exit;
}
if (isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != "") {
    $out_trade_no = $_REQUEST["out_trade_no"];
    $input = new WxPayOrderQuery();
    $input->SetOut_trade_no($out_trade_no);
    printf_info(WxPayApi::orderQuery($input));
    exit;
}
?>
<body>  
	<form action="#" method="post">
        <div style="margin-left:2%;color:#f00">微信订单号和商户订单号选少填一个,微信订单号优先:</div><br/>
        <div style="margin-left:2%;">微信订单号:</div><br/>
        <input type="text" style="width:96%;height:35px;margin-left:2%;" name="transaction_id" /><br /><br />
        <div style="margin-left:2%;">商户订单号:</div><br/>
        <input type="text" style="width:96%;height:35px;margin-left:2%;" name="out_trade_no" /><br /><br />
		<div align="center">
			<input type="submit" value="查询" style="width:210px; height:50px; border-radius: 15px;background-color:#FE6714; border:0px #FE6714 solid; cursor: pointer;  color:white;  font-size:16px;" type="button" onclick="callpay()" />
		</div>
Example #21
0
 /**
  * @note   生成查询订单的签名和随机字符串
  * @access public
  * @author zhangchong <*****@*****.**>
  * @date   2015/7/20 10:01
  * @param  string $transaction_id  微信订单号
  * @return array
  **/
 public function getOrderQuerySignAndStr($transaction_id)
 {
     $inputObj = new WxPayOrderQuery();
     $inputObj->SetTransaction_id($transaction_id);
     //微信订单号
     $inputObj->SetAppid($this->config->appid);
     //公众账号ID
     $inputObj->SetMch_id($this->config->mchid);
     //商户号
     $inputObj->SetNonce_str(Pay\WxPayApi::getNonceStr());
     //随机字符串
     $inputObj->SetSign();
     //签名
     return array($inputObj->GetSign(), $inputObj->GetNonce_str());
 }
Example #22
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     Log::DEBUG("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         f_log(http_build_query($result), dirname(__FILE__) . '/wzlog.log');
         $result['addtime'] = time();
         $id = M('pay_log')->add($result);
         // 更改order 状态
         // 更改 hongbao状态
         $result['out_trade_no'];
         $order = M('zhaopian_order')->where("order_sn='{$result['out_trade_no']}'")->find();
         $user = M('user')->find($order['user_id']);
         if ($order) {
             // 重复操作
             if ($order['state'] > 1) {
                 return true;
             }
             $order_data = array('pay_id' => $id, 'pay_time' => time(), 'transaction_id' => $result['transaction_id'], 'state' => 2);
             M('zhaopian_order')->where("id='{$order['id']}'")->save($order_data);
             $zhaopian = M('zhaopian')->where("id='{$order['hongbao_id']}'")->find();
             if ($zhaopian) {
                 $data = array('update_time' => time(), 'total_num' => $zhaopian['total_num'] + 1, 'total_amount' => $zhaopian['total_amount'] + $order['amount']);
                 // 自动发送红包
                 if (true) {
                     $bao = array('mch_billno' => get_order_sn('wz'), 'send_name' => '红包照片', 're_openid' => $zhaopian['openid'], 'total_amount' => floor($order['amount'] * 0.98 * 100), 'wishing' => '恭喜您!您在照片刚刚"' . $user['name'] . '"购买了', 'act_name' => '红包照片', 'remark' => '红包照片');
                     $send = $bao;
                     $send['user_id'] = $zhaopian['user_id'];
                     $send['addtime'] = time();
                     $hongbao_id = M('zhaopian_send')->add($send);
                     if ($hongbao_id) {
                         M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('send_id' => $hongbao_id, 'send_sn' => $bao['mch_billno'], 'send_time' => time()));
                         $data = sendHongBao($bao);
                         if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') {
                             M('zhaopian_order')->where(array("id='{$order['id']}'"))->save(array('is_send_zhaopian' => 1));
                             M('zhaopian_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 2, 'send_listid' => $data['send_listid']));
                             $user_amount = number_format($order['amount'] * 0.98, 2);
                             $msg = "你发布的照片有朋友购买了!\n\n照片标题:{$zhaopian['remark']}\n\n支付金额:¥{$order['amount']}元\n\n好友购买照片钱已经通过微信红包打给你,其中已扣除2%微信支付手续费,扣除后金额为{$user_amount}元";
                             \Wechat\Wxapi::send_wxmsg($zhaopian['openid'], '红包照片状态提醒', U('/zhao/zhaopian/detail', array('id' => $zhaopian['number_no']), true, true), $msg);
                         } else {
                             M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 3));
                             $user_amount = number_format($order['amount'] * 0.98, 2);
                             $msg = "你发布的照片有朋友购买了!\n\n照片标题:{$zhaopian['remark']}\n\n支付金额:¥{$order['amount']}元\n\n红包将会在1~3个工作内,通过微信红包打给你,\n其中已扣除2%的微信支付手续费,扣除后金额为{$user_amount}元。\n因为微信支付到我们的账户需要1~3个工作日,我们\n的账户预存垫付的现金不足,暂时不能实时转账,希望\n理解。资金安全请你放心,如果有疑问请联系客服。";
                             \Wechat\Wxapi::send_wxmsg($zhaopian['openid'], '红包照片状态提醒', U('/zhao/zhaopian/detail', array('id' => $zhaopian['number_no']), true, true), $msg);
                             $sys_openid = "obb1AuA79tIJ-BGY7HA38FXAJwoc";
                             $msg = "重要提示! 红包发送异常!!! 可能余额不足,或支付金额异常,支付金额:{$user_amount},请及时处理.";
                             \Wechat\Wxapi::send_wxmsg($sys_openid, '红包照片状态提醒', "http://{$_SERVER['HTTP_HOST']}", $msg);
                         }
                     }
                 }
             }
         }
         return true;
     }
     return false;
 }
Example #23
0
 public function actionOrderQuery()
 {
     if (isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != "") {
         $out_trade_no = $_REQUEST["out_trade_no"];
         $input = new \WxPayOrderQuery();
         $input->SetOut_trade_no($out_trade_no);
         $result = \WxPayApi::orderQuery($input);
         $this->renderAjax($result);
     } else {
         $this->renderAjax('没有订单号你叫我怎么查?');
     }
 }
Example #24
0
function wxqueryorderdata($body)
{
    //    $data['pay_no'] = isset($body['out_data']['pay_no'])?$body['out_data']['pay_no']:'';
    //    if(!$data['pay_no']){
    //        $ret1['status'] = 1041;
    //        $ret1['desc'] = '等待支付';
    //        return $ret1;
    //    }
    $queryOrderInput = new WxPayOrderQuery();
    $queryOrderInput->SetOut_trade_no($body['order_no']);
    $ret = WxPayApi::orderQuery($queryOrderInput);
    //数据已经解析为了数组格式
    $retexec = array();
    if ($ret['return_code'] == 'SUCCESS') {
        //查询成功
        $resp['wx_app_id'] = $ret['appid'];
        $resp['wx_partner_id'] = $ret['mch_id'];
        if ($ret['result_code'] == 'SUCCESS') {
            //
            switch ($ret['trade_state']) {
                case 'SUCCESS':
                    //支付成功
                    $body['pay_result'] = 2;
                    $body['pay_time'] = $ret['time_end'];
                    $retexec = exec_procedure($body, 'p_order_update_result');
                    $retexec['order_state'] = 2;
                    break;
                case 'REFUND':
                    //转入退款
                //转入退款
                case 'NOTPAY':
                    //未支付
                //未支付
                case 'CLOSED':
                    //已关闭
                //已关闭
                case 'REVOKED':
                    //已撤销
                //已撤销
                case 'USERPAYING':
                    //用户支付中
                //用户支付中
                case 'PAYERROR':
                    //支付失败
                    $retexec = exec_procedure($body, 'p_order_query_result');
                    $retexec['out_state'] = isset($retexec['out_data']['out_state']) ? $retexec['out_data']['out_state'] : 0;
                    break;
            }
        }
        return $retexec;
    } else {
        $ret['status'] = 1045;
        return $ret;
    }
}
 /**
  * 
  * 查询订单情况
  * @param string $out_trade_no  商户订单号
  * @param int $succCode         查询订单结果
  * @return 0 订单不成功,1表示订单成功,2表示继续等待
  */
 public function query($out_trade_no, &$succCode)
 {
     $queryOrderInput = new \WxPayOrderQuery();
     $queryOrderInput->setWxPayApi($this->wxPayApi);
     \Log::info('curl timeout :' . $this->wxPayConfig['CURL_TIMEOUT']);
     $queryOrderInput->SetOut_trade_no($out_trade_no);
     $result = $this->wxPayApi->orderQuery($queryOrderInput, $this->wxPayConfig['CURL_TIMEOUT']);
     if ($result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         //支付成功
         if ($result["trade_state"] == "SUCCESS") {
             $succCode = 1;
             return $result;
         } else {
             if ($result["trade_state"] == "USERPAYING") {
                 $succCode = 2;
                 return false;
             }
         }
     }
     //如果返回错误码为“此交易订单号不存在”则直接认定失败
     if ($result["err_code"] == "ORDERNOTEXIST") {
         $succCode = 0;
     } else {
         //如果是系统错误,则后续继续
         $succCode = 2;
     }
     return false;
 }
Example #26
0
 public function Queryorder($transaction_id)
 {
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input);
     Log::DEBUG("query:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         f_log(http_build_query($result), dirname(__FILE__) . '/mylog.log');
         $result['addtime'] = time();
         $id = M('pay_log')->add($result);
         // 更改order 状态
         // 更改 hongbao状态
         $order_sn = $result['out_trade_no'];
         if (substr($order_sn, 0, 2) == 'HB') {
             $this->bao($result, $id);
             return true;
         }
         if (substr($order_sn, 0, 2) == 'ZP') {
             $this->zhaopian($result, $id);
             return true;
         }
         $order = M('hongbao_order')->where("order_sn='{$result['out_trade_no']}'")->find();
         if ($order) {
             // 重复操作
             if ($order['state'] > 1) {
                 return true;
             }
             $order_data = array('pay_id' => $id, 'pay_time' => time(), 'transaction_id' => $result['transaction_id'], 'state' => 2);
             M('hongbao_order')->where("id='{$order['id']}'")->save($order_data);
             $hongbao = M('hongbao')->where("id='{$order['hongbao_id']}'")->find();
             if ($hongbao) {
                 $data = array('update_time' => time(), 'total_num' => $hongbao['total_num'] + $order['part_num'], 'total_pay_amount' => $hongbao['total_pay_amount'] + $order['total_amount'], 'total_user' => $hongbao['total_user'] + 1);
                 if ($data['total_num'] >= $hongbao['total_part'] || $data['total_pay_amount'] >= $hongbao['total_amount']) {
                     $data['state'] = 2;
                     $data['success_time'] = time();
                 }
                 M('hongbao')->where("id='{$order['hongbao_id']}'")->save($data);
                 if ($hongbao['state'] > 1) {
                     return true;
                 }
                 // 设置幸运星
                 if ($data['state'] == 2) {
                     $list = M('hongbao_order')->where("hongbao_id='{$order['hongbao_id']}' AND state=2")->select();
                     if ($list) {
                         $ids = array();
                         foreach ($list as $r) {
                             $ids[] = $r['id'];
                         }
                         shuffle($ids);
                         $k = array_rand($ids);
                         $id = $ids[$k];
                         if ($id) {
                             $order_info = M('hongbao_order')->find($id);
                             $user_info = M('user')->find($order_info['user_id']);
                             M('hongbao_order')->where("id='{$id}'")->save(array('is_star' => 1));
                         }
                     }
                 }
                 // 自动发送红包
                 if ($data['state'] == 2) {
                     $bao = array('mch_billno' => get_order_sn(), 'send_name' => '凑红包', 're_openid' => $hongbao['openid'], 'total_amount' => floor($hongbao['total_amount'] * 0.98 * 100), 'wishing' => '恭喜您!您在凑红包发起的凑红包已经完成。', 'act_name' => '凑红包', 'remark' => '凑红包');
                     $send = $bao;
                     $send['user_id'] = $hongbao['user_id'];
                     $send['addtime'] = time();
                     $hongbao_id = M('hongbao_send')->add($send);
                     if ($hongbao_id) {
                         M('hongbao')->where(array("id='{$hongbao['id']}'"))->save(array('hongbao_id' => $hongbao_id, 'hongbao_sn' => $bao['mch_billno'], 'hongbao_time' => time()));
                         $data = sendHongBao($bao);
                         if ($data['result_code'] == 'SUCCESS' && $data['return_code'] == 'SUCCESS') {
                             M('hongbao')->where(array("id='{$hongbao['id']}'"))->save(array('is_send_hongbao' => 1));
                             M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 2, 'send_listid' => $data['send_listid']));
                             $user_amount = number_format($hongbao['total_amount'] * 0.98, 2);
                             $msg = "你发起的凑红包成功啦!\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n幸运星:{$user_info['name']}\n\n红包已经通过微信红包打给你,其中已扣除2%微信支付手续费,扣除后金额为{$user_amount}元";
                             \Wechat\Wxapi::send_wxmsg($hongbao['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg);
                             $msg = "幸运星就是你!没想到吧\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n快找发起人要福利吧 :D";
                             \Wechat\Wxapi::send_wxmsg($user_info['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg);
                         } else {
                             M('hongbao_send')->where(array("id='{$hongbao_id}'"))->save(array('state' => 3));
                             $user_amount = number_format($hongbao['total_amount'] * 0.98, 2);
                             $msg = "你发起的凑红包成功啦!\n\n众筹标题:{$hongbao['remark']}\n\n众筹进度:¥{$hongbao['total_amount']}已成功!\n\n幸运星:{$user_info['name']}\n\n红包将会在1~3个工作内,通过微信红包打给你,\n其中已扣除2%的微信支付手续费,扣除后金额为{$user_amount}元。\n因为微信支付到我们的账户需要1~3个工作日,我们\n的账户预存垫付的现金不足,暂时不能实时转账,希望\n理解。资金安全请你放心,如果有疑问请联系客服。";
                             \Wechat\Wxapi::send_wxmsg($hongbao['openid'], '众筹状态提醒', U('/cou/hongbao/detail', array('id' => $hongbao['number_no']), true, true), $msg);
                             $sys_openid = "oV3oMxP5wdTR8BpptzNq2tDdGtLk";
                             $msg = "重要提示! 红包发送异常!!!";
                             \Wechat\Wxapi::send_wxmsg($sys_openid, '众筹状态提醒', "http://{$_SERVER['HTTP_HOST']}", $msg);
                         }
                     }
                 }
             }
         }
         return true;
     }
     return false;
 }
Example #27
0
 /**
  * 
  * 查询订单,WxPayOrderQuery中out_trade_no、transaction_id至少填一个
  * appid、mchid、spbill_create_ip、nonce_str不需要填入
  * @param WxPayOrderQuery $inputObj
  * @param int $timeOut
  * @throws WxPayException
  * @return 成功时返回,其他抛异常
  */
 public static function orderQuery($inputObj, $timeOut = 6)
 {
     $url = "https://api.mch.weixin.qq.com/pay/orderquery";
     if (!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) {
         throw new WxPayException("订单查询接口中,out_trade_no、transaction_id至少填一个!");
     }
     //APP支付及微信公众平台支付订单查询
     if ($inputObj->GetTradeType() === 'APP') {
         $inputObj->SetAppid(WxPayConfig::APP_APPID);
         //开放平台APPID
         $inputObj->SetMch_id(WxPayConfig::APP_MCHID);
         //商户平台商户号
     } else {
         $inputObj->SetAppid(WxPayConfig::APPID);
         //公众账号ID
         $inputObj->SetMch_id(WxPayConfig::MCHID);
         //商户号
     }
     $inputObj->SetNonce_str(self::getNonceStr());
     //随机字符串
     $inputObj->SetSign();
     //签名
     $xml = $inputObj->ToXml();
     $startTimeStamp = self::getMillisecond();
     //请求开始时间
     $response = self::postXmlCurl($xml, $url, false, $timeOut);
     $result = WxPayResults::Init($response);
     self::reportCostTime($url, $startTimeStamp, $result);
     //上报请求花费时间
     return $result;
 }
 function Queryorder($transaction_id)
 {
     $WxCfg = $this->getWXCfg();
     $input = new WxPayOrderQuery();
     $input->SetTransaction_id($transaction_id);
     $result = WxPayApi::orderQuery($input, $WxCfg);
     Log::DEBUG(" WxPayApi::orderQuery:" . json_encode($result));
     if (array_key_exists("return_code", $result) && array_key_exists("result_code", $result) && $result["return_code"] == "SUCCESS" && $result["result_code"] == "SUCCESS") {
         return true;
     }
     return false;
 }
Example #29
0
 /**
  *
  * 查询订单,WxPayOrderQuery中out_trade_no、transaction_id至少填一个
  * appid、mchid、spbill_create_ip、nonce_str不需要填入
  * @param WxPayOrderQuery $inputObj
  * @param int $timeOut
  * @throws WxPayException
  * @return 成功时返回,其他抛异常
  */
 public function orderQuery($inputObj, $timeOut = 6)
 {
     $url = "https://api.mch.weixin.qq.com/pay/orderquery";
     //检测必填参数
     if (!$inputObj->isOutTradeNoSet() && !$inputObj->isTransactionIdSet()) {
         throw new WxPayException("订单查询接口中,out_trade_no、transaction_id至少填一个!");
     }
     $inputObj->setAppid($this->apiConfig->appid);
     //公众账号ID
     $inputObj->setMchId($this->apiConfig->mchid);
     //商户号
     $inputObj->setMchKey($this->apiConfig->mchkey);
     //商户密钥
     $inputObj->setNonceStr($this->getNonceStr());
     //随机字符串
     $inputObj->setSign();
     //签名
     $xml = $inputObj->toXml();
     $startTimeStamp = $this->getMillisecond();
     //请求开始时间
     $response = $this->postXmlCurl($xml, $url, false, $timeOut);
     $result = WxPayResults::init($response, $this->apiConfig->mchkey);
     $this->reportCostTime($url, $startTimeStamp, $result);
     //上报请求花费时间
     return $result;
 }