如何实现条纹支付的实施?

时间:2020-10-22 23:39:02

标签: javascript java jsp stripe-payments

我一直在尝试使用Java实现Stripe进行测试,但是我的疑问是第5步“使用令牌创建费用”,以获取更多信息。 https://stripe.com/docs/payments/accept-a-payment-charges

这是我的代码:

java控制器

public void chrage(HttpServletRequest request, HttpServletResponse response)
{
    try {
        Stripe.apiKey = "pk_test_51He5QLAnfgVAb3ehd0OxqrNHlQSrX6MApLFlchIXfrOby4JrDwndkI76CC5QGT96y5sjbT301oj2RiC9utOgH7so00GGAJaU3d";
        
        // Token is created using Stripe Checkout or Elements!
        // Get the payment token ID submitted by the form:
        String token = request.getParameter("stripeToken");
        
        ChargeCreateParams params =
                ChargeCreateParams.builder()
                        .setAmount(999L)
                        .setCurrency("usd")
                        .setDescription("Example charge")
                        .setSource(token)
                        .build();
        
        Charge charge = Charge.create(params.toMap());
    } catch (AuthenticationException ex) {
        Logger.getLogger(FacturacionControlador.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InvalidRequestException ex) {
        Logger.getLogger(FacturacionControlador.class.getName()).log(Level.SEVERE, null, ex);
    } catch (APIConnectionException ex) {
        Logger.getLogger(FacturacionControlador.class.getName()).log(Level.SEVERE, null, ex);
    } catch (CardException ex) {
        Logger.getLogger(FacturacionControlador.class.getName()).log(Level.SEVERE, null, ex);
    } catch (APIException ex) {
        Logger.getLogger(FacturacionControlador.class.getName()).log(Level.SEVERE, null, ex);
    }
}

jsp

<script type="text/javascript" src="https://js.stripe.com/v3/">
var stripe = Stripe('pk_test_51He5QLAnfgVAb3ehd0OxqrNHlQSrX6MApLFlchIXfrOby4JrDwndkI76CC5QGT96y5sjbT301oj2RiC9utOgH7so00GGAJaU3d');
var elements = stripe.elements();
 var style = {
  base: {
    fontSize: '16px',
    color: '#32325d'
  }
};
var card = elements.create('card', {style: style});
card.mount('#card-element');
var form = document.getElementById('payment-form');
form.addEventListener('submit', function(event) {
  event.preventDefault();

  stripe.createToken(card).then(function (result) {
            if (result.error) {
                var errorElement = document.getElementById('card-errors');
                errorElement.textContent = result.error.message;
            } else {
                stripeTokenHandler(result.token);
            }
        });
    });
    function stripeTokenHandler(token) {
        var form = document.getElementById('payment-form');
        var hiddenInput = document.createElement('input');
        hiddenInput.setAttribute('type', 'hidden');
        hiddenInput.setAttribute('name', 'stripeToken');
        hiddenInput.setAttribute('value', token.id);
        form.appendChild(hiddenInput);
        form.submit();
    }
</script>
<style type="text/css">
StripeElement {
  box-sizing: border-box;

  height: 40px;

  padding: 10px 12px;

  border: 1px solid transparent;
  border-radius: 4px;
  background-color: white;

  box-shadow: 0 1px 3px 0 #e6ebf1;
  -webkit-transition: box-shadow 150ms ease;
  transition: box-shadow 150ms ease;
}

.StripeElement--focus {
  box-shadow: 0 1px 3px 0 #cfd7df;
}

.StripeElement--invalid {
  border-color: #fa755a;
}

.StripeElement--webkit-autofill {
  background-color: #fefde5 !important;
}
</style>
<div ng-controller="Controller" class="right_col controlador"> 
    <form  id = "frmCaptura" data-toggle="validator">
        <div class="x_panel" >
            <div class="x_title">  
                <jopen:getLabel label="facturacion.nombre"/>

            </div>
            <div class="x_content">
                <script src="https://js.stripe.com/v3/"></script>


                <form action="/charge" method="post" id="payment-form">
                    <div class="form-row">
                        <label for="card-element">
                            Credit or debit card
                        </label>
                        <div id="card-element">
                            <!-- A Stripe Element will be inserted here. -->
                        </div>

                        <!-- Used to display Element errors. -->
                        <div id="card-errors" role="alert"></div>
                    </div>

                    <button>Submit Payment</button>
                </form> 



            </div>
        </div>
</div>

有人可以告诉我要使它生效还需要什么吗?我会很感激

1 个答案:

答案 0 :(得分:0)

您似乎在服务器端代码中使用了可发布密钥,该密钥无法正常工作-您需要在此处使用秘密密钥。

另外,由于Charges根本不支持SCA,因此您可能要考虑使用更新的Payment Intents approach