0

我正在调试当前正在运行的应用Ruby 2.5.8程序ActiveMerchant 1.117.0

我能够成功创建并保存订阅。但是,当我尝试授权保存的卡时,我不断得到reasonCode 102. Cyber​​source 网关端的错误是the subscription () could not be found.

我正在尝试使用该功能进行授权:

  def authorize(token, amount, order_id, line_items)
    response = gateway.authorize(amount, token, order_id: order_id, line_items: line_items)
    if !response.success?
      raise Exceptions::ChargeFailed.new(response.message, response: response)
    end
    response
  end

这个错误会让我相信这里的格式不正确。谁能指出一些有效的 ActiveMerchant Cyber​​Source 示例来授权订阅或指出这里可能有什么问题?

4

1 回答 1

0

经过一番挖掘,令牌分配的逻辑似乎在 ActiveMerchant Cyber​​Source gem 内部发生了变化

原来的逻辑是:

if reference
    _, subscription_id, _ = reference.split(";")
    xml.tag! 'subscriptionID',  subscription_id
end

最新版本转向:

if reference
    subscription_id = reference.split(";")[6]
    xml.tag! 'subscriptionID',  subscription_id
end

我之前使用的应用程序将 Cyber​​Source 配置文件/订阅 ID 格式化为;#{token};. 为了使用这些最新更新,令牌需要格式化为;;;;;;#{token}.

于 2020-12-24T15:54:21.973 回答