- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/applepay.php
- Класс: BitrixSalePaySystemApplePay
- Вызов: ApplePay::prepareIMessageData
private function prepareIMessageData(Payment $payment, array $config): ServiceResult
{
$result = new ServiceResult();
$merchantSessionResult = $this->getIMessageSession();
if (!$merchantSessionResult->isSuccess())
{
$result->addErrors($merchantSessionResult->getErrors());
return $result;
}
$orderId = $payment->getOrder()->getId();
$paymentSum = PriceMaths::roundPrecision($payment->getSum());
$receivedMessage = [
"style" => "icon",
"title" => $config["merchantDisplayName"],
"subtitle" => Loc::getMessage(
"SALE_APPLE_PAY_ORDER_SUBTITLE",
[
"#ORDER_ID#" => $orderId,
"#SUM#" => SaleFormatCurrency($paymentSum, $payment->getField('CURRENCY')),
]
),
];
$replyMessage = [
"title" => Loc::getMessage(
"SALE_APPLE_PAY_ORDER_SUBTITLE",
[
"#ORDER_ID#" => $orderId,
"#SUM#" => SaleFormatCurrency($paymentSum, $payment->getField('CURRENCY')),
]
),
];
$data = [
"requestIdentifier" => self::getUuid(),
"mspVersion" => "1.0",
"payment" => [
"paymentRequest" => [
"lineItems" => [
[
"label" => Loc::getMessage(
"SALE_APPLE_PAY_LINE_ITEM_ORDER",
[
"#ORDER_ID#" => $orderId,
]
),
"amount" => (string)$paymentSum,
"type" => "final"
],
],
"total" => [
"label" => Loc::getMessage("SALE_APPLE_PAY_LINE_ITEM_TOTAL"),
"amount" => (string)$paymentSum,
"type" => "final"
],
"applePay" => [
"merchantIdentifier" => $this->merchantIdentifier,
"supportedNetworks" => $config["supportedNetworks"],
"merchantCapabilities" => $config["merchantCapabilities"] ?? ["supports3DS"],
],
"merchantName" => $config["merchantName"],
"countryCode" => $config["countryCode"],
"currencyCode" => $payment->getField("CURRENCY"),
"requiredBillingContactFields" => $config["requiredBillingContactFields"] ?? [],
"requiredShippingContactFields" => $config["requiredShippingContactFields"] ?? [],
],
"merchantSession" => $merchantSessionResult->getData(),
"endpoints" => $config["endpoints"]
]
];
$result->setData([
"replyMessage" => $replyMessage,
"receivedMessage" => $receivedMessage,
"data" => $data,
]);
return $result;
}