main.tea 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import EasySDKKernel;
  2. type @kernel = EasySDKKernel
  3. init(kernel: EasySDKKernel) {
  4. @kernel = kernel;
  5. }
  6. model AlipayOpenApiGenericResponse {
  7. httpBody: string(name='http_body', description='响应原始字符串'),
  8. code: string(name='code'),
  9. msg: string(name='msg'),
  10. subCode: string(name='sub_code'),
  11. subMsg: string(name='sub_msg')
  12. }
  13. model AlipayOpenApiGenericSDKResponse {
  14. body: string(name='body', description='订单信息,字符串形式')
  15. }
  16. api execute(method: string, textParams: map[string]string, bizParams: map[string]any): AlipayOpenApiGenericResponse {
  17. var systemParams: map[string]string = {
  18. method = method,
  19. app_id = @kernel.getConfig("appId"),
  20. timestamp = @kernel.getTimestamp(),
  21. format = 'json',
  22. version = '1.0',
  23. alipay_sdk = @kernel.getSdkVersion(),
  24. charset = 'UTF-8',
  25. sign_type = @kernel.getConfig("signType"),
  26. app_cert_sn = @kernel.getMerchantCertSN(),
  27. alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
  28. };
  29. __request.protocol = @kernel.getConfig("protocol");
  30. __request.method = 'POST';
  31. __request.pathname = '/gateway.do';
  32. __request.headers = {
  33. host = @kernel.getConfig("gatewayHost"),
  34. content-type = 'application/x-www-form-urlencoded;charset=utf-8'
  35. };
  36. __request.query = @kernel.sortMap({
  37. sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")),
  38. ... systemParams,
  39. ... textParams
  40. });
  41. __request.body = @kernel.toUrlEncodedRequestBody(bizParams);
  42. } returns {
  43. var respMap: map[string]any = @kernel.readAsJson(__response, method);
  44. if (@kernel.isCertMode()) {
  45. if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) {
  46. return @kernel.toRespModel(respMap);
  47. }
  48. } else {
  49. if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) {
  50. return @kernel.toRespModel(respMap);
  51. }
  52. }
  53. throw {
  54. message = '验签失败,请检查支付宝公钥设置是否正确。'
  55. }
  56. } runtime {
  57. ignoreSSL = @kernel.getConfig("ignoreSSL"),
  58. httpProxy = @kernel.getConfig("httpProxy"),
  59. connectTimeout = 15000,
  60. readTimeout = 15000,
  61. retry = {
  62. maxAttempts = 0
  63. }
  64. }
  65. api fileExecute(method: string, textParams: map[string]string, bizParams: map[string]any, fileParams: map[string]string): AlipayOpenApiGenericResponse {
  66. var systemParams: map[string]string = {
  67. method = method,
  68. app_id = @kernel.getConfig("appId"),
  69. timestamp = @kernel.getTimestamp(),
  70. format = 'json',
  71. version = '1.0',
  72. alipay_sdk = @kernel.getSdkVersion(),
  73. charset = 'UTF-8',
  74. sign_type = @kernel.getConfig("signType"),
  75. app_cert_sn = @kernel.getMerchantCertSN(),
  76. alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
  77. };
  78. var boundary = @kernel.getRandomBoundary();
  79. __request.protocol = @kernel.getConfig("protocol");
  80. __request.method = 'POST';
  81. __request.pathname = '/gateway.do';
  82. __request.headers = {
  83. host = @kernel.getConfig("gatewayHost"),
  84. content-type = @kernel.concatStr('multipart/form-data;charset=utf-8;boundary=', boundary)
  85. };
  86. __request.query = @kernel.sortMap({
  87. sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")),
  88. ... systemParams,
  89. ... textParams
  90. });
  91. __request.body = @kernel.toMultipartRequestBody(textParams, fileParams, boundary);
  92. } returns {
  93. var respMap: map[string]any = @kernel.readAsJson(__response, method);
  94. if (@kernel.isCertMode()) {
  95. if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) {
  96. return @kernel.toRespModel(respMap);
  97. }
  98. } else {
  99. if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) {
  100. return @kernel.toRespModel(respMap);
  101. }
  102. }
  103. throw {
  104. message = '验签失败,请检查支付宝公钥设置是否正确。'
  105. }
  106. } runtime {
  107. ignoreSSL = @kernel.getConfig("ignoreSSL"),
  108. httpProxy = @kernel.getConfig("httpProxy"),
  109. connectTimeout = 100000,
  110. readTimeout = 100000,
  111. retry = {
  112. maxAttempts = 0
  113. }
  114. }
  115. api sdkExecute(method: string, textParams: map[string]string, bizParams: map[string]any): AlipayOpenApiGenericSDKResponse {
  116. var systemParams: map[string]string = {
  117. method = method,
  118. app_id = @kernel.getConfig("appId"),
  119. timestamp = @kernel.getTimestamp(),
  120. format = 'json',
  121. version = '1.0',
  122. alipay_sdk = @kernel.getSdkVersion(),
  123. charset = 'UTF-8',
  124. sign_type = @kernel.getConfig("signType"),
  125. app_cert_sn = @kernel.getMerchantCertSN(),
  126. alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
  127. };
  128. var sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig('merchantPrivateKey'));
  129. var response: map[string]string = {
  130. body = @kernel.generateOrderString(systemParams, bizParams, textParams, sign)
  131. };
  132. return response;
  133. }