200, 'msg' => 'success', 'param' => []]; } // ## 回调 - 效验 public function paySign($data, $polyChannelGame = []) { $param = [ 'pid' => $data['pid'], // 商户ID 'gid' => $data['gid'], // 游戏ID 'sid' => $data['sid'], // 游戏服ID 'uid' => $data['uid'], // 玩家id 'time' => $data['time'], // 时间戳(Unix time) 'orderid' => $data['orderid'], // orderid 'money' => $data['money'], // 充值金额(单位元) 'type' => $data['type'], // 请求类型(固定值:pay) 'other' => $data['other'], // 自定义参数(自定义参数) ]; $getValues = array_values($param); if (empty(array_diff(['pid', 'gid', 'sid', 'uid', 'time', 'orderid', 'money'], $getValues))) { return false; } if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return false; } $sign = $data['sign']; $hadleSign = $this->paySignHandle($param, $channelConfig['pay_key']); if ($sign == $hadleSign) { return true; } return false; } // ## 回调 - 下单参数获取 public function getData($data) { if (!isset($data['other']) || !isset($data['money']) || !isset($data['orderid'])) { return false; } return [ 'orderid' => $data['other'], // 我方聚合订单 'amount' => $data['money'], // 充值金额(单位:元) 'sub_orderid' => $data['orderid'], // 渠道订单 ]; } // ## 回调 - 成功返回 public function getSuccess($msg = '') { echo json_encode(["code" => 1, "msg" => "成功"], JSON_UNESCAPED_UNICODE); exit(); } // ## 回调 - 失败返回 public function getFail($msg = '') { echo json_encode(["code" => 5, "msg" => "签名错误"], JSON_UNESCAPED_UNICODE); exit(); } // 回调签名判断 private function paySignHandle($param, $pay_key) { // MD5(pid#gid#sid#uid#time#orderid #money#pkey) return md5($param['pid'] . '#' . $param['gid'] . '#' . $param['sid'] . '#' . $param['uid'] . '#' . $param['time'] . '#' . $param['orderid'] . '#' . $param['money'] . '#' . $pay_key); } }