getSignData($responseData['data']).ConfigHelper::getStrVal("sdkserver.game.apikey");//组装签名原文 $sign = md5($signSource);//MD5加密签名 LoggerHelper::info("[PayCallbackService.php]"."[签名原文]:".$signSource); LoggerHelper::info("[PayCallbackService.php]"."[签名结果]:".$sign); if($sign == $responseData['sign']){ //游戏需根据orderStatus参数的值判断是否给玩家过账虚拟货币。(S为充值成功、F为充值失败,避免假卡、无效卡充值成功) if ("S"==$responseData['data']['orderStatus']) { /** * 游戏服务器根据$responseData['data']['cpOrderId']订单ID查询出服务端保存的订单信息 */ //定额充值的游戏需要校验amount值避免玩家窜改了客户端下单时的金额,影响游戏收支平衡 if ("30.0"==$responseData['data']['amount']||"88"==$responseData['data']['amount']) { //根据订单ID获取查询出原始下单信息中的accountId $orderAccountId = "abcdefghijkl"; //游戏需根据accountId参数判断用户下单账号与充值账号一致后再下发虚拟货币 if($orderAccountId == $responseData['data']['accountId']){ /** * 游戏服务器需要处理给玩家充值代码,由游戏合作商开发完成。 */ LoggerHelper::info("[PayCallbackService.php]"."[处理结果]:"."SUCCESS"); echo 'SUCCESS';//返回给sdk server的响应内容 return; } } } } LoggerHelper::info("[PayCallbackService.php]"."[处理结果]:"."FAILURE"); echo 'FAILURE';//返回给sdk server的响应内容 ,对于重复多次通知失败的订单,请参考文档中通知机制。 return; } else{ LoggerHelper::info("[PayCallbackService.php]"."接口返回异常"); throw new exception('接口返回异常'); } } catch (SDKException $e){ LoggerHelper::info("[PayCallbackService.php]".$e->getMessage()); throw new exception($e->getMessage()); }