运行mercado pago javascript到java代码

时间:2015-05-11 19:51:29

标签: java javascript jquery

我需要实施Mercado Pago自定义结帐以在我的网站上接收付款。要做到这一点,我需要运行javascript代码来获取card_token_id,如此链接中所述:https://developers.mercadopago.com/documentation/custom-checkout?lang=en_US

但是我的网站,为了业务限制,需要将这个card_token_id运行到我的班级的Java代码中。我需要将这个javascript代码运行到我的Java类中,得到结果,然后在http POST中使用它。我已经尝试过使用ScriptEngine,但不行。

请参阅下面的完整代码,该代码适用于html。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Pagar</title>

    <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script type="text/javascript" src="https://secure.mlstatic.com/org-img/checkout/custom/1.0/checkout.js"></script>
  </head>

  <body>
    <h1><a href="http://developers.mercadopago.com/documentation/custom-checkout-advanced?lang=pt_BR">Fluxo de pagamento personalizado (avançado)</a></h1>

    <form action="" method="post" id="form-pagar-mp">
      <input id="amount" type="hidden" value="100"/>
      <p>N&uacute;mero do cart&atilde;o: <input data-checkout="cardNumber" type="text" value="4509953566233704"/></p>
      <p>C&oacute;digo de Seguran&ccedil;a: <input data-checkout="securityCode" type="text" value="123"/></p>
      <p>M&ecirc;s de vencimento: <input data-checkout="cardExpirationMonth" type="text" value="12"/></p>
      <p>Ano de vencimento: <input data-checkout="cardExpirationYear" type="text" value="2020"/></p>
      <p>Titular do cart&atilde;o: <input data-checkout="cardholderName" type="text" value="Joao"/></p>
      <p>N&uacute;mero do documento: <input data-checkout="docNumber" type="text" value="19313777584"/></p>

      <input data-checkout="docType" type="text" value="CPF"/>
      <p id="issuersField">Bancos: <select id="issuersOptions"></select>
      <p>Parcelas: <select id="installmentsOption"></select>
      <p><input type="submit" value="Concluir pagamento"></p>
    </form>

    <script type="text/javascript">
      /* Troque com a sua public_key */
      Checkout.setPublishableKey("TEST-cba0f2d5-c989-4c97-8e61-847121530093");
      $("input[data-checkout='cardNumber']").bind("keyup",function(){
        var bin = $(this).val().replace(/ /g, '').replace(/-/g, '').replace(/\./g, '');
        if (bin.length == 6){
          Checkout.getPaymentMethod(bin,setPaymentMethodInfo);
        }
      });
      // Estabeleça a informação do meio de pagamento obtido
      function setPaymentMethodInfo(status, result){
        $.each(result, function(p, r){
            $.each(r.labels, function(pos, label){
                if (label == "recommended_method") {
                    Checkout.getInstallments(r.id ,parseFloat($("#amount").val()), setInstallmentInfo);
                    Checkout.getCardIssuers(r.id,showIssuers);
                    return;
                }
            });
        });
      };
      // Mostre as parcelas disponíveis no div 'installmentsOption'
      function setInstallmentInfo(status, installments){
          var html_options = "";
          for(i=0; installments && i<installments.length; i++){
              html_options += "<option value='"+installments[i].installments+"'>"+installments[i].installments +" de "+installments[i].share_amount+" ("+installments[i].total_amount+")</option>";
          };
          $("#installmentsOption").html(html_options);
        };
      function showIssuers(status, issuers){
        var i,options="<select data-checkout='cardIssuerId'><option value='-1'>Escolha...</option>";
        for(i=0; issuers && i<issuers.length;i++){
          options+="<option value='"+issuers[i].id+"'>"+issuers[i].name +" </option>";
        }
        options+="</select>";
        if(issuers.length>0){
          $("#issuersOptions").html(options);
        }else{
          $("#issuersOptions").html("");
          $("#issuersField").hide();
        }
      };
      $("#issuersOptions").change(function(){
          var bin = $("input[data-checkout='cardNumber']").val().replace(/ /g, '').replace(/-/g, '').replace(/\./g, '').slice(0, 6);
          Checkout.getInstallmentsByIssuerId(bin,this.value,parseFloat($("#amount").val()),setInstallmentInfo);
      });
      $("#form-pagar-mp").submit(function( event ) {
          var $form = $(this);
          Checkout.createToken($form, mpResponseHandler);
          event.preventDefault();
          return false;
      });
      var mpResponseHandler = function(status, response) {
        var $form = $('#form-pagar-mp');
        if (response.error) {
          alert("Ocorreu um erro: "+JSON.stringify(response));
        } else {
          var card_token_id = response.id;
          $form.append($('<input type="text" id="card_token_id" name="card_token_id"/>').val(card_token_id));
          alert("card_token_id: "+card_token_id);
          $form.get(0).submit();
        }
      }
    </script>
  </body>
</html>

0 个答案:

没有答案