PayApi.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #ifndef __PAY_API__
  2. #define __PAY_API__
  3. /************************************************************************/
  4. /* Copyright (C), 2016-2020, [Jeff], 保留所有权利;
  5. /* 模 块 名:;
  6. /* 描 述:;
  7. /*
  8. /* 版 本:[V];
  9. /* 作 者:[Jeff];
  10. /* 日 期:[3/29/2017];
  11. /*
  12. /*
  13. /* 注 意:;
  14. /*
  15. /* 修改记录:[Jeff];
  16. /* 修改日期:;
  17. /* 修改版本:;
  18. /* 修改内容:;
  19. /************************************************************************/
  20. #include "http_client.h"
  21. #include "json_util.h"
  22. #include <openssl/rsa.h>
  23. #include <openssl/pem.h>
  24. #include <openssl/err.h>
  25. #include <openssl/md5.h>
  26. #include "tinyxml2.h"
  27. #include <time.h>
  28. using namespace tinyxml2;
  29. #ifndef XRSA_KEY_BITS
  30. #define XRSA_KEY_BITS (1024)
  31. #endif
  32. /** STL map default sort order by key **/
  33. typedef map<string, string> StringMap;
  34. extern const string Alipay_default_charset;
  35. extern const string Alipay_default_url;
  36. extern const string Alipay_default_sign_type;
  37. extern const string Alipay_default_version;
  38. extern const string Alipay_appid;
  39. extern const string Alipay_method;
  40. extern const string Alipay_charset;
  41. extern const string Alipay_signtype;
  42. extern const string Alipay_sign;
  43. extern const string Alipay_timestamp;
  44. extern const string Alipay_version;
  45. extern const string Alipay_bizcontenr;
  46. #pragma once
  47. class PayApi
  48. {
  49. public:
  50. PayApi(void);
  51. ~PayApi(void);
  52. // 支付宝公共参数;
  53. public:
  54. // 支付宝分配给开发者的应用ID;
  55. string alipay_appid;
  56. // 支付宝分配给开发者的应用ID;
  57. string alipay_privatekey;
  58. // 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2;
  59. string alipay_signtype;
  60. // 调用的接口版本,固定为:1.0;
  61. string alipay_version;
  62. // 请求使用的编码格式,如utf-8,gbk,gb2312等;
  63. string alipay_charset;
  64. // 要post提交url;
  65. string alipay_url;
  66. // 支付定的公共密钥;
  67. string alipay_PublicKey;
  68. // 微信公共参数;
  69. public:
  70. // 微信公众账号;
  71. string wxpay_appid;
  72. // 微信商户号;
  73. string wxpay_mchid;
  74. // 微信子商户号;
  75. string wxapi_submchid;
  76. // 微信密钥;
  77. string wxpay_privatekey;
  78. public:
  79. static string base64Encode(const unsigned char *bytes, int len);
  80. static bool base64Decode(const string &str, unsigned char *bytes, int &len);
  81. static string rsaSign(const string &content, const string &key);
  82. static bool rsaVerify(const string &content, const string &sign, const string &key);
  83. // 支付宝支付;
  84. public:
  85. void alipay_setCommonParam(
  86. const string &appid,
  87. const string &privatekey,
  88. const string &signtype,
  89. const string &charset,
  90. const string &version,
  91. const string &url,
  92. const string &publickey
  93. );
  94. string buildContent(const StringMap &contentPairs);
  95. string alipay_invoke(const string &method, const JsonMap &contentMap, const StringMap &extendParamMap = StringMap());
  96. JsonMap alipay_Str2JsonMap(string strJson);
  97. string alipay_invoke(const string &method, const string &content, const StringMap &extendParamMap = StringMap());
  98. string analyzeAliResponse(const string &responseStr);
  99. // 微信支付;
  100. public:
  101. void wxpay_setCommonParam(const string &appid, const string &mchid, const string &privatekey);
  102. string wxapi_getSign(StringMap &strMap, string key);
  103. string wxpay_invoke(const string &method, StringMap &extendParamMap, string key);
  104. string analyzeWXRespone(const string &respone);
  105. };
  106. #endif