/** * 发送函数------T+0 * @param $service * @param $post * @parem $type * @return array|mixed */ public function send_two($service, $post, $type = '1') { //获取商户2的基本参数 $sina_config_two = SinaConfig::find()->where(['id' => '2'])->asArray()->one(); if (!$sina_config_two) { die("配置错误"); } $basic_post = array('service' => $service, 'version' => $sina_config_two['sinapay_version'], 'request_time' => date('YmdHis', time()), 'partner_id' => $sina_config_two['sinapay_partner_id'], '_input_charset' => $sina_config_two['sinapay_input_charset'], 'sign_type' => $sina_config_two['sign_type'], 'notify_url' => 'http://101.200.88.175/mmoneynew/rpc/web/appapi/returnurl'); //基本参数与业务参数组合 $post_data = array_merge($basic_post, $post); //对签名参数据排序 ksort($post_data); //生成签名 $weibopay = new Weibopay(); $sign = $weibopay->getSignMsg($post_data, $sina_config_two['sign_type']); //拼接签名 $post_data['sign'] = $sign; $data = $weibopay->createcurl_data($post_data); if ($type == '1') { $url = $sina_config_two['sinapay_mgs_url']; } else { $url = $sina_config_two['sinapay_mas_url']; } $result = $weibopay->curlPost($url, $data); $deresult = urldecode($result); $splitdata = array(); $splitdata = json_decode($deresult, true); ksort($splitdata); // 对签名参数据排序 if ($weibopay->checkSignMsg($splitdata, $sina_config_two['sign_type'])) { if ($splitdata["response_code"] == 'APPLY_SUCCESS') { // 成功 return $splitdata; } else { // 失败 return $splitdata; } } else { die("sign error!1"); } }
/** * 接收回调参数 */ public function notify() { ksort($_REQUEST); $weibopay = new Weibopay(); //验证签名 if ($weibopay->checkSignMsg($_REQUEST, $this->sina_config['sign_type'])) { $log = new SinaNotify(); $log->notify_type = $_REQUEST['notify_type']; $log->notify_id = $_REQUEST['notify_id']; $log->_input_charset = $_REQUEST['_input_charset']; $log->notify_time = $_REQUEST['notify_time']; $log->sign = $_REQUEST['sign']; $log->sign_type = $_REQUEST['sign_type']; $log->version = $_REQUEST['version']; $log->memo = array_key_exists('memo', $_REQUEST) ? $_REQUEST['memo'] : ''; $log->error_code = array_key_exists('error_code', $_REQUEST) ? $_REQUEST['error_code'] : ''; $log->error_message = array_key_exists('error_message', $_REQUEST) ? $_REQUEST['error_message'] : ''; $log->notify_data = json_encode($_REQUEST); if ($log->save()) { try { switch ($log->notify_type) { case 'trade_status_sync': $this->notify_trade($_REQUEST); break; case 'refund_status_sync': $this->notify_refund($_REQUEST); break; case 'deposit_status_sync': $this->notify_deposit($_REQUEST); break; case 'withdraw_status_sync': $this->notify_withdraw($_REQUEST); break; case 'batch_trade_status_sync': $this->notify_batch_trade($_REQUEST); break; case 'b2c_batch_pay2bank_status_sync': $this->notify_batch_pay2bank($_REQUEST); break; default: break; } } catch (Exception $ex) { Yii::error($ex->getMessage(), 'app'); Yii::error($ex->getTrace(), 'app'); } echo 'success'; } else { echo 'db_error'; } } else { die("sign error!"); } }