config_lenovo.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * 联想 配置信息
  4. */
  5. class config_for_Lenovo
  6. {
  7. /**
  8. * @var string cp在1sdk后台注册的应用ID
  9. */
  10. public $appid = '1803190977289.app.ln';
  11. /**
  12. * @var string 与1sdk约定的秘钥
  13. */
  14. public $appkey = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKKRO2BdupDym4eOz6urAy5l3/sE
  15. xEvfqSX7lB/S/YHMdrN5qYhGANG46r9ucahqpEaAaqHCYR5M+U5c1h1BgL70kyuWfYhS31GfqWI5
  16. c8TZx+8z/LwnrzuC41LGUanDrgR/F4VJfNKWAXQCjieRZef8Y0OCskxYGdIDzvMfnwixAgMBAAEC
  17. gYBC4+tAjZB0j767GmIMysL2VmjAyodSiOb6f/fE2HYC8HRvCMJfFh7ELIg62GDf4XFSqQg3Itn/
  18. M8DpI33eb9NfFu2QGEX0zlBCzSaCeN6toZkhx8Noi0UXZKt31qlATDThqiF7DEoc0Dtqm4H6Nsr9
  19. ltQoJYT8068G96sIRa1XgQJBANgsYB72WDaYEL35IbE8fO94leAPNVwS+oQkdbKx/DDT0I4UfUFX
  20. LmuR4BWEGoJhNbjc6YezEyM944imr0+Lb6kCQQDAhJNTBA3pnHmU/PGSUzSyq9Im3FcreoIHBAJK
  21. KaWCZgYAqkaJ7iayflxS12CwQy2y+uvvhKQTxDEZc2peT5XJAkEAkBnsrVcb8LCnoGu9eO9QfTXN
  22. +sFImasREhtX1hntegMIqF2iLXdXO1/Pl6grH7R7YlLo3YuS+1AbKBGtFYJmmQJBAKZe6+JGEq/c
  23. JcX3gdxuQ5BUpFwo9rwANvZRJJlqvDmgaXeRrzvrr015ndeJgWlR5OBTsClhe1oJplTURQwTwuEC
  24. QBbmKwZzvmdtyy6iZVelzFRCYlMiq2VdI1uKLgN3k0LZKQSKZugrR7/wR7eRN6CshBT40z6l11is
  25. umUsSFPuJG0=';
  26. /**
  27. * @var string 联想后台验证登录状态并换取uid的接口地址
  28. */
  29. public $verifySession_url = 'http://passport.lenovo.com/interserver/authen/1.2/getaccountid';
  30. /**
  31. * @var string 联想后台验证登录状态时的请求方式(get)
  32. */
  33. public $verifySession_method = 'GET';
  34. /**
  35. * @var array 联想商品id到游戏内商品id的映射
  36. */
  37. private $itemMap = array(
  38. '198342' => '801801',
  39. '198343' => '801802',
  40. '198344' => '801803',
  41. '198345' => '801804',
  42. '198346' => '801805',
  43. '198347' => '801806'
  44. );
  45. function ProductId($lenovoShopItemID)
  46. {
  47. return $this->itemMap[$lenovoShopItemID];
  48. }
  49. /**
  50. * configs for 联想
  51. * @return config_for_Lenovo Description
  52. */
  53. static function Inst()
  54. {
  55. return new config_for_Lenovo();
  56. }
  57. /**
  58. * 联想 依据(登录校验接口)错误码查询详细信息
  59. * @param type $errcode
  60. * @return string
  61. */
  62. public function ErrMsg($errcode)
  63. {
  64. // <editor-fold defaultstate="collapsed" desc=" 错误码对应的信息 ">
  65. $errmsg = array(
  66. "USS-0100" => "无效的用户名,需要检查用户名格式是否正确。",
  67. "USS-0101" => "口令错误。",
  68. "USS-0103" => "无此用户,请检查用户名是否正确",
  69. "USS-0104" => "用户名已存在,不允许重复注册",
  70. "USS-0105" => "帐号必须激活后才能登录",
  71. "USS-0108" => "该用户已激活,请勿重复操作。",
  72. "USS-0110" => "无效的 IMEI,SN 或 MAC",
  73. "USS-0111" => "帐号已被 disable",
  74. "USS-0113" => "口令类型错误",
  75. "USS-0121" => "无效的 realm",
  76. "USS-0122" => "此服务不支持该 realm",
  77. "USS-0126" => "Ticket 值解析失败。",
  78. "USS-0135" => "无效的请求数据",
  79. "USS-0151" => "账号已锁定",
  80. "USS-0160" => "需要使用验证码(在申请帐号时,如果服务端检测到异常行为,会返回该错误给客户端,客户端需要使用图形验证码)",
  81. "USS-0170" => "密码格式错误。(密码的限制规则是: 4~20 位字符,包括英文大小写字母、英文数字、减号和下划线)",
  82. "USS-0181" => "校验码错误或失效,针对手机账号对账号校验时可能产生",
  83. "USS-0190" => "(针对短信注册,服务端不支持该运营商的号码。) 尚未开通,请尝试其他方式注册。",
  84. "USS-0540" => "无效的 lpsust",
  85. "USS-0542" => "未提供 lpsust 信息",
  86. "USS-0202" => "用户登录已失效",
  87. "USS-0x0000" => "后台快捷登录使用次数达到 10 次",
  88. "USS-0x0001" => "后台快捷登录失败",
  89. "USS-0x0002" => "后台快捷登录检测到未安装联想通行证");
  90. // </editor-fold>
  91. if (array_key_exists($errcode, $errmsg)) {
  92. return $errmsg[$errcode];
  93. }
  94. return "未知错误!";
  95. }
  96. /**
  97. * @var type 私钥
  98. */
  99. private $priKey = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKKRO2BdupDym4eOz6urAy5l3/sExEvfqSX7lB/S/YHMdrN5qYhGANG46r9ucahqpEaAaqHCYR5M+U5c1h1BgL70kyuWfYhS31GfqWI5c8TZx+8z/LwnrzuC41LGUanDrgR/F4VJfNKWAXQCjieRZef8Y0OCskxYGdIDzvMfnwixAgMBAAECgYBC4+tAjZB0j767GmIMysL2VmjAyodSiOb6f/fE2HYC8HRvCMJfFh7ELIg62GDf4XFSqQg3Itn/M8DpI33eb9NfFu2QGEX0zlBCzSaCeN6toZkhx8Noi0UXZKt31qlATDThqiF7DEoc0Dtqm4H6Nsr9
  100. ltQoJYT8068G96sIRa1XgQJBANgsYB72WDaYEL35IbE8fO94leAPNVwS+oQkdbKx/DDT0I4UfUFXLmuR4BWEGoJhNbjc6YezEyM944imr0+Lb6kCQQDAhJNTBA3pnHmU/PGSUzSyq9Im3FcreoIHBAJKKaWCZgYAqkaJ7iayflxS12CwQy2y+uvvhKQTxDEZc2peT5XJAkEAkBnsrVcb8LCnoGu9eO9QfTXN+sFImasREhtX1hntegMIqF2iLXdXO1/Pl6grH7R7YlLo3YuS+1AbKBGtFYJmmQJBAKZe6+JGEq/cJcX3gdxuQ5BUpFwo9rwANvZRJJlqvDmgaXeRrzvrr015ndeJgWlR5OBTsClhe1oJplTURQwTwuECQBbmKwZzvmdtyy6iZVelzFRCYlMiq2VdI1uKLgN3k0LZKQSKZugrR7/wR7eRN6CshBT40z6l11isumUsSFPuJG0=';
  101. /**
  102. * 联想 - RSA签名
  103. * @param $data 待签名数据
  104. * return 签名结果
  105. */
  106. function sign($data)
  107. {
  108. $priKey = $this->priKey;
  109. if (strpos($priKey, "BEGIN RSA PRIVATE KEY") === false) {
  110. $priKey = wordwrap($priKey, 64, "\n", true);
  111. $priKey = "-----BEGIN PRIVATE KEY-----\n" . $priKey . "\n-----END PRIVATE KEY-----";
  112. }
  113. $res = openssl_get_privatekey($priKey);
  114. openssl_sign($data, $sign, $res);
  115. openssl_free_key($res);
  116. $sign = base64_encode($sign);
  117. return $sign;
  118. }
  119. /**
  120. * 联想 - RSA验签
  121. * @param $data 待签名数据
  122. * @param $priKey 密钥
  123. * @param $sign 要校对的的签名结果
  124. * return 验证结果
  125. */
  126. function verify($data, $sign)
  127. {
  128. $selfSign = $this->sign($data);
  129. if ($selfSign && $selfSign == $sign) {
  130. return true;
  131. } else {
  132. return false;
  133. }
  134. }
  135. }