• Модуль: 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;
}