问题标签 [braintree-rails]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1978 浏览

ruby-on-rails - 为 Braintree Rails 订阅添加折扣

我正在尝试使用braintree-rails gem 将折扣对象添加到订阅中,但未应用。我猜我的代码一定是错误的,但我找不到一个可行的例子。

当我转储discount时,它已正确加载。订阅创建得很好,但全价。折扣不存在。如何在订阅中添加折扣?

更新:我尝试修改直接查询,但这没有帮助。

更新 2:我还使用上述代码的预期请求针对 API 运行了直接 Braintree 请求,并且它有效。设置和保存之间发生了错误。

更新 3:通过提取BraintreeRails::Subscription对象的属性、使用Braintree::Subscription调用 API 并使用BraintreeRails::Subscription.find将其加载回对象,可以解决问题。但是,这绝对不是最优的,因为它不是很干净,并且需要额外的 API 调用。

0 投票
1 回答
965 浏览

ruby-on-rails - Rails 控制器重定向到另一个控制器中的表单,然后返回保存的模型

我需要在我的 Rails 应用程序中做一些奇怪的事情。一旦用户通过 create 操作创建了 Product 实例,如果他们尚未将其添加到他们的帐户中,我需要将其保存并重定向到 Braintree 付款方式表单,然后才将他们重定向到显示页面产品。

这是产品创建操作:

Braintree 客户控制器的确认方法是这样的:

我想做的事可能吗?

0 投票
0 回答
239 浏览

ruby-on-rails - 在 Spree 和 Ruby on Rails 上覆盖 Braintree 信用卡错误消息

每当用户在结帐期间输入空字符串时,都会闪烁以下错误消息:

我不想向用户展示,而是想展示:

我相信代码在这里:https ://github.com/braintree/braintree_ruby/blob/master/lib/braintree/error_codes.rb

简化代码:

尝试使用以下装饰器但未成功

这是实现这一目标的正确方法吗?Braintree 是否将错误存储在其他地方?

我在 Rails 3 和 Spree 1.3

预先感谢您的帮助!

0 投票
1 回答
504 浏览

ruby-on-rails - Rails ajax 表单:如何在发送表单之前修复字段

在 Rails 4.1.8 中

我正在处理付款表格(Braintree 付款),我希望它可以通过 Ajax 工作。我不能使用标准的 Braintree 表单设置,因为它不提供 onSuccess 和 onError 方法。但我可以使用一个特殊的 javascript 函数来查看字段,与 Braintree 服务器对话并返回一个随机数,然后以表单的形式发送该随机数。所以...

我创建了一个表单并设置了 remote: true。这允许 rails_ujs 接管并将表单 ajax 到我的服务器。但在此之前,我必须给 Braintree 打电话并得到回复。他们提供的 javascript 函数执行异步调用。因此,我无法挂钩 Rails 'ajax:before' 回调,因为 Braintree javascript 调用在 'ajax:before' 传递到主 rails_ujs 后返回一个值,主 rails_ujs 将表单内容发送到服务器,因此我得到一个服务器端的空白字段。

Braintree 提供的 js 函数确实有正常的回调,所以我可以挂钩成功回调并触发表单提交。所以我尝试挂钩提交按钮上的点击事件,禁用默认设置,调用 Braintree,然后当我得到成功的响应时,我调用

它确实发送了数据,但它是一个普通的非 xhr POST。深入挖掘,我发现 rails_ujs 的行为不像是挂接到 form.submit() 事件,而是挂接到提交按钮 click() 事件。因此,通过捕获该事件、阻止默认行为、调用 Braintree 然后在表单上触发 submit() 事件,我将完全删除 Rails ajax 内容。

关键问题是如何触发 Rails ajax 表单进行远程发送,而不点击表单内的提交按钮?

作为一种解决方法,我可以进行手动编码的 $.ajax 调用,或者在表单上放置一个隐藏的提交按钮和另一个执行 Braintree 调用的可见按钮,然后触发对隐藏提交按钮的单击。这至少会为我完成所有带有 csrf 令牌的 Rails 表单提交。但我想知道为什么我不能调用 form.submit()

