| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?php
- namespace app\api\complex;
- use think\Request;
- class Yehua implements ComplexInterface
- {
- private $channel = 'yehua';
- private $check_url = "http://pay.sdkyehua.com:8081";
- // 登陆效验
- public function checkLogin($data, $polyChannelGame = [])
- {
- if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
- return false;
- }
- $params = [
- 'app' => $paramArr['app_id'],
- 'token' => $data['channel_token'],
- 'ts' => getMillisecond(),
- 'uin' => $data['user_id'],
- ];
- $params['sign'] = md5($this->getLoginSign($params).$paramArr['app_key']);
- $result = $this->curl_post($this->check_url.'/payserver/account/check_login', $params);
- // trace($this->channel.' 登陆校验失败 - url:'.$this->check_url . ' - ' . json_encode($params) . ' - result:' . $result, 'Yehua@checkLogin.$result');
- $res = json_decode($result, true);
- if ($res['code'] == 0) {
- return true;
- } else {
- return false;
- }
- }
- // 支付回调效验
- public function paySign($data, $polyChannelGame = [])
- {
- if(!input('app') || !input('uid') || !input('sign')){
- return ['code' => -710, 'msg' => '回调参数有误!', 'data' => []];
- }
- if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
- return false;
- }
- $newData = [
- "app" => $data['app'],
- "at" => $data['at'],
- "cbi" => $data['cbi'],
- "cn" => $data['cn'],
- "fee" => $data['fee'],
- "kr" => $data['kr'],
- "pt" => $data['pt'],
- "res" => $data['res'],
- "st" => $data['st'],
- "tid" => $data['tid'],
- "ud" => $data['ud'],
- "uid" => $data['uid'],
- "ver" => $data['ver'],
- "sign" => $data['sign'],
- ];
- $signStr = $this->getSignContent($newData) . $paramArr['app_secret'];
- if (md5($signStr) == $newData['sign']) {
- return true;
- }
- return false;
- }
- public function getData($data)
- {
- return [
- 'orderid' => $data['ud'], //我方聚合订单
- 'amount' => formatFenToYuan($data['fee']), // 充值金额
- 'sub_orderid' => $data['ud'], //渠道订单
- ];
- }
- public function getFail($msg = '')
- {
- echo 'FAILURE';
- exit();
- }
- public function getSuccess($msg = '')
- {
- echo 'SUCCESS';
- exit();
- }
- /**
- * 登陆签名
- *
- * 获取待签字符串
- * 去除值为null和键为sign、sign_type的参数
- * 按照键值字典排序[a-z]
- * 按照key=value&key=value的方式拼接成待签字符串
- * @param $params
- * @return string
- */
- private function getLoginSign($params)
- {
- ksort($params);
- $returnArr = [];
- foreach ($params as $k => $v) {
- $ks = trim(strtolower($k));
- if ($ks == 'sign' || $ks == 'sign_type') {
- unset($params[$k]);
- continue;
- }
- $returnArr[] = "{$k}={$v}";
- }
- $resStr = implode('&', $returnArr);
- return $resStr;
- }
- public function curl_post($url , $data=array()){
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
- // POST数据
- curl_setopt($ch, CURLOPT_POST, 1);
- // 把post的变量加上
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
- $output = curl_exec($ch);
- curl_close($ch);
- return $output;
- }
- public function getSpecialParam($data,$polyChannelGame = []){
- if(!empty($data['user_id'])){
- return $data['user_id'];
- }
- return false;
- }
- /**
- * 支付回调签名
- *
- * 获取待签字符串
- * 去除值为null和键为sign、sign_type的参数
- * 按照键值字典排序[a-z]
- * 按照key=value&key=value的方式拼接成待签字符串
- * @param $params
- * @return string
- */
- private function getSignContent($params)
- {
- ksort($params);
- $returnArr = [];
- foreach ($params as $k => $v) {
- $ks = trim(strtolower($k));
- if ($ks == 'sign' || $ks == 'sign_type') {
- unset($params[$k]);
- continue;
- }
- $returnArr[] = "{$k}={$v}";
- }
- $resStr = implode('&', $returnArr);
- return $resStr;
- }
- }
|