WxPay.Config.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * 配置账号信息
  4. */
  5. class WxPayConfig {
  6. /**
  7. * @var bool 是否沙箱
  8. */
  9. const Sandbox = false;
  10. /**
  11. * @var string 注册的应用名称
  12. */
  13. const APPNAME = "言灵世界";
  14. //=======【基本信息设置】=====================================
  15. //
  16. /**
  17. * TODO: 修改这里配置为您自己申请的商户信息
  18. * 微信公众号信息配置
  19. *
  20. * APPID:绑定支付的APPID(必须配置,开户邮件中可查看)
  21. *
  22. * MCHID:商户号(必须配置,开户邮件中可查看)
  23. *
  24. * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)
  25. * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert
  26. *
  27. * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置),
  28. * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN
  29. * @var string
  30. */
  31. const APPID = 'wxac5f9f9f36131eb0'; // jzhj (开平&支付平台的唯一appid)
  32. const MCHID = '1494582952'; // 商户号
  33. const KEY = 'e5aa9eb1de292bfc64588de9c13121b9'; // v2秘钥
  34. const APPSECRET = '153004f0ddd6775cb4bf9a3086915605'; // 开放平台 appsecret 更新 2023年1月12日
  35. //=======【证书路径设置】=====================================
  36. /**
  37. * TODO:设置商户证书路径
  38. * 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要,可登录商户平台下载,
  39. * API证书下载地址:https://pay.weixin.qq.com/index.php/account/api_cert,下载之前需要安装商户操作证书)
  40. * @var path
  41. */
  42. const SSLCERT_PATH = '../cert/apiclient_cert.pem';
  43. const SSLKEY_PATH = '../cert/apiclient_key.pem';
  44. //=======【curl代理设置】===================================
  45. /**
  46. * TODO:这里设置代理机器,只有需要代理的时候才设置,不需要代理,请设置为0.0.0.0和0
  47. * 本例程通过curl使用HTTP POST方法,此处可修改代理服务器,
  48. * 默认CURL_PROXY_HOST=0.0.0.0和CURL_PROXY_PORT=0,此时不开启代理(如有需要才设置)
  49. * @var unknown_type
  50. */
  51. const CURL_PROXY_HOST = "0.0.0.0"; //"10.152.18.220";
  52. const CURL_PROXY_PORT = 0; //8080;
  53. //=======【上报信息配置】===================================
  54. /**
  55. * TODO:接口调用上报等级,默认紧错误上报(注意:上报超时间为【1s】,上报无论成败【永不抛出异常】,
  56. * 不会影响接口调用流程),开启上报之后,方便微信监控请求调用的质量,建议至少
  57. * 开启错误上报。
  58. * 上报等级,0.关闭上报; 1.仅错误出错上报; 2.全量上报
  59. * @var int
  60. */
  61. const REPORT_LEVENL = 1;
  62. /**
  63. * 返回微信payApi基础url,(sandbox为true时返回仿真测试url)
  64. * @return string
  65. */
  66. static function Url() {
  67. return "https://api.mch.weixin.qq.com/" . (self::Sandbox ? "sandboxnew/" : "");
  68. }
  69. /**
  70. * 格式化参数格式化成url参数
  71. */
  72. static function ToUrlParams($values) {
  73. $buff = "";
  74. foreach ($values as $k => $v) {
  75. if ($k != "sign" && $v != "" && !is_array($v)) {
  76. $buff .= $k . "=" . $v . "&";
  77. }
  78. }
  79. $buff = trim($buff, "&");
  80. return $buff;
  81. }
  82. /**
  83. * 生成签名
  84. * @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
  85. */
  86. static function MakeSign($values) {
  87. //签名步骤一:按字典序排序参数
  88. ksort($values);
  89. $string = self::ToUrlParams($values);
  90. //签名步骤二:在string后加入KEY
  91. $string = $string . "&key=" . self::KEY;
  92. //签名步骤三:MD5加密
  93. $string = md5($string);
  94. //签名步骤四:所有字符转为大写
  95. $result = strtoupper($string);
  96. return $result;
  97. }
  98. }