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; }