1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
namespace App\Http\InterfaceClass\SdkImpl;
use App\Http\InterfaceClass\ISdkFactory;
use Illuminate\Support\Facades\Log;
use WpOrg\Requests\Requests;
class Jiuzi implements ISdkFactory
{
// 登录接口
protected $login_url = "https://h5sdk.snkad.com.cn/auth/checktoken";
/**
* 登录
* @param $verInfo 渠道表信息
* @param $gameInfo 游戏表信息
* @param $request request 参数
* @return array
*/
public function login($verInfo,$gameInfo, $request): array
{
$ver_info = json_decode($request['ver_info'],true);
//获取请求参数
$postParam = [
'uid' => $ver_info['unionId'],
'access_token' => $ver_info['access_token'],
'gid' => $verInfo->ver_appid,
'version' => $request['unionId'] ?? 1,
];
//请求url,获取返回值
//$response = Requests::post($this->login_url,[],$postParam)->body;
$response = '{"message":"ok","statusCode":200,"data":{"partnerid":"own","user_id":34,"openid":"qwewqqwe","age":0}}';
//是否验证成功
$response_arr = json_decode($response,true);
if ($response_arr['statusCode'] === 200) {
// 用类标识_渠道userid 标识为融合账号
$uname = $verInfo->ver."_".$response_arr['data']['openid'];
return ['ver_user_id' => $response_arr['data']['openid'],'uname'=>$uname];
} else {
return [];
}
}
/**
* 支付验签,返回订单号等信息
* @param $gameInfo
* @param array $params
* @return array
*/
public function pay($verInfo,$gameInfo, $request): array
{
// 先验签
$str = "order_num={$request['order_num']}&partnerid={$request['partnerid']}&user_id={$request['user_id']}&gid={$gameInfo->ver_appid}&sid={$request['sid']}&money={$request['money']}&order_ip={$request['order_ip']}&is_test={$request['is_test']}&game_other={{$request['game_other']}}&payts={{$request['payts']}}&pay_key={$gameInfo->ver_paykey}";
Log::info("签名明文:".$str);
$mySign = strtolower(md5($str));
if($mySign !== $request['sign']){
Log::info("签名失败,我方签名:{$mySign},渠道签名:{$request['sign']},渠道request参数:".var_export(request()->post(), true));
return $this->result(300,'发货失败',$request['order_num']);
}
Log::info("签名通过");
// 通过则返回订单号,金额[单位元]
return [
'order_id' => $request['order_num'],
'money' => $request['money'],
'result' => $this->result('200','发货成功',$request['order_num'])
];
}
/**
* 按渠道的格式返回
* @param $statusCode
* @param $message
* @param $order_id
* @return array
*/
protected function result($statusCode,$message,$order_id){
return [
'message' => $message,
'statusCode' => $statusCode,
'data' => [
'order_num' => $order_id
],
];
}
}