Esempio n. 1
0
 /**
  * 发送函数------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");
     }
 }
Esempio n. 2
0
 /**
  * 接收回调参数
  */
 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!");
     }
 }