0

尝试实施 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>
4

2 回答 2

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 后,表单将提交给您的操作“/完成”,并且令牌将成为表单提交值的一部分。

希望有帮助。

于 2015-07-29T07:43:02.250 回答
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()" 您提交的属性。

于 2017-03-02T15:28:28.503 回答