config_for_gionee.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. /**
  3. * 金立 配置信息
  4. */
  5. class config_for_gionee
  6. {
  7. // /**
  8. // * @var string cp在平台注册的应用ID
  9. // */
  10. // public $appid;
  11. /**
  12. * @var string 与平台约定的秘钥
  13. */
  14. public $appkey = '6132256582774767902D65B5637EF31C';
  15. /**
  16. * @var string secretkey 密钥
  17. */
  18. public $app_secret = '9187B069633740FF9A62AF914D63D8A4';
  19. /**
  20. * @var string 支付私钥
  21. */
  22. public $pay_priKey = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAL/wCIlhQZKTpriajAI6LIIFgd3j4houusaSpkufwxj1vLeiq7g/oktGYrPAamTORoK3xeuWwPTnsT4n/vGBRcjxPSzMbnHty4oE15gjRuKbLVHethrDXo2VNCdb8o/y4iVNnpQGAa1zvc5WMuO8SVIn2uwNcnTncuF/edgKaRz1AgMBAAECgYBSXFOtb7hNh2IxMNAHXKMgn/BcIJ8zEP5Am0kUhleXbEswmXMKOvQPTQKpk1WUMBd9nBInx6bA8HLT8yGozAn/MoOhMNx9vkqZkQ6pi/B0Lei5+PjFeyeCiynplwzgUWgqqkT9WYzue7jz1EzVCOdelmBHp1YahJjP/yThqPvouQJBAPaYTUiEEqxXvkzkWhv8lZrMfndAQxhRFFdaTnTNZBrJEw7CrJPSnxGl0sPRPLsDMK5Yb2cAXJQ3TQuxJD1DukMCQQDHQhHZ+uE5VEN7uKq3Eqk2qVMf67AyiRkDxLiT62h8reO+EfZaJhkscdEtCedUnn2xO0gOMBkjVnvIdDL+DWRnAkBDkQWT+gQ3zq7o2KTMCFBhouh/+k6oCgc9zBO1M1XbdP7Qy4yH0G0fY8U1PE6cm0oqazbTDSlQvzpQGtBoLPeLAkEAqRULiOk2zSsPyKC/XHJdXKD6hI+/CGMF8wivh/WuyH3WT6d2YLELk4dRdOJ+hnOnPQmM710pN69fgo3351T96QJBAMBw2p8uu1JROk4wrxiguiAXr6cs25fTVyOeZdAbCx+P81JyYYx9rbg/2QjN6qu24rsUfrSrDVGGeqMyNaJrzPk=';
  23. /**
  24. * @var string 支付公钥
  25. */
  26. public $pay_pubKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJ92Q9HyPyjEl2dkhRvvOWz2BUIdwmv5iSyU6or3zXxU6Xw3+gRb7IeksGnS4W2xNJohRf4QV4ETmpVsYoCmCO+K4U5PFybN1kth4pktHUbAxDFN78H3qVTvwVCbG4SUmYJvsbzueEJzK2aXEGkR/w4IKohU1gtA3fUc2wTX/sXwIDAQAB';
  27. /**
  28. * @var string 平台验证登录状态并换取uid的接口地址
  29. */
  30. public $ApiURL_verifySession = "https://id.gionee.com/account/verify.do";
  31. /**
  32. * @var string 平台验证登录状态时的请求方式(get)
  33. */
  34. public $verifySession_method = 'GET';
  35. /**
  36. * @var string 平台创建订单的URL
  37. */
  38. public $ApiURL_pay_createOrder = 'https://pay.gionee.com/amigo/create/order';
  39. public $createOrder_method = 'POST';
  40. /**
  41. * configs for 金立
  42. * @return config_for_gionee Description
  43. */
  44. static function Inst()
  45. {
  46. return new config_for_gionee();
  47. }
  48. /**
  49. * 创建订单的签名方法
  50. */
  51. function pay_sign($post_arr)
  52. {
  53. $private_key = $this->pay_priKey;
  54. ksort($post_arr);
  55. $signature_str = '';
  56. foreach ($post_arr as $key => $value) {
  57. $signature_str .= $value;
  58. }
  59. // 【NOTE】跑通demo后替换成商户自己的private_key
  60. $pem = chunk_split($private_key, 64, "\n");
  61. $pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n";
  62. $private_key_id = openssl_pkey_get_private($pem);
  63. $signature = false;
  64. $r = openssl_sign($signature_str, $signature, $private_key_id);
  65. if ($r) {
  66. $sign = base64_encode($signature);
  67. return $sign;
  68. }
  69. die('gen signature failed!');
  70. }
  71. /**
  72. * 验证支付通知中的签名
  73. * @param array $post_arr
  74. * @return type
  75. */
  76. function notify_rsa_verify($post_arr)
  77. {
  78. $signature = base64_decode(urldecode($post_arr['sign']));
  79. unset($post_arr['ext_info']);
  80. unset($post_arr['sign']);
  81. ksort($post_arr);
  82. $arr = array();
  83. foreach ($post_arr as $key => $val) {
  84. array_push($arr, $key . '=' . $val);
  85. }
  86. $signature_str = join('&', $arr);
  87. $pem = chunk_split($this->pay_pubKey, 64, "\n");
  88. $pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n";
  89. $public_key_id = openssl_pkey_get_public($pem);
  90. return openssl_verify($signature_str, $signature, $public_key_id, 'RSA-SHA1');
  91. }
  92. }