0 投票
1 回答
371 浏览

ruby-on-rails - 使用 Braintree.js 创建具有 CC 信息的用户

我正在尝试通过braintree.js 以一种形式提交一个创建新用户(设计)和支付令牌的表单。我的 html 表单看起来像这样。

当我提交这个时,我认为应该发生的事情是。Rails 创建了一个新用户。然后 Braintree.js 使用 CC 信息向他们的服务发出请求,并返回一个带有值的 params[:payment method_nonce]。但是会发生什么是用户被创建,但我没有得到有关 payment_method_nonce 的信息。

你可能会问我为什么要从一页添加所有这些信息?一旦用户注册,我计划创建一个后台工作人员来创建订阅。

控制器(我的用户控制器)

我的架构看起来像这样

附加信息

-Rails 4 -Ruby 2.0 - Braintree.js v2

0 投票
1 回答
264 浏览

ruby-on-rails - Braintree 客户端令牌在 ERB 中被解密

我正在使用 Braintree 与 Ruby 和 JS 来尝试做 Braintree Drop-In UI 的基本实现。

以下是一些相关的代码片段:

事务控制器创建令牌 @client_token = Braintree::ClientToken

页面初始化令牌 <script> braintree.setup(“&lt;%= @client_token %>”, 'dropin', { container: 'checkout' }); </script>

由于某种原因,我最终得到了令牌的解密版本。输出如下所示:

这当然不是客户端令牌应该是什么样子。

为什么我最终得到了解密版本?

0 投票
2 回答
1543 浏览

braintree - 使用 Dropin UI 在 BrainTree 中复制随机数

我在沙盒中使用 Braintree 市场,我有一个问题/疑问。
我在生成 client_token 时使用客户 ID,将 payment_nonce 保存在我的数据库中并稍后(在 3-4 分钟内)使用它来提交_for_settlement。问题是每笔交易都需要一个唯一的随机数,但如果我在 2-3 分钟内提交两次 Dropin UI,我会得到相同的随机数,第二次交易失败并出现错误:不能多次使用付款方式随机数。有没有办法确保我得到唯一的随机数?谢谢你

0 投票
1 回答
819 浏览

ruby-on-rails - 我想在我的 spree 扩展中添加新的 javascript 文件

我是新来的。我正在尝试构建 Spree 扩展以使用 Braintree 的插入式 UI。我正在尝试将新的 Braintree.js 添加到我的扩展程序中。这些是我到目前为止所做的步骤。

  1. 添加braintree.js<my_extension>/app/assets/javascripts/spree/frontend/

  2. 添加//= require spree/frontend/braintreeapp/assets/javascripts/spree/frontend/<my_extension>.js.

  3. 创建braintree.rb<my_extension>/config/initializers/. 该文件的内容:

    /li>
  4. 从我的狂欢商店我跑了bundle install,这是成功的。

  5. Ranrails g <my_extension>:install这给了我以下错误:

    /li>
0 投票
1 回答
258 浏览

ruby-on-rails - 在 Rails 应用程序中异步加载 Braintree ClientToken

我目前正在使用gongem 在 Braintree 中加载 client_token。

下面显示了控制器方法:

很快,我就意识到了这种方式的潜在问题。如果到 Braintree 的连接速度很慢,它只会保留请求并阻止所有其他请求。有时(在极少数情况下)加载请求需要 6-10 秒。有一次它Net::OpenTimeout - execution expired在等待 60 秒后实际上导致错误..

我想知道什么是解决这个问题并防止它阻止其他请求的好方法

0 投票
1 回答
289 浏览

ruby-on-rails - 如何在 Rails 应用程序中使用 Braintree 显示卡片拒绝消息

我在我的 Rails 应用程序中使用 Braintree 进行交易,但我无法显示拒绝消息,例如:2004:过期卡 2012:处理器被拒绝 - 可能丢失卡 2013:处理器被拒绝 - 可能被盗卡 2014:处理器被拒绝 - 涉嫌欺诈2010:发卡机构拒绝了 CVV
,我在我的申请中指定了这一点。