Page History
...
Ниже приведен пример скрипта виджета, который может быть размещен на платежной странице интернет-магазина.
Code Block | ||
---|---|---|
| ||
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function(){
if (window.ApplePaySession) {
//проверка возможности оплаты и отображение кнопки Apple Pay
if (ApplePaySession.canMakePayments) {
document.getElementById('apple-pay-button').style.display = 'block';
document.getElementById('apple-pay-button').addEventListener('click', applePayButtonClicked);
}
} else {console.log("ApplePaySession not available"); }
});
function applePayButtonClicked() {
const region = 'RU';
const currency = $('#currency').val();//валюта заказа
const paymentRequest = {
countryCode: region.toUpperCase(),
currencyCode: currency.toUpperCase(),
total: {
label: 'Your label', //название платежа
amount: $('#amount').val()//сумма заказа
},
supportedNetworks:['masterCard', 'visa'],
merchantCapabilities: [ 'supports3DS' ]
};
const version = window.ApplePaySession.supportsVersion(3)
? 3
: window.ApplePaySession.supportsVersion(2)
? 2 : 1;
const applePaySession = new window.ApplePaySession(version, paymentRequest);
console.log("start session");
// обработчик события для создания merchant session.
applePaySession.onvalidatemerchant = function (event) {
console.log("onvalidatemerchant in");
var data = {
validationUrl: event.validationURL
};
console.log(JSON.stringify(data));
// отправка запроса на сервер предприятия, далее запрос API для запуска сессии
$.post("/pay/apple_pay_comm.cfm", data).then(function (result) {
applePaySession.completeMerchantValidation(result);
});
}
// обработчик события авторизации платежа
applePaySession.onpaymentauthorized = function (event) {
console.log("onpaymentauthorized in");
//var email = event.payment.shippingContact.emailAddress; //если был запрошен адрес e-mail
//var phone = event.payment.shippingContact.phoneNumber; //если был запрошен телефон
//все варианты на сайте https://developer.apple.com/reference/applepayjs/paymentcontact
// передача параметров заказа
var data = {
token : event.payment.token,
merchant_id : $('#merchant_id').val(),
email : $('#email').val(),
amount : $('#amount').val(),
currency : $('#currency').val(),
ordernumber : $('#ordernumber').val(),
email : $('#email').val(),
firstname : $('#firstname').val(),
middlename : $('#middlename').val(),
lastname : $('#lastname').val(),
comment : $('#comment').val()
};
//отправка запроса на сервер предприятия, далее запрос API для проведения оплаты
console.log(JSON.stringify(event.payment.token));
$.post("/pay/tokenpay_widget_ap.cfm", JSON.stringify(data)).then(function (result) {
if (!result.hasOwnProperty('firstcode') && JSON.stringify(result.order.orderstate) == '"Approved"' && JSON.stringify(result.order.orderstate) == '"Delayed"') {
applePaySession.completePayment(ApplePaySession.STATUS_SUCCESS);
} else {
applePaySession.completePayment(ApplePaySession.STATUS_FAILURE);
}
});
};
applePaySession.begin();
}
</script>
<style>
#apple-pay-button {
display: none;
background-color: black;
background-image: -webkit-named-image(apple-pay-logo-white);
background-size: 100% 100%;
background-origin: content-box;
background-repeat: no-repeat;
width: 100%;
height: 44px;
padding: 10px 0;
border-radius: 10px;
}
</style> |