Commit b9083438 by Angel MAS

test payments

parent 5063cfcf
//Mercadopago.setPublishableKey('TEST-adec97b5-9592-44da-8232-c5d29d803e55');
Mercadopago.setPublishableKey('APP_USR-65a0d217-9d89-43ea-afc0-7d8df2eb49f6');
$("#form-pagar-mp").submit(function( event ) {
$('.btn-submit').attr('disabled', 'disabled');
swal({
text: "Espera por favor, estamos enviando tu pago...",
imageUrl: "/assets/img/ripple.gif",
showConfirmButton: false,
allowEscapeKey: false,
allowOutsideClick: false,
closeOnConfirm: false,
closeOnCancel: false
});
var $form = $(this);
Mercadopago.createToken($form, mpResponseHandler);
event.preventDefault();
return false;
});
var mpResponseHandler = function(status, response) {
var $form = $('#form-pagar-mp');
if (response.error) {
alert("ocurrió un error: "+JSON.stringify(response));
console.log(response);
swal.close();
var error = '<div class="alert alert-dismissable alert-danger">'+
'<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>'+
'Haz ingresado valores invalidos: <br>Revisa los datos capturados o intenta con otra tarjeta'+
'</div>';
$("#errors-card").html(error);
$('.btn-submit').removeAttr('disabled');
} else {
var card_token_id = response.id;
$form.append($('<input type="hidden" id="card_token_id" name="card_token_id"/>').val(card_token_id));
//alert("card_token_id: "+card_token_id);
$("#errors-card").html("");
$form.get(0).submit();
}
}
$("#plazos").change(function(){
if(this.checked) {
$("#installments_info").show();
document.querySelector('#issuer').required = true;
document.querySelector('#installments').required = true;
document.getElementById("issuer").selectedIndex = -1;
document.getElementById("installments").selectedIndex = -1;
} else {
$("#installments_info").hide();
document.querySelector('#issuer').required = false;
document.querySelector('#installments').required = false;
}
});
function getBin() {
var ccNumber = document.querySelector('input[data-checkout="cardNumber"]');
return ccNumber.value.replace(/[ .-]/g, '').slice(0, 6);
}
function clearOptions() {
var bin = getBin();
if (bin.length == 0) {
document.querySelector("#issuer").style.display = 'none';
document.querySelector("#issuer").innerHTML = "";
var selectorInstallments = document.querySelector("#installments"),
fragment = document.createDocumentFragment(),
option = new Option("Ejige una opción...", '-1');
selectorInstallments.options.length = 0;
fragment.appendChild(option);
selectorInstallments.appendChild(fragment);
selectorInstallments.setAttribute('disabled', 'disabled');
}
}
function guessingPaymentMethod(event) {
var bin = getBin(),
amount = document.querySelector('#amount').value;
if (event.type == "keyup") {
if (bin.length == 6) {
Mercadopago.getPaymentMethod({
"bin": bin
}, setPaymentMethodInfo);
}
} else {
setTimeout(function() {
if (bin.length >= 6) {
Mercadopago.getPaymentMethod({
"bin": bin
}, setPaymentMethodInfo);
}
}, 100);
}
};
function setPaymentMethodInfo(status, response) {
if (status == 200) {
console.log('responsisss');
console.log(response);
var form = document.querySelector('#form-pagar-mp');
if (document.querySelector("input[name=paymentMethodId]") == null) {
var paymentMethod = document.createElement('input');
paymentMethod.setAttribute('name', "paymentMethodId");
paymentMethod.setAttribute('type', "hidden");
paymentMethod.setAttribute('value', response[0].id);
form.appendChild(paymentMethod);
} else {
document.querySelector("input[name=paymentMethodId]").value = response[0].id;
}
if(response[0].payment_type_id=="credit_card"){
document.getElementById("plazos").disabled = false;
}else{
document.getElementById("plazos").disabled = true;
}
// check if the security code (ex: Tarshop) is required
var cardConfiguration = response[0].settings,
bin = getBin(),
amount = document.querySelector('#amount').value;
for (var index = 0; index < cardConfiguration.length; index++) {
if (bin.match(cardConfiguration[index].bin.pattern) != null && cardConfiguration[index].security_code.length == 0) {
/*
* In this case you do not need the Security code. You can hide the input.
*/
} else {
/*
* In this case you NEED the Security code. You MUST show the input.
*/
}
}
Mercadopago.getInstallments({
"bin": bin,
"amount": amount
}, setInstallmentInfo);
// check if the issuer is necessary to pay
var issuerMandatory = false,
additionalInfo = response[0].additional_info_needed;
for (var i = 0; i < additionalInfo.length; i++) {
if (additionalInfo[i] == "issuer_id") {
issuerMandatory = true;
}
};
if (issuerMandatory) {
Mercadopago.getIssuers(response[0].id, showCardIssuers);
addEvent(document.querySelector('#issuer'), 'change', setInstallmentsByIssuerId);
} else {
document.querySelector("#issuer").style.display = 'none';
document.querySelector("#issuer").options.length = 0;
}
}
};
function showCardIssuers(status, issuers) {
var issuersSelector = document.querySelector("#issuer"),
fragment = document.createDocumentFragment();
issuersSelector.options.length = 0;
var option = new Option("Elije una opción...", '-1');
fragment.appendChild(option);
for (var i = 0; i < issuers.length; i++) {
if (issuers[i].name != "default") {
option = new Option(issuers[i].name, issuers[i].id);
} else {
option = new Option("Otro", issuers[i].id);
}
fragment.appendChild(option);
}
issuersSelector.appendChild(fragment);
issuersSelector.removeAttribute('disabled');
document.querySelector("#issuer").removeAttribute('style');
};
function setInstallmentsByIssuerId(status, response) {
var issuerId = document.querySelector('#issuer').value,
amount = document.querySelector('#amount').value;
if (issuerId === '-1') {
return;
}
Mercadopago.getInstallments({
"bin": getBin(),
"amount": amount,
"issuer_id": issuerId
}, setInstallmentInfo);
};
function setInstallmentInfo(status, response) {
var selectorInstallments = document.querySelector("#installments"),
fragment = document.createDocumentFragment();
selectorInstallments.options.length = 0;
if (response.length > 0) {
var option = new Option("Elije una opción...", '-1'),
payerCosts = response[0].payer_costs;
fragment.appendChild(option);
for (var i = 0; i < payerCosts.length; i++) {
option = new Option(payerCosts[i].recommended_message || payerCosts[i].installments, payerCosts[i].installments);
fragment.appendChild(option);
}
selectorInstallments.appendChild(fragment);
selectorInstallments.removeAttribute('disabled');
}
};
function cardsHandler() {
clearOptions();
var cardSelector = document.querySelector("#cardId"),
amount = document.querySelector('#amount').value;
if (cardSelector && cardSelector[cardSelector.options.selectedIndex].value != "-1") {
var _bin = cardSelector[cardSelector.options.selectedIndex].getAttribute("first_six_digits");
Mercadopago.getPaymentMethod({
"bin": _bin
}, setPaymentMethodInfo);
}
}
function addEvent(el, eventName, handler){
if (el.addEventListener) {
el.addEventListener(eventName, handler);
} else {
el.attachEvent('on' + eventName, function(){
handler.call(el);
});
}
};
addEvent(document.querySelector('input[data-checkout="cardNumber"]'), 'keyup', guessingPaymentMethod);
addEvent(document.querySelector('input[data-checkout="cardNumber"]'), 'keyup', clearOptions);
addEvent(document.querySelector('input[data-checkout="cardNumber"]'), 'change', guessingPaymentMethod);
cardsHandler();
\ No newline at end of file
......@@ -303,8 +303,20 @@ public function shipping()
}
public function paymentInstallments(Request $request){
return $request;
}
public function payment(Request $request)
{
{
$plazo = 1;
$banco = '';
if(isset($request->plazos)){
if($request->installments != -1 && $request->issuer != -1 ){
$plazo = $request->installments;
$banco= $request->issuer;
}
}
if (!\Session::has('client')) {
return redirect()->route('cart.shipping');
......@@ -351,19 +363,40 @@ public function shipping()
$detail = $detail.''.$cupon;
$mp = new MP(env('AC_MERCADO_PAGO'));
$payment_data = array(
"transaction_amount" => ($this->total() + $costo_envio) - $descuento,
"token" => $request->card_token_id,
"description" => $detail,
"installments" => 1,
"payment_method_id" => $request->paymentMethodId,
"payer" => array (
"email" => $client->email,
"first_name"=>$client->name,
)
);
$payment_data = array();
if($banco != ''){
$payment_data = array(
"transaction_amount" => ($this->total() + $costo_envio) - $descuento,
"token" => $request->card_token_id,
"description" => $detail,
"installments" => (int)$plazo,
"issuer_id" => $banco,
"payment_method_id" => $request->paymentMethodId,
"payer" => array (
"email" => $client->email,
"first_name"=>$client->name,
)
);
} else {
$payment_data = array(
"transaction_amount" => ($this->total() + $costo_envio) - $descuento,
"token" => $request->card_token_id,
"description" => $detail,
"installments" => (int)$plazo,
"payment_method_id" => $request->paymentMethodId,
"payer" => array (
"email" => $client->email,
"first_name"=>$client->name,
)
);
}
$payment = $mp->post("/v1/payments", $payment_data);
$sale->payment_type = 'Tarjeta';
if ($payment['response']['status'] == 'approved') {
......
......@@ -138,6 +138,7 @@ Route::group(['middleware' => ['web']], function(){
Route::post('cart/store/client', 'Onestartup\Shop\Controller\CartController@storeClient')->name('cart.store.client');
Route::post('cart/payment', 'Onestartup\Shop\Controller\CartController@payment')->name('cart.payment');
Route::post('cart/payment/installments', 'Onestartup\Shop\Controller\CartController@paymentInstallments')->name('cart.payment-installments');
Route::post('cart/paymentCash', 'Onestartup\Shop\Controller\CartController@paymentCash')->name('cart.paymentCash');
Route::post('cart/acordar', 'Onestartup\Shop\Controller\CartController@acordar')->name('cart.acordar');
......
......@@ -70,9 +70,14 @@ setlocale(LC_MONETARY, 'en_US');
<br>
<br>
@include('shop-public::forms.form-acordar')
{{-- @include('shop-public::forms.form-acordar') --}}
<br>
<br>
<br>
plazos
{{-- @include('shop-public::forms.fields-payment-installments') --}}
</section>
......@@ -80,7 +85,8 @@ setlocale(LC_MONETARY, 'en_US');
@endsection
@section('scripts_extra')
<script type="text/javascript" src="{{asset('vendor/onestartup/shop/mp.js')}}"></script>
<script type="text/javascript" src="{{asset('vendor/onestartup/shop/plazos.js')}}"></script>
@endsection
......
<form action="{{route('cart.payment-installments')}}" method="POST" id="form-pagar-mp2">
{{ csrf_field() }}
<p>Número de tarjeta</p>
<input type="text" id="cardNumber2" data-checkout="cardNumber2" placeholder="4509 9535 6623 3704" size="16" name="number2" required="required" class="form-control" min="16" max="16" />
<p>Nombre del titular</p>
<input type="text" size="20" name="name2" data-checkout="cardholderName2" placeholder="Ej. Roberto Carlos" required="required" class="form-control" />
<p>Fecha de expiración</p>
<input type="text" size="2" name="month2" data-checkout="cardExpirationMonth2" placeholder="Ej. 09" required="required" class="form-control" align="right" />
<input type="text" size="4" name="year2" data-checkout="cardExpirationYear2" placeholder="Ej. 2018" required="required" class="form-control" align="left"/>
<p>Código de seguridad</p>
<input class="form-white" type="text" size="4" name="cvc2" data-checkout="securityCode2" placeholder="Ej. 543" required="required" class="form-control"/>
<input name="paymentMethodId2" type="hidden">
<input type="text" id="amount" name="amount" value="{{ $sale->home_delivery ? ($total + $addres->shipping_price->cost) : $total }}" />
<br>
<label for="issuer">Issuer:</label>
<select id="issuer" name="issuer"></select><br>
<label for="installments">Installments:</label>
<select id="installments" name="installments"></select><br>
<br>
<div>
<label>Si cuentas con un código de promocion introducelo aquí</label><br>
<input type="text" name="coupon" class="coupon" placeholder="Codigo de promoción" data-total="{{$sale->id}}">
<span class="reponse_coupon"></span>
<br>
</div>
<br>
<button>
Pagar {{ $sale->home_delivery ? money_format('%(#10n', ($total + $addres->shipping_price->cost)) : money_format('%(#10n', $total ) }}
<span class="amount_discount"></span>
</button>
</form>
\ No newline at end of file
......@@ -18,6 +18,18 @@
<input class="form-white" type="text" size="4" name="cvc" data-checkout="securityCode" placeholder="Ej. 543" required="required" class="form-control"/>
<input name="paymentMethodId" type="hidden">
<input type="text" id="amount" name="amount" value="{{ $sale->home_delivery ? ($total + $addres->shipping_price->cost) : $total }}" />
<br>
Pagar en cuotas(Solo tarjetas de credito Bancomer y Banamex):
<input type="checkbox" id="plazos" name="plazos" disabled><br>
<div style="display:none;" id="installments_info">
<label for="issuer">Banco: </label>
<select id="issuer" name="issuer"></select><br>
<label for="installments">Plazos: </label>
<select id="installments" name="installments"></select><br>
</div>
<br>
<div>
<label>Si cuentas con un código de promocion introducelo aquí</label><br>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment