config.huawei.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. /**
  3. * 华为 配置信息
  4. */
  5. class config_for_huawei
  6. {
  7. /**
  8. * @var string 华为给开发者(商)分配的唯一标识
  9. */
  10. public $cpId = '220086000021803768';
  11. /**
  12. * @var string cp在华为后台注册的应用ID
  13. */
  14. public $appid = '100218075';
  15. /**
  16. * @var string 与华为约定的秘钥
  17. */
  18. public $appkey = '715316bfecf0a6ec87fa65d670e67f31';
  19. /**
  20. * @var string 应用包名
  21. */
  22. public $packageName = 'com.loyalsoft.ylsj.huawei';
  23. //
  24. /**
  25. * @var string 支付时开发者的五一标识
  26. */
  27. public $pay_appid = '220086000021803768';
  28. /**
  29. * @var string RSA私钥, 用于开发者APP调用HMS SDK支付接口时对请求参数进行签名
  30. */
  31. public $pay_key = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEA4F5CjdXP4qF5I7fxzegn2og6H+7CdoTuAYz+IpsCdFTBBjWpHEbHH4BqwpIzMqoTyAw12zPf1HEw8RX+rZ/YcQIDAQABAkBll+jU5mrCONFsbf8MeEGLf0GqcecV2W0XwKrWKpA68ciBcPkMgudREmqllTTrhfdfTeJstw6rkXmmSrfFujgBAiEA8v9Q6C1bfpMziJm3HA5+1B8A01+yhMcjiEh1kd2YYvECIQDsX8EGn/v+tijpgnark3+ncmimuUt6YQrXqwfGAEvNgQIgcX/Ft5yv9rAkyvIZcBZpMQUGKrSxOomVVCucFrStX9ECIQDiA/kk5YrmFbXu+cGQ87uHF/17FghW3z2n1LDdIeFZgQIgcvkvphXTECwue8F5X6q+UeScOZYSwb+0pJKi/Kn+7nI=';
  32. /**
  33. * @var string RSA公钥, 用于开发者APP收到HMS SDK返回的支付结果时, 对响应参数进行验签.
  34. */
  35. public $pay_pub = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOBeQo3Vz+KheSO38c3oJ9qIOh/uwnaE7gGM/iKbAnRUwQY1qRxGxx+AasKSMzKqE8gMNdsz39RxMPEV/q2f2HECAwEAAQ==';
  36. /**
  37. *
  38. * @var string 游戏私钥 用于开发者对登录返回结果进行签名并传递给华为游戏服务器
  39. */
  40. public $game_key = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAIuXw1TShvCJTwWiuJEudiQ9l5qr9Fx6TS2umTni/K5ekSvQNiL2Kv0IWXojAV94kfY8tQy1vEyHqXy/gRX0iiARGEP5VcEASRIIa93q6M5oW3p/v6/szQwGKhqjvaxXKHPJ6VTscrqHLblltWbJQhaG6mjOk2YcNnjK7g8tbsWPAgMBAAECgYAzCv9l2MV21v6KNQIANFkGz27MI+xqlF38QkfNHu7+Y535w1zIU/NMKu1s97fczR2ySGh7iUidQ036S5xMBusqWEHSnW5XramfjrH9y4D/QT3BdN4CbG6628BI80VZecLn4bHk9mwRsm5Nx8Kb3KzjSafxgxOpG+gjztqKVSaf4QJBAPDhZD+CeFcwfIW2JWvGDQYFYZb529x2i/Xy7l+xn97RN5ztl9NGXN3/CC5SOJnv7rZO5wxQqYsYfilnCmnCEGMCQQCUWtKSoYiK/+pT5zKa7HU2yGp/O8XZ4va+Ln23I6DMTXmSyrK2HMSSk+tO4puKX0Y2RatuieGeen6CRCHeB3/lAkEA7Ck+fNmwnGLoIrvi0lgZGqcZ98g921bKf7bOKDngcLcUXCHA8Z2RnQDWB3wLDDllA442DifjIYFA59yjI+7k2wJAMJHLftYDrf466V035CCl/1l+BEm9bKgxv/HYlqzDaB+1Pam++IBSmupyj1EBOzwV8I6+oWHiy8+uu1cy/03VQQJBALkVyl34LCMlyfbvN/ERR0GPg+kJ3PnaxxA/FJ3sARf3sqyCpNGLysSzCXCuBdgjkHoF4SjMZgHdIH4SUNByV2c=';
  41. /**
  42. * @var string 游戏公钥 用于开发者验证收到的华为游戏服务器的验签结果.
  43. */
  44. public $game_pub = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCLl8NU0obwiU8ForiRLnYkPZeaq/Rcek0trpk54vyuXpEr0DYi9ir9CFl6IwFfeJH2PLUMtbxMh6l8v4EV9IogERhD+VXBAEkSCGvd6ujOaFt6f7+v7M0MBioao72sVyhzyelU7HK6hy25ZbVmyUIWhupozpNmHDZ4yu4PLW7FjwIDAQAB';
  45. /**
  46. * @var string 华为后台验证登录状态的地址
  47. */
  48. public $verifySession_url = 'https://gss-cn.game.hicloud.com/gameservice/api/gbClientApi';
  49. /**
  50. * @var string 华为后台验证登录状态时的请求方式(POST)
  51. */
  52. public $verifySession_method = 'POST';
  53. /**
  54. * configs for 华为
  55. * @return config_for_huawei Description
  56. */
  57. static function Inst()
  58. {
  59. return new config_for_huawei();
  60. }
  61. function getPubkey()
  62. {
  63. $devPubKey = $this->pay_pub;
  64. $begin_public_key = "-----BEGIN PUBLIC KEY-----\r\n";
  65. $end_public_key = "-----END PUBLIC KEY-----\r\n";
  66. $str = sprintf($begin_public_key);
  67. $raw = strlen($devPubKey) / 64;
  68. $index = 0;
  69. while ($index <= $raw) {
  70. $line = substr($devPubKey, $index * 64, 64) . "\r\n";
  71. if (strlen(trim($line)) > 0) {
  72. $str .= sprintf($line);
  73. }
  74. $index++;
  75. }
  76. sprintf($end_public_key);
  77. }
  78. function getPayPrivKey()
  79. {
  80. $priKey = $this->pay_key;
  81. if (strpos($priKey, "BEGIN RSA PRIVATE KEY") === false) {
  82. $priKey = wordwrap($priKey, 64, "\n", true);
  83. $priKey = "-----BEGIN PRIVATE KEY-----\n" . $priKey . "\n-----END PRIVATE KEY-----";
  84. }
  85. return $priKey;
  86. }
  87. /**
  88. * 创建支付签名
  89. * @param array $data
  90. */
  91. function paySign($data)
  92. {
  93. unset($data['sign']);
  94. ksort($data); # 除sign以外的所有字段, 字典排序
  95. $arr = array();
  96. foreach ($data as $key => $val) {
  97. if ($val) {
  98. array_push($arr, $key . '=' . urldecode($val)); # 排序后的数组, 需要对value进行urldecode
  99. }
  100. }
  101. $query_string = join('&', $arr); # 重新拼接为字符串
  102. $key = openssl_pkey_get_private($this->getPayPrivKey());
  103. $str = loyalsoft\CommUtil::str2UTF8($query_string);
  104. \loyalsoft\CLog::warn("待签名串:$str");
  105. $r = openssl_sign($str, $sign, $key, 'RSA-SHA256'); # 签名算法
  106. if ($r) {
  107. return base64_encode($sign);
  108. }
  109. die("gen signature failed!");
  110. }
  111. }
  112. //include_once __DIR__ . '/../../../main.php'; # 导入game utils
  113. //$sign = 'S6mnrL/LC1zUlk4IGEJrzDCFSGReHRyEapQ94fKyQ9KoFXdgbdP2KiRiUwKkbzW2C+Wxd/PtwQIWfLF911dyyQ==';
  114. //$str = 'amount=0.01&applicationID=100218075&country=CN&currency=CNY&merchantId=220086000021803768&productDesc=立刻购买尊享9折优惠&productName=60钻石&requestId=1803200947000321&sdkChannel=1&url=http://115.159.121.129/ylsj/Gameserver/Amfphp/service_call/pay/huawei/notify.php&urlver=2';
  115. //\loyalsoft\echoLine(config_for_huawei::Inst()->test($str));
  116. //\loyalsoft\echoLine($sign);