示例#1
0
 public function transQuery($order)
 {
     $config = $this->getConfig($order);
     $parameter = ['cmd' => 'BatchDetailQuery', 'mer_Id' => $config['partner'], 'batch_No' => $order['batch_no'], 'order_Id' => $order['mer_tran_no'], 'page_No' => 1];
     $parameter['hmac'] = $yeeServer->hMac($parameter);
     $parameter['version'] = '1.0';
     $parameter['group_Id'] = $config['partner'];
     $parameter['query_Mode'] = 1;
     $resultXml = $yeeServer->sendRequest($parameter);
     $result = CommonUtil::xmlToArray($resultXml);
     $notice['type'] = 'trans';
     $notice['details'] = [];
     if (is_array($result)) {
         if ($result['ret_Code'] == 1) {
             foreach ($result['list'] as $item) {
                 $notice['details'][] = ['seller_partner' => $item['mer_id'], 'batch_no' => $result['batch_No'], 'mer_trans_no' => $item['order_Id'], 'user_account' => $item['payee_Bank_Account'], 'user_name' => $item['payee_Name'], 'trans_amount' => $item['real_pay_amount'], 'notify_status' => $item['bank_Status'] == 'S' ? 2 : 3, 'notify_log' => !empty($item['fail_Desc']) ? $item['fail_Desc'] : 'Success', 'ser_trans_no' => '', 'notify_time' => time(), 'pay_time' => strtotime($item['complete_Date'])];
             }
         }
     }
     return $notice;
 }
 public function notify($channel)
 {
     $xml = file_get_contents("php://input");
     //$xml = '<xml><appid><![CDATA[wx62ad814ba9bf0b68]]></appid>
     //    <bank_type><![CDATA[CFT]]></bank_type>
     //    <cash_fee><![CDATA[1]]></cash_fee>
     //    <fee_type><![CDATA[CNY]]></fee_type>
     //    <is_subscribe><![CDATA[Y]]></is_subscribe>
     //    <mch_id><![CDATA[1227304102]]></mch_id>
     //    <nonce_str><![CDATA[yj1vuhafyyuvmcpz2p9992a91ul06edd]]></nonce_str>
     //    <openid><![CDATA[oFA64s5NHmfwEaEl5jIfjTgsy1Pw]]></openid>
     //    <out_trade_no><![CDATA[test0702152451350439000000000095]]></out_trade_no>
     //    <result_code><![CDATA[SUCCESS]]></result_code>
     //    <return_code><![CDATA[SUCCESS]]></return_code>
     //    <sign><![CDATA[4E0910D81068E34969D263BE21A7BF99]]></sign>
     //    <time_end><![CDATA[20150702152605]]></time_end>
     //    <total_fee>1</total_fee>
     //    <trade_type><![CDATA[JSAPI]]></trade_type>
     //    <transaction_id><![CDATA[1008410170201507020336471776]]></transaction_id>
     //    </xml>' ;
     $params = CommonUtil::xmlToArray($xml);
     $partner = $params['mch_id'];
     $config = $this->getConfigByPartner($channel, $partner);
     $notify = new \Notify_pub($config);
     $notify->saveData($xml);
     $notice = [];
     if ($notify->checkSign() == TRUE) {
         /// 通信出错
         if ($notify->data["return_code"] == "FAIL") {
             $notify->setReturnParameter("return_code", "FAIL");
             //返回状态码
             $notify->setReturnParameter("return_msg", "通信出错");
             //返回信息
             /// 业务出错
         } elseif ($notify->data["result_code"] == "FAIL") {
             $notify->setReturnParameter("return_code", "FAIL");
             //返回状态码
             $notify->setReturnParameter("return_msg", "业务出错");
             //返回信息
             /// 支付成功
         } else {
             $notify->setReturnParameter("return_code", "SUCCESS");
             //设置返回码
             $notice['type'] = 'direct';
             $notice['mer_recharge_no'] = $params['out_trade_no'];
             //商户订单号
             $notice['ser_recharge_no'] = $params['transaction_id'];
             //第三方支付单号
             $notice['gateway_account'] = $params['openid'];
             //用户在商户appid下的唯一标识
             $notice['seller_partner'] = $params['mch_id'];
             //商户号
             $notice['notify_status'] = 2;
             $notice['notify_log'] = '支付成功';
             $notice['pay_time'] = strtotime($params['time_end']);
             $notice['notify_time'] = strtotime($params['time_end']);
             $notice['amount'] = $params['total_fee'];
             //订单金额
             $notice['bank_id'] = $params['bank_type'];
             //银行类型
             //$notice['attach']           = $params['attach'] ;           //商家数据包
         }
     } else {
         $notify->setReturnParameter("return_code", "FAIL");
         //返回状态码
         $notify->setReturnParameter("return_msg", "签名错误");
         //返回信息
     }
     $notice['output'] = $notify->returnXml();
     //给第三方显示
     return $notice;
 }