index.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const httpRequest_1 = __importDefault(require("../utils/httpRequest"));
  7. const utils_1 = require("../utils/utils");
  8. const code_1 = require("../const/code");
  9. function validateCrossAccount(config, opts = {}) {
  10. let getCrossAccountInfo = opts.getCrossAccountInfo || config.getCrossAccountInfo;
  11. if (getCrossAccountInfo) {
  12. throw utils_1.E(Object.assign({}, code_1.ERROR.INVALID_PARAM, { message: 'invalid config: getCrossAccountInfo' }));
  13. }
  14. }
  15. async function callWxOpenApi(cloudbase, { apiName, apiOptions, cgiName, requestData }, opts) {
  16. let transformRequestData;
  17. try {
  18. transformRequestData = requestData ? JSON.stringify(requestData) : '';
  19. }
  20. catch (e) {
  21. throw utils_1.E(Object.assign({}, e, { code: code_1.ERROR.INVALID_PARAM.code, message: '对象出现了循环引用' }));
  22. }
  23. validateCrossAccount(cloudbase.config, opts);
  24. const params = {
  25. action: 'wx.api',
  26. apiName,
  27. apiOptions,
  28. cgiName,
  29. requestData: transformRequestData
  30. };
  31. return httpRequest_1.default({
  32. config: cloudbase.config,
  33. params,
  34. method: 'post',
  35. opts,
  36. headers: {
  37. 'content-type': 'application/json'
  38. }
  39. }).then(res => {
  40. if (res.code) {
  41. return res;
  42. }
  43. let result;
  44. try {
  45. result = JSON.parse(res.data.responseData);
  46. }
  47. catch (e) {
  48. result = res.data.responseData;
  49. }
  50. return {
  51. result,
  52. requestId: res.requestId
  53. };
  54. // }
  55. });
  56. }
  57. exports.callWxOpenApi = callWxOpenApi;
  58. /**
  59. * 调用wxopenAPi
  60. * @param {String} apiName 接口名
  61. * @param {Buffer} requestData
  62. * @return {Promise} 正常内容为buffer,报错为json {code:'', message:'', resquestId:''}
  63. */
  64. async function callCompatibleWxOpenApi(cloudbase, { apiName, apiOptions, cgiName, requestData }, opts) {
  65. validateCrossAccount(cloudbase.config, opts);
  66. const params = {
  67. action: 'wx.openApi',
  68. apiName,
  69. apiOptions,
  70. cgiName,
  71. requestData
  72. };
  73. return httpRequest_1.default({
  74. config: cloudbase.config,
  75. method: 'post',
  76. headers: { 'content-type': 'multipart/form-data' },
  77. params,
  78. isFormData: true,
  79. opts
  80. }).then(res => res);
  81. }
  82. exports.callCompatibleWxOpenApi = callCompatibleWxOpenApi;
  83. /**
  84. * wx.wxPayApi 微信支付用
  85. * @param {String} apiName 接口名
  86. * @param {Buffer} requestData
  87. * @return {Promise} 正常内容为buffer,报错为json {code:'', message:'', resquestId:''}
  88. */
  89. async function callWxPayApi(cloudbase, { apiName, apiOptions, cgiName, requestData }, opts) {
  90. validateCrossAccount(cloudbase.config, opts);
  91. const params = {
  92. action: 'wx.wxPayApi',
  93. apiName,
  94. apiOptions,
  95. cgiName,
  96. requestData
  97. };
  98. return httpRequest_1.default({
  99. config: cloudbase.config,
  100. method: 'post',
  101. headers: { 'content-type': 'multipart/form-data' },
  102. params,
  103. isFormData: true,
  104. opts
  105. });
  106. }
  107. exports.callWxPayApi = callWxPayApi;
  108. /**
  109. * wx.wxCallContainerApi
  110. * @param {String} apiName 接口名
  111. * @param {Buffer} requestData
  112. * @return {Promise} 正常内容为buffer,报错为json {code:'', message:'', resquestId:''}
  113. */
  114. async function wxCallContainerApi(cloudbase, { apiName, apiOptions, cgiName, requestData }, opts) {
  115. validateCrossAccount(cloudbase.config, opts);
  116. const params = {
  117. action: 'wx.wxCallContainerApi',
  118. apiName,
  119. apiOptions,
  120. cgiName,
  121. requestData
  122. };
  123. return httpRequest_1.default({
  124. config: cloudbase.config,
  125. method: 'post',
  126. headers: { 'content-type': 'multipart/form-data' },
  127. params,
  128. isFormData: true,
  129. opts
  130. });
  131. }
  132. exports.wxCallContainerApi = wxCallContainerApi;