Worldpay令牌混乱

时间:2015-07-13 13:02:58

标签: worldpay

尝试实施Worldpay集成。 https://online.worldpay.com/docs/take-card-details-templates处的文档提到了一个令牌。我测试了页面,我没有得到任何令牌。徘徊我怎么能得到这个标记。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="payment2.aspx.cs" Inherits="payment2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src= "https://cdn.worldpay.com/v1/worldpay.js">
      </script>        

      <script type='text/javascript'>
          window.onload = function () {
              Worldpay.setClientKey('T_C_a453a70e-c5e6-4618-9c7b-96f787f0fa04');
              Worldpay.reusable = false;
              Worldpay.useTemplate('payment-form', 'my_payment_section', 'inline');
          }
      </script>
</head>
<body>
     <form action="/complete" id="payment-form" method="post">     

      <!— all other fields you want to collect, e.g. name
        and shipping address -->  

      <div id='my_payment_section'></div>

      <div>
          <input type="submit" value="Place Order" />
      </div>

    </form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

当window.onload执行时,它会将WorldPay卡片捕获表单放在您的页面上。根据它的外观,你没有禁用他们的“保存付款”按钮,所以你是否试图使用自己的提交按钮?如果您尝试使用提交按钮,则应添加onclick属性以提交worldpay模板。

<input type="submit" value="Place Order" />
<form action="/complete" id="payment-form" method="post">
    <div id="my_payment_section"></div>
    <div>
        <input id="submitCard" onclick="Worldpay.submitTemplateForm()" value="Confirm Payment" />
    </div>
</form>

一旦表单提交,worldpay.js接管,它将处理敏感的卡信息,验证它,如果一切正常,它将用一个隐藏的输入字段替换cardDetails div,这是一个令牌。

如果一切正常,没有错误,在将标记输入放入DOM后,表单将提交给您的操作&#34; / complete&#34;,该标记将成为提交的一部分形式的价值。

希望有所帮助。

答案 1 :(得分:0)

您的脚本缺少在useTemplate()中生成令牌的回调 请参阅:https://developer.worldpay.com/jsonapi/docs/template-form

回调生成隐藏输入,其中包含您发送给worldpay的令牌值。

你的脚本应该是:

<script type='text/javascript'>
    window.onload = function() {
      Worldpay.useTemplateForm({
        'clientKey':'T_C_a453a70e-c5e6-4618-9c7b-96f787f0fa04',
        'form':'paymentForm',
        'paymentSection':'paymentSection',
        'display':'inline',
        'reusable':false,
        'callback': function(obj) {
          if (obj && obj.token) {
            var _el = document.createElement('input');
            _el.value = obj.token;
            _el.type = 'hidden';
            _el.name = 'token';
            document.getElementById('paymentForm').appendChild(_el);
            document.getElementById('paymentForm').submit();
          }
        }
      });
    }
    </script>

您还需要提交上的onclick =“Worldpay.submitTemplateForm()”属性。