【问题标题】:how do I send additional user information in a form after getting stripe token - angular获取条带令牌后如何以表单形式发送其他用户信息-角度
【发布时间】:2015-05-21 22:44:06
【问题描述】:

所以我正在使用 Stripe 接受表单上的付款,该表单还包含其他信息 - 姓名 - 地址等。我正在使用以下库:

https://github.com/gtramontina/stripe-angular

我的表格是这样设置的:

<form id="signup-form" ng-submit="processForm()" stripe:form="saveCustomer">
      <!-- our nested state views will be injected here -->
          <div id="form-views" ui-view></div>
</form>

以及嵌套表单视图的示例(非条带内容)

<div class="form-group">
    <label for="name">Name</label>
    <input type="text" class="form-control" name="name" ng-model="formData.name" required>
</div>

还有条纹的东西:

<div class="form-group">
    <label for="card_number">Card Number</label>
      <input type="text" class="form-control" size="20" data-stripe="number" ng-model="formData.card"/>
    </div>

我的控制器(仅相关功能):

// function to process the form
    $scope.saveCustomer = function(status, response) {
            var $form = $('#signup-form');

            if (response.error) {
                // Show the errors on the form
                $form.find('.payment-errors').text(response.error.message);
                $form.find('button').prop('disabled', false);
              } else {
                // response contains id and card, which contains additional card details
                var token = response.id;
                var html = '<input type="hidden" name="stripeToken" ng-model=formData.'+token+'/>';
                // Insert the token into the form so it gets submitted to the server
                $form.append($(html));
                // and submit
                $form.get(0).submit();
                console.log(formData);
             }
        }

这是我的问题 - 如果“saveCustomer”函数相当于条带文档中的 stripeResponseHandler 函数,那么他们在将令牌附加到表单后提交表单。如果我将数据添加到我的 formData 对象中,我如何将此信息添加到该对象中。我现在的逻辑是,我正在添加链接到控制器中另一个函数(processForm)的 ng-submit 属性,但这似乎很垃圾,而且我无论如何都无法获取数据 - 我如何获取令牌和所有其他 formData 数据如果我在 saveCustomer 函数中看不到 formData,是否可以将其发送到服务器?

【问题讨论】:

    标签: javascript angularjs node.js stripe-payments


    【解决方案1】:

    使用 jquery 直接处理 DOM 不符合 Angular 的方式。我建议您使用模型对象而不是处理 DOM。在您的示例代码中,模型对象是“formData”。

    如果你想访问 $scope.formData,下面的代码可以帮助你这样做。

    $scope.formData = {}; 
    var formData = $scope.formData;
    
    $scope.saveCustomer = function(status, response) { 
        console.log(formData); // NOT $scope.formData; 
    }
    

    【讨论】:

    • 问题是 Stripe Angular 有一个 stripe:form 指令,它会自动提交给 Stripe - 你是说根本不使用它吗?
    • 也在第 4 步中 - 您不是说将 formData 发布到我自己的服务器以进行令牌/客户存储吗?
    • 如果需要 stripe:form 指令,您可以稍微调整一下顺序。 1. $scope.saveCustomer 函数将被调用。 2. 将令牌添加到包含其他值用户条目的 $scope.formData 对象。 3. 将 formData 发布到 Stripe 服务器。
    • 问题是 $scope.formData 没有在 $scope.saveCustomer 中定义,我不知道如何在其中访问这个变量
    • 我的意思是将 formData 发布到“条带化服务器”而不是您的服务器。它将替换“$form.get(0).submit()”。
    猜你喜欢
    • 2022-06-13
    • 2020-07-17
    • 2020-08-21
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多