main.tea 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import EasySDKKernel;
  2. type @kernel = EasySDKKernel
  3. init(kernel: EasySDKKernel) {
  4. @kernel = kernel;
  5. }
  6. model AlipaySystemOauthTokenResponse {
  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. userId: string(name='user_id'),
  13. accessToken: string(name='access_token'),
  14. expiresIn: long(name='expires_in'),
  15. refreshToken: string(name='refresh_token'),
  16. reExpiresIn: long(name='re_expires_in')
  17. }
  18. api getToken(code: string): AlipaySystemOauthTokenResponse {
  19. var systemParams: map[string]string = {
  20. method = 'alipay.system.oauth.token',
  21. app_id = @kernel.getConfig("appId"),
  22. timestamp = @kernel.getTimestamp(),
  23. format = 'json',
  24. version = '1.0',
  25. alipay_sdk = @kernel.getSdkVersion(),
  26. charset = 'UTF-8',
  27. sign_type = @kernel.getConfig("signType"),
  28. app_cert_sn = @kernel.getMerchantCertSN(),
  29. alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
  30. };
  31. var bizParams: map[string]any = {
  32. };
  33. var textParams: map[string]string = {
  34. grant_type = 'authorization_code',
  35. code = code
  36. };
  37. __request.protocol = @kernel.getConfig("protocol");
  38. __request.method = 'POST';
  39. __request.pathname = '/gateway.do';
  40. __request.headers = {
  41. host = @kernel.getConfig("gatewayHost"),
  42. content-type = 'application/x-www-form-urlencoded;charset=utf-8'
  43. };
  44. __request.query = @kernel.sortMap({
  45. sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")),
  46. ... systemParams,
  47. ... textParams
  48. });
  49. __request.body = @kernel.toUrlEncodedRequestBody(bizParams);
  50. } returns {
  51. var respMap: object = @kernel.readAsJson(__response, "alipay.system.oauth.token");
  52. if (@kernel.isCertMode()) {
  53. if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) {
  54. return @kernel.toRespModel(respMap);
  55. }
  56. } else {
  57. if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) {
  58. return @kernel.toRespModel(respMap);
  59. }
  60. }
  61. throw {
  62. message = '验签失败,请检查支付宝公钥设置是否正确。'
  63. }
  64. } runtime {
  65. connectTimeout = 15000,
  66. readTimeout = 15000,
  67. retry = {
  68. maxAttempts = 0
  69. }
  70. }
  71. api refreshToken(refreshToken: string): AlipaySystemOauthTokenResponse {
  72. var systemParams: map[string]string = {
  73. method = 'alipay.system.oauth.token',
  74. app_id = @kernel.getConfig("appId"),
  75. timestamp = @kernel.getTimestamp(),
  76. format = 'json',
  77. version = '1.0',
  78. alipay_sdk = @kernel.getSdkVersion(),
  79. charset = 'UTF-8',
  80. sign_type = @kernel.getConfig("signType"),
  81. app_cert_sn = @kernel.getMerchantCertSN(),
  82. alipay_root_cert_sn = @kernel.getAlipayRootCertSN()
  83. };
  84. var bizParams: map[string]any = {
  85. };
  86. var textParams: map[string]string = {
  87. grant_type = 'refresh_token',
  88. refresh_token = refreshToken
  89. };
  90. __request.protocol = @kernel.getConfig("protocol");
  91. __request.method = 'POST';
  92. __request.pathname = '/gateway.do';
  93. __request.headers = {
  94. host = @kernel.getConfig("gatewayHost"),
  95. content-type = 'application/x-www-form-urlencoded;charset=utf-8'
  96. };
  97. __request.query = @kernel.sortMap({
  98. sign = @kernel.sign(systemParams, bizParams, textParams, @kernel.getConfig("merchantPrivateKey")),
  99. ... systemParams,
  100. ... textParams
  101. });
  102. __request.body = @kernel.toUrlEncodedRequestBody(bizParams);
  103. } returns {
  104. var respMap: object = @kernel.readAsJson(__response, "alipay.system.oauth.token");
  105. if (@kernel.isCertMode()) {
  106. if (@kernel.verify(respMap, @kernel.extractAlipayPublicKey(@kernel.getAlipayCertSN(respMap)))) {
  107. return @kernel.toRespModel(respMap);
  108. }
  109. } else {
  110. if (@kernel.verify(respMap, @kernel.getConfig("alipayPublicKey"))) {
  111. return @kernel.toRespModel(respMap);
  112. }
  113. }
  114. throw {
  115. message = '验签失败,请检查支付宝公钥设置是否正确。'
  116. }
  117. } runtime {
  118. connectTimeout = 15000,
  119. readTimeout = 15000,
  120. retry = {
  121. maxAttempts = 0
  122. }
  123. }