【问题标题】:Method not found - Using the GoCardless Java library with ColdFusion未找到方法 - 将 GoCardless Java 库与 ColdFusion 结合使用
【发布时间】:2019-09-05 09:16:24
【问题描述】:

我正在尝试使用他们的 Java 库在 ColdFusion 中实现 GoCardless 订阅(根据此处的文档 https://gocardless.com/docs/java/merchant_client_guide#installation-and-setup)。我对将 Java 与 ColdFusion 结合使用非常陌生,但出现以下错误:

未找到 newSubscriptionUrl 方法 - 没有具有指定方法名称和参数类型的方法,或者 newSubscriptionUrl 方法被 ColdFusion 无法可靠破译的参数类型重载。 ColdFusion 找到 0 个与提供的参数匹配的方法。如果这是一个 Java 对象并且您验证了该方法存在,请使用 javacast 函数来减少歧义。

产生错误的代码如下:

<cfset GoCardless = createobject("java","gocardless.GoCardless")>

<cfset GoCardless.environment = GoCardless.Environment.SANDBOX>

<cfset GoCardless.accountDetails.setAppId("My app ID")>
<cfset GoCardless.accountDetails.setAppSecret("My app secret")>
<cfset GoCardless.accountDetails.setAccessToken("My access token")>
<cfset GoCardless.accountDetails.setMerchantId("My merchant ID")>

<cfset monthlyAmount = 35>
<cfset subscription = createobject("java","gocardless.connect.Subscription").init(
GoCardless.accountDetails.getMerchantId(),
javacast("bigdecimal",monthlyAmount),
1,
"month"
)>

<cfset GoCardless.connect.newSubscriptionUrl(subscription)>

我的第一个想法是订阅对象不是 newSubscriptionUrl 方法的正确类型,但我不认为是这种情况,因为当我转储 GoCardless.connect 时,它显示以下内容:

这表明传递给 newSubscriptionUrl 方法的第一个参数应该是 gocardless.connect.Subscription 类。

当我转储订阅对象时,它表明情况确实如此:

就像我说我是使用 Java 和 ColdFusion 的新手,所以我真的不知道是什么导致了这个问题,也不知道我到目前为止编写的代码是否正确。任何帮助将不胜感激。

谢谢,迈克尔。

【问题讨论】:

  • 上面转储中的 newSubscriptionUrl() 方法签名表明它需要四个参数,一个 Connection 和三个字符串(redirectUri、cancelUri、state)。由于 CF 代码未提供它们,您将收到上述错误。
  • 我会试一试,尽管documentation 中的示例代码显示只传递了一个参数:GoCardless.connect.newSubscriptionUrl(subscription);
  • 事实上,文档将它们描述为“附加参数”。

标签: java coldfusion coldfusion-10


【解决方案1】:

方法的签名是这样的:

newSubscriptionUrl(Subscription, String, String, String)

不管你怎么称呼它:

newSubscriptionUrl(Subscription)

因此出现错误消息。您需要确保按预期调用该方法。

【讨论】:

  • 那么我是否需要提供三个字符串参数,即使文档表明它们是可选的?
  • Java 中没有“可选”参数这样的东西(无论如何,为了这种情况)。 CFDUMP 向您展示了现实……文档很可能已过时。 API 文档在这里:gocardless.github.io/gocardless-java/apidocs/gocardless/connect/….
  • 非常感谢,我刚刚尝试了四个参数,这很有效。
  • 您可能想追问供应商并要求澄清您所指的那些文档。我同意他们仅使用 Subscription 参数显示方法调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2015-06-23
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多