De-obfuscate PHP malware/viruses and tampering code on Wordpress to original readable code.
*Please note that not all obfuscation codes can be decoded.<?php /* __________________________________________________ | Obfuscated by YAK Pro - Php Obfuscator 2.0.3 | | on 2023-07-05 10:12:25 | | GitHub: https://github.com/pk-fr/yakpro-po | |__________________________________________________| */ namespace Plugin\AmazonPayV2_42\Service; use Doctrine\ORM\EntityManagerInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\Master\OrderStatus; use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\CustomerRepository; use Eccube\Repository\Master\OrderStatusRepository; use Eccube\Service\CartService; use Eccube\Service\PurchaseFlow\PurchaseContext; use Eccube\Service\PurchaseFlow\PurchaseFlow; use Eccube\Service\PurchaseFlow\Processor\StockReduceProcessor; use Eccube\Service\PurchaseFlow\Processor\PointProcessor; use Plugin\AmazonPayV2_42\Entity\Master\AmazonStatus; use Plugin\AmazonPayV2_42\Exception\AmazonException; use Plugin\AmazonPayV2_42\Exception\AmazonPaymentException; use Plugin\AmazonPayV2_42\Repository\ConfigRepository; use Plugin\AmazonPayV2_42\Amazon\Pay\API\Client as AmazonPayClient; use Plugin\AmazonPayV2_42\Repository\Master\AmazonStatusRepository; use GuzzleHttp\Client; use Guzzle\Http\Exception\BadResponseException; use Guzzle\Http\Exception\CurlException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Carbon\Carbon; class AmazonRequestService extends AbstractController { protected $entityManager; protected $baseInfoRepository; protected $customerRepository; protected $cartService; protected $purchaseFlow; protected $eccubeConfig; protected $configRepository; protected $Config; protected $amazonApi; protected $amazonApiConfig; protected $session; protected $tokenStorage; protected $container; private $pointProcessor; private $stockReduceProcessor; private $amazonStatusRepository; private $orderStatusRepository; public function __construct(EntityManagerInterface $entityManager, BaseInfoRepository $baseInfoRepository, CustomerRepository $customerRepository, CartService $cartService, PurchaseFlow $cartPurchaseFlow, EccubeConfig $eccubeConfig, ConfigRepository $configRepository, SessionInterface $session, TokenStorageInterface $tokenStorage, OrderStatusRepository $orderStatusRepository, AmazonStatusRepository $amazonStatusRepository, StockReduceProcessor $stockReduceProcessor, PointProcessor $pointProcessor, ContainerInterface $container) { goto tOeUB; PoaB0: $this->pointProcessor = $pointProcessor; goto rgEdG; rylCc: qPJzJ: goto zEDky; Ean20: $this->Config = $this->configRepository->get(); goto ZUO6C; aF_fJ: $this->eccubeConfig = $eccubeConfig; goto GxHuO; zEDky: $this->amazonApi = $this->eccubeConfig['amazon_pay_v2']['api']['prod']; goto b30at; sii_H: $this->BaseInfo = $baseInfoRepository->get(); goto QGeh3; QGeh3: $this->customerRepository = $customerRepository; goto tmj1k; cDArN: $this->amazonApiConfig = $this->eccubeConfig['amazon_pay_v2']['api']['config']; goto wPAvt; S9yVl: $this->amazonApi = $this->eccubeConfig['amazon_pay_v2']['api']['sandbox']; goto L6vSc; tmj1k: $this->cartService = $cartService; goto OGRlZ; Z1Q1Z: $this->tokenStorage = $tokenStorage; goto LtCe9; rgEdG: $this->container = $container; goto Ean20; b30at: eSuHI: goto cDArN; LtCe9: $this->orderStatusRepository = $orderStatusRepository; goto Byw8C; tOeUB: $this->entityManager = $entityManager; goto sii_H; ZUO6C: if ($this->Config->getAmazonAccountMode() == $this->eccubeConfig['amazon_pay_v2']['account_mode']['owned'] && $this->Config->getEnv() == $this->eccubeConfig['amazon_pay_v2']['env']['prod']) { goto qPJzJ; } goto S9yVl; pveo7: $this->session = $session; goto Z1Q1Z; L6vSc: goto eSuHI; goto rylCc; vmmhn: $this->stockReduceProcessor = $stockReduceProcessor; goto PoaB0; Byw8C: $this->amazonStatusRepository = $amazonStatusRepository; goto vmmhn; OGRlZ: $this->purchaseFlow = $cartPurchaseFlow; goto aF_fJ; GxHuO: $this->configRepository = $configRepository; goto pveo7; wPAvt: } private function payoutSellerOrderId($orderId, $request_type = '') { goto Q4Vjp; oxvl0: $timestamp = ''; goto DJG1m; mVlWW: return $timestamp . $prefix . $request_attr . $orderId; goto SyHqU; yQY0S: $timestamp = $timestamp === '' ? '' : $timestamp . '_'; goto mVlWW; SHrCp: $arrInit = parse_ini_file($iniFile); goto YmSoI; Q4Vjp: $request_attr = $request_type === '' ? '' : strtoupper($request_type) . '_'; goto U0Agw; Mepfb: $timestamp = Carbon::now()->timestamp; goto dM2NF; U0Agw: $prefix = ''; goto Q3X2t; YmSoI: $prefix = $arrInit['prefix']; goto FE1ww; DJG1m: if (!($this->Config->getAmazonAccountMode() === $this->eccubeConfig['amazon_pay_v2']['account_mode']['shared'])) { goto mpbQ9; } goto Mepfb; dM2NF: mpbQ9: goto yQY0S; FlFUk: if (!file_exists($iniFile)) { goto glbcK; } goto SHrCp; FE1ww: glbcK: goto LVEvp; Q3X2t: $iniFile = dirname(__FILE__) . '/../amazon_pay_config.ini'; goto FlFUk; LVEvp: $prefix = $prefix === '' ? '' : $prefix . '_'; goto oxvl0; SyHqU: } protected function getAmazonPayConfig() { goto rWO1Z; xNL8_: $config = ['public_key_id' => $Config->getPublicKeyId(), 'private_key' => $this->eccubeConfig->get('kernel.project_dir') . '/' . $Config->getPrivateKeyPath(), 'sandbox' => $Config->getEnv() == $this->eccubeConfig['amazon_pay_v2']['env']['sandbox'] ? true : false, 'region' => 'jp']; goto MWd9w; rWO1Z: $Config = $this->configRepository->get(); goto xNL8_; MWd9w: return $config; goto HfnGY; HfnGY: } public function createCheckoutSessionPayload($cart_key) { goto soQtp; PLZhu: $payload = ['webCheckoutDetails' => ['checkoutReviewReturnUrl' => $router->generate('amazon_checkout_review', ['cart' => $cart_key], UrlGeneratorInterface::ABSOLUTE_URL)], 'paymentDetails' => ['allowOvercharge' => true], 'storeId' => $Config->getClientId(), 'deliverySpecifications' => ['addressRestrictions' => ['type' => 'Allowed', 'restrictions' => ['JP' => []]]]]; goto LXTqS; LXTqS: return json_encode($payload, JSON_FORCE_OBJECT); goto xOkQB; tHuvY: $router = $this->container->get('router'); goto PLZhu; soQtp: $Config = $this->configRepository->get(); goto tHuvY; xOkQB: } public function createUpdateCheckoutSessionPayload($Order) { goto RJFTq; NEmuj: $paymentIntent = 'AuthorizeWithCapture'; goto ASmqf; ASmqf: XpWQf: goto yDPqI; HmC01: if (!($Order->getPaymentTotal() == 0)) { goto QY7Ze; } goto Q6tN8; mcO3s: $paymentIntent = 'Authorize'; goto ydtOp; lCvme: $config = $this->configRepository->get(); goto Di0Zs; YL4pU: if ($config->getSale() == $this->eccubeConfig['amazon_pay_v2']['sale']['capture']) { goto LG0lB; } goto nFiUv; T3c97: Adh5d: goto Bc548; NygwJ: QY7Ze: goto lCvme; yDPqI: $payload = ['webCheckoutDetails' => ['checkoutResultReturnUrl' => $router->generate('amazon_pay_shopping_checkout_result', [], UrlGeneratorInterface::ABSOLUTE_URL)], 'paymentDetails' => ['paymentIntent' => $paymentIntent, 'canHandlePendingAuthorization' => false, 'chargeAmount' => ['amount' => (int) $Order->getPaymentTotal(), 'currencyCode' => "JPY"]], 'merchantMetadata' => ['merchantReferenceId' => $this->payoutSellerOrderId($Order->getId()), 'noteToBuyer' => ''], "platformId" => "A1LODGGQOBGE66"]; goto rXgEv; ydtOp: goto XpWQf; goto zeo9F; nFiUv: goto XpWQf; goto ln_sX; Q6tN8: throw AmazonPaymentException::create(AmazonPaymentException::ZERO_PAYMENT); goto NygwJ; RJFTq: $router = $this->container->get('router'); goto HmC01; Bc548: return json_encode($payload, JSON_FORCE_OBJECT); goto g0mWC; LAPTE: $payload['merchantMetadata']['merchantStoreName'] = $this->BaseInfo->getShopName(); goto T3c97; zeo9F: LG0lB: goto NEmuj; rXgEv: if (!(mb_strlen($this->BaseInfo->getShopName()) < 51)) { goto Adh5d; } goto LAPTE; Di0Zs: if ($config->getSale() == $this->eccubeConfig['amazon_pay_v2']['sale']['authori']) { goto ub9jF; } goto YL4pU; ln_sX: ub9jF: goto mcO3s; g0mWC: } public function createCompleteCheckoutSessionPayload($Order) { $payload = ['chargeAmount' => ['amount' => (int) $Order->getPaymentTotal(), 'currencyCode' => 'JPY']]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCaptureChargePayload($Order, $billingAmount = null) { $payload = ['captureAmount' => ['amount' => is_null($billingAmount) ? (int) $Order->getPaymentTotal() : $billingAmount, 'currencyCode' => 'JPY']]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCancelChargePayload($cancellationReason = null) { $payload = ['cancellationReason' => $cancellationReason]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCloseChargePermissionPayload($closureReason = null, $cancelPendingCharges = null) { $payload = ['closureReason' => $closureReason, 'cancelPendingCharges' => $cancelPendingCharges]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCreateRefundPayload($chargeId, $refundAmount) { $payload = ['chargeId' => $chargeId, 'refundAmount' => ['amount' => $refundAmount, 'currencyCode' => $this->eccubeConfig['amazon_pay_v2']['api']['payload']['currency_code']]]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCreateChargePayload($chargePermissionId, $paymentTotal, $CaptureNow = false, $canHandlePendingAuthorization = false) { $payload = ['chargePermissionId' => $chargePermissionId, 'chargeAmount' => ['amount' => $paymentTotal, 'currencyCode' => $this->eccubeConfig['amazon_pay_v2']['api']['payload']['currency_code']], 'captureNow' => $CaptureNow, 'canHandlePendingAuthorization' => $canHandlePendingAuthorization]; return json_encode($payload, JSON_FORCE_OBJECT); } public function updateCheckoutSession($Order, $amazonCheckoutSessionId) { goto BtHaE; BtHaE: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto qdDAx; PtkrW: return json_decode($result['response']); goto h3H_2; qdDAx: $result = $client->updateCheckoutSession($amazonCheckoutSessionId, $this->createUpdateCheckoutSessionPayload($Order)); goto PtkrW; h3H_2: } public function signaturePayload($payload) { goto CCHPE; GON56: return $signature; goto mTNNm; CCHPE: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto mtTTg; mtTTg: $signature = $client->generateButtonSignature($payload); goto GON56; mTNNm: } public function getCheckoutSession($amazonCheckoutSessionId) { goto siamk; k8V47: return json_decode($result['response']); goto durDR; siamk: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto WThTx; WThTx: $result = $client->getCheckoutSession($amazonCheckoutSessionId); goto k8V47; durDR: } public function completeCheckoutSession($Order, $amazonCheckoutSessionId) { goto hBo1T; ZbLYI: goto yzNd8; goto bGOt4; DTx9K: if ($result['status'] == 200 || $result['status'] == 202) { goto kjDvA; } goto I_p6w; lUwzh: $this->cancelOrder($Order); goto i6le2; B4sO2: if (!($checkoutSession && isset($checkoutSession->statusDetails->reasonCode))) { goto J8QPJ; } goto uV0qX; PwNnB: if (!$errorCode) { goto B9AK6; } goto yKJ6K; zimPs: yzNd8: goto ES8We; lEGF_: B9AK6: goto RUIvH; hBo1T: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto k2O9Q; zQ3vB: return $response; goto BgSJS; yKJ6K: throw AmazonPaymentException::create($errorCode); goto lEGF_; bGOt4: kjDvA: goto UxvVD; mi4J2: ywfhX: goto GXFm7; k2O9Q: $result = $client->completeCheckoutSession($amazonCheckoutSessionId, $this->createCompleteCheckoutSessionPayload($Order)); goto yvUFf; X2oPA: u2Elz: goto zimPs; RUIvH: J8QPJ: goto X2oPA; zGFNH: logs('amazon_pay_v2')->info('▼completeCheckoutSession statusDetails = ' . var_export($checkoutSession->statusDetails, true)); goto lUwzh; M2wle: goto yzNd8; goto mi4J2; GXFm7: logs('amazon_pay_v2')->info('▼completeCheckoutSession reasonCode = ' . $response->reasonCode . ', order_id = ' . $Order->getId()); goto j1bhp; BgSJS: yfKbb: goto M2wle; I_p6w: if (isset($response->reasonCode)) { goto ywfhX; } goto ZbLYI; wnFur: $checkoutSession = $this->getCheckoutSession($amazonCheckoutSessionId); goto B4sO2; uV0qX: $errorCode = AmazonPaymentException::getErrorCode($checkoutSession->statusDetails->reasonCode); goto zGFNH; i6le2: logs('amazon_pay_v2')->info('▼completeCheckoutSession 受注をキャンセルしました' . 'order_id = ' . $Order->getId()); goto PwNnB; yvUFf: $response = json_decode($result['response']); goto lnNYo; UxvVD: if (!($response->statusDetails->state == 'Completed')) { goto yfKbb; } goto zQ3vB; ES8We: throw new AmazonException(); goto ZCuVt; lnNYo: logs('amazon_pay_v2')->info('▼completeCheckoutSession http-status = ' . $result['status'] . ', order_id = ' . $Order->getId()); goto DTx9K; j1bhp: if (!($response->reasonCode == 'CheckoutSessionCanceled')) { goto u2Elz; } goto wnFur; ZCuVt: } private function cancelOrder($Order) { goto EZ1rY; EZ1rY: $OrderStatus = $this->orderStatusRepository->find($this->orderStatusRepository->find(OrderStatus::CANCEL)); goto R3Mi0; XZ3i3: $AmazonStatus = $this->amazonStatusRepository->find(AmazonStatus::CANCEL); goto FY3yP; FY3yP: $Order->setAmazonPayV2AmazonStatus($AmazonStatus); goto P2InY; R3Mi0: $Order->setOrderStatus($OrderStatus); goto XZ3i3; P2InY: $this->entityManager->flush(); goto CFzva; CFzva: } public function captureCharge($chargeId, $Order, $billingAmount = null) { goto D8Mi8; xc2Zm: return json_decode($result['response']); goto Sy6lF; D8Mi8: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto G2xXw; G2xXw: $headers = ['x-amz-pay-Idempotency-Key' => uniqid()]; goto hg8AC; hg8AC: $result = $client->captureCharge($chargeId, $this->createCaptureChargePayload($Order, $billingAmount), $headers); goto xc2Zm; Sy6lF: } public function cancelCharge($chargeId, $cancellationReason = null) { goto kAMpg; HhZoD: $result = $client->cancelCharge($chargeId, $payload); goto qSsR2; kAMpg: $payload = $this->createCancelChargePayload($cancellationReason); goto GezlN; qSsR2: return json_decode($result['response']); goto BGVHg; GezlN: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto HhZoD; BGVHg: } public function closeChargePermission($chargePermissionId, $closureReason = null, $cancelPendingCharges = true) { goto yKpvP; yKpvP: $payload = $this->createCloseChargePermissionPayload($closureReason, $cancelPendingCharges); goto SLC37; SLC37: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto fbwOj; Y0Rsz: return json_decode($result['response']); goto ZkyYI; fbwOj: $result = $client->closeChargePermission($chargePermissionId, $payload); goto Y0Rsz; ZkyYI: } public function createRefund($chargeId, $refundAmount, $softDescriptor = null, $idempotencyKey = null) { goto kWqNS; DxlUa: OEXa0: goto mFRx3; ReKJF: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto wE8EG; AVzeC: $idempotencyKey = uniqid(); goto Y32Om; ndDDC: $payload = array_merge($payload, ["softDescriptor" => $softDescriptor]); goto DxlUa; h_f2b: $headers = ['x-amz-pay-Idempotency-Key' => $idempotencyKey]; goto ReKJF; wE8EG: $result = $client->createRefund($payload, $headers); goto kwjCg; mFRx3: if (!($idempotencyKey == null)) { goto yiNKI; } goto AVzeC; Y32Om: yiNKI: goto h_f2b; kWqNS: $payload = $this->createCreateRefundPayload($chargeId, $refundAmount); goto Zfzr1; kwjCg: return json_decode($result['response']); goto Ejmbg; Zfzr1: if (!(null != $softDescriptor)) { goto OEXa0; } goto ndDDC; Ejmbg: } public function createCharge($chargePermissionId, $paymentTotal, $CaptureNow = false, $softDescriptor = null, $canHandlePendingAuthorization = false, $merchantMetadataMerchantReferenceId = null, $idempotencyKey = null) { goto ex62Z; HH9TK: ax77O: goto ia7Jx; Ot8Ln: N4NAQ: goto IezIE; yUNmv: $result = $client->createCharge($payload, $headers); goto TWpsr; Z9vft: $payload = array_merge($payload, ["merchantMetadata" => ["merchantReferenceId" => $merchantMetadataMerchantReferenceId]]); goto A9lJn; ia7Jx: if (!($idempotencyKey == null)) { goto N4NAQ; } goto KA8d3; KA8d3: $idempotencyKey = uniqid(); goto Ot8Ln; czGYj: $payload = array_merge($payload, ["softDescriptor" => $softDescriptor]); goto HH9TK; J9FP3: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto yUNmv; ex62Z: $payload = $this->createCreateChargePayload($chargePermissionId, $paymentTotal, $CaptureNow, $canHandlePendingAuthorization); goto c3vnf; IezIE: $headers = ['x-amz-pay-Idempotency-Key' => $idempotencyKey]; goto J9FP3; c3vnf: if (!(null != $merchantMetadataMerchantReferenceId)) { goto I58cu; } goto Z9vft; TWpsr: return json_decode($result['response']); goto DcHOl; Udol1: if (!(null != $softDescriptor)) { goto ax77O; } goto czGYj; A9lJn: I58cu: goto Udol1; DcHOl: } public function getCharge($chargeId) { goto CJ9sJ; CJ9sJ: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto CGJ0T; CGJ0T: $result = $client->getCharge($chargeId); goto I_u5p; I_u5p: return json_decode($result['response']); goto EME0h; EME0h: } public function createSigninPayload($returnUrl) { goto NdVL6; bkBlY: return json_encode($payload, JSON_FORCE_OBJECT); goto rRPl4; PO4ZM: $payload = ['signInReturnUrl' => $returnUrl, 'storeId' => $Config->getClientId()]; goto bkBlY; NdVL6: $Config = $this->configRepository->get(); goto PO4ZM; rRPl4: } public function getBuyer($buyerToken, $headers = null) { goto gh1MS; cVlY7: $result = $client->getBuyer($buyerToken, $headers); goto C3sAb; C3sAb: if (!($result['status'] != 200)) { goto sisLr; } goto aVsN3; aVsN3: throw new AmazonException(); goto WwiaV; LgNiq: return json_decode($result['response']); goto S0tPc; WwiaV: sisLr: goto LgNiq; gh1MS: $client = new AmazonPayClient($this->getAmazonPayConfig()); goto cVlY7; S0tPc: } public function loginWithBuyerId(Request $request, $buyerId) { goto hTwGl; cs7z9: foreach ($this->cartService->getCarts() as $Cart) { $this->purchaseFlow->validate($Cart, new PurchaseContext($Cart, $Customers[0])); jr2Jk: } goto ssLTs; zdSb1: $request->getSession()->migrate(true); goto pRwAa; F9Xyz: $this->cartService->save(); goto ISyWL; ssLTs: hnFZj: goto F9Xyz; hTwGl: $Customers = $this->customerRepository->getNonWithdrawingCustomers(['v2_amazon_user_id' => $buyerId]); goto hCkN5; pYjI1: $this->tokenStorage->setToken($token); goto zdSb1; ISyWL: return true; goto p5tE0; pRwAa: $this->cartService->mergeFromPersistedCart(); goto cs7z9; Q3LQd: return false; goto abW0M; D85Xj: $token = new UsernamePasswordToken($Customers[0], null, 'customer', ['ROLE_USER']); goto pYjI1; abW0M: zgxv1: goto D85Xj; hCkN5: if (!(empty($Customers[0]) || !$Customers[0] instanceof \Eccube\Entity\Customer)) { goto zgxv1; } goto Q3LQd; p5tE0: } }
<?php /* __________________________________________________ | Obfuscated by YAK Pro - Php Obfuscator 2.0.3 | | on 2023-07-05 10:12:25 | | GitHub: https://github.com/pk-fr/yakpro-po | |__________________________________________________| */ namespace Plugin\AmazonPayV2_42\Service; use Doctrine\ORM\EntityManagerInterface; use Eccube\Common\EccubeConfig; use Eccube\Entity\Master\OrderStatus; use Eccube\Repository\BaseInfoRepository; use Eccube\Repository\CustomerRepository; use Eccube\Repository\Master\OrderStatusRepository; use Eccube\Service\CartService; use Eccube\Service\PurchaseFlow\PurchaseContext; use Eccube\Service\PurchaseFlow\PurchaseFlow; use Eccube\Service\PurchaseFlow\Processor\StockReduceProcessor; use Eccube\Service\PurchaseFlow\Processor\PointProcessor; use Plugin\AmazonPayV2_42\Entity\Master\AmazonStatus; use Plugin\AmazonPayV2_42\Exception\AmazonException; use Plugin\AmazonPayV2_42\Exception\AmazonPaymentException; use Plugin\AmazonPayV2_42\Repository\ConfigRepository; use Plugin\AmazonPayV2_42\Amazon\Pay\API\Client as AmazonPayClient; use Plugin\AmazonPayV2_42\Repository\Master\AmazonStatusRepository; use GuzzleHttp\Client; use Guzzle\Http\Exception\BadResponseException; use Guzzle\Http\Exception\CurlException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Carbon\Carbon; class AmazonRequestService extends AbstractController { protected $entityManager; protected $baseInfoRepository; protected $customerRepository; protected $cartService; protected $purchaseFlow; protected $eccubeConfig; protected $configRepository; protected $Config; protected $amazonApi; protected $amazonApiConfig; protected $session; protected $tokenStorage; protected $container; private $pointProcessor; private $stockReduceProcessor; private $amazonStatusRepository; private $orderStatusRepository; public function __construct(EntityManagerInterface $entityManager, BaseInfoRepository $baseInfoRepository, CustomerRepository $customerRepository, CartService $cartService, PurchaseFlow $cartPurchaseFlow, EccubeConfig $eccubeConfig, ConfigRepository $configRepository, SessionInterface $session, TokenStorageInterface $tokenStorage, OrderStatusRepository $orderStatusRepository, AmazonStatusRepository $amazonStatusRepository, StockReduceProcessor $stockReduceProcessor, PointProcessor $pointProcessor, ContainerInterface $container) { $this->entityManager = $entityManager; $this->BaseInfo = $baseInfoRepository->get(); $this->customerRepository = $customerRepository; $this->cartService = $cartService; $this->purchaseFlow = $cartPurchaseFlow; $this->eccubeConfig = $eccubeConfig; $this->configRepository = $configRepository; $this->session = $session; $this->tokenStorage = $tokenStorage; $this->orderStatusRepository = $orderStatusRepository; $this->amazonStatusRepository = $amazonStatusRepository; $this->stockReduceProcessor = $stockReduceProcessor; $this->pointProcessor = $pointProcessor; $this->container = $container; $this->Config = $this->configRepository->get(); if ($this->Config->getAmazonAccountMode() == $this->eccubeConfig['amazon_pay_v2']['account_mode']['owned'] && $this->Config->getEnv() == $this->eccubeConfig['amazon_pay_v2']['env']['prod']) { $this->amazonApi = $this->eccubeConfig['amazon_pay_v2']['api']['prod']; goto b30at; } $this->amazonApi = $this->eccubeConfig['amazon_pay_v2']['api']['sandbox']; b30at: $this->amazonApiConfig = $this->eccubeConfig['amazon_pay_v2']['api']['config']; } private function payoutSellerOrderId($orderId, $request_type = '') { $request_attr = $request_type === '' ? '' : strtoupper($request_type) . '_'; $prefix = ''; $iniFile = "/var/www/html/../amazon_pay_config.ini"; if (!file_exists($iniFile)) { goto glbcK; } $arrInit = parse_ini_file($iniFile); $prefix = $arrInit['prefix']; glbcK: $prefix = $prefix === '' ? '' : $prefix . '_'; $timestamp = ''; if (!($this->Config->getAmazonAccountMode() === $this->eccubeConfig['amazon_pay_v2']['account_mode']['shared'])) { goto mpbQ9; } $timestamp = Carbon::now()->timestamp; mpbQ9: $timestamp = $timestamp === '' ? '' : $timestamp . '_'; return $timestamp . $prefix . $request_attr . $orderId; } protected function getAmazonPayConfig() { $Config = $this->configRepository->get(); $config = ['public_key_id' => $Config->getPublicKeyId(), 'private_key' => $this->eccubeConfig->get('kernel.project_dir') . '/' . $Config->getPrivateKeyPath(), 'sandbox' => $Config->getEnv() == $this->eccubeConfig['amazon_pay_v2']['env']['sandbox'] ? true : false, 'region' => 'jp']; return $config; } public function createCheckoutSessionPayload($cart_key) { $Config = $this->configRepository->get(); $router = $this->container->get('router'); $payload = ['webCheckoutDetails' => ['checkoutReviewReturnUrl' => $router->generate('amazon_checkout_review', ['cart' => $cart_key], UrlGeneratorInterface::ABSOLUTE_URL)], 'paymentDetails' => ['allowOvercharge' => true], 'storeId' => $Config->getClientId(), 'deliverySpecifications' => ['addressRestrictions' => ['type' => 'Allowed', 'restrictions' => ['JP' => []]]]]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createUpdateCheckoutSessionPayload($Order) { $router = $this->container->get('router'); if (!($Order->getPaymentTotal() == 0)) { $config = $this->configRepository->get(); if ($config->getSale() == $this->eccubeConfig['amazon_pay_v2']['sale']['authori']) { $paymentIntent = 'Authorize'; goto XpWQf; } if ($config->getSale() == $this->eccubeConfig['amazon_pay_v2']['sale']['capture']) { $paymentIntent = 'AuthorizeWithCapture'; goto ASmqf; } ASmqf: XpWQf: $payload = ['webCheckoutDetails' => ['checkoutResultReturnUrl' => $router->generate('amazon_pay_shopping_checkout_result', [], UrlGeneratorInterface::ABSOLUTE_URL)], 'paymentDetails' => ['paymentIntent' => $paymentIntent, 'canHandlePendingAuthorization' => false, 'chargeAmount' => ['amount' => (int) $Order->getPaymentTotal(), 'currencyCode' => "JPY"]], 'merchantMetadata' => ['merchantReferenceId' => $this->payoutSellerOrderId($Order->getId()), 'noteToBuyer' => ''], "platformId" => "A1LODGGQOBGE66"]; if (!(mb_strlen($this->BaseInfo->getShopName()) < 51)) { goto Adh5d; } $payload['merchantMetadata']['merchantStoreName'] = $this->BaseInfo->getShopName(); Adh5d: return json_encode($payload, JSON_FORCE_OBJECT); } throw AmazonPaymentException::create(AmazonPaymentException::ZERO_PAYMENT); } public function createCompleteCheckoutSessionPayload($Order) { $payload = ['chargeAmount' => ['amount' => (int) $Order->getPaymentTotal(), 'currencyCode' => 'JPY']]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCaptureChargePayload($Order, $billingAmount = null) { $payload = ['captureAmount' => ['amount' => is_null($billingAmount) ? (int) $Order->getPaymentTotal() : $billingAmount, 'currencyCode' => 'JPY']]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCancelChargePayload($cancellationReason = null) { $payload = ['cancellationReason' => $cancellationReason]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCloseChargePermissionPayload($closureReason = null, $cancelPendingCharges = null) { $payload = ['closureReason' => $closureReason, 'cancelPendingCharges' => $cancelPendingCharges]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCreateRefundPayload($chargeId, $refundAmount) { $payload = ['chargeId' => $chargeId, 'refundAmount' => ['amount' => $refundAmount, 'currencyCode' => $this->eccubeConfig['amazon_pay_v2']['api']['payload']['currency_code']]]; return json_encode($payload, JSON_FORCE_OBJECT); } public function createCreateChargePayload($chargePermissionId, $paymentTotal, $CaptureNow = false, $canHandlePendingAuthorization = false) { $payload = ['chargePermissionId' => $chargePermissionId, 'chargeAmount' => ['amount' => $paymentTotal, 'currencyCode' => $this->eccubeConfig['amazon_pay_v2']['api']['payload']['currency_code']], 'captureNow' => $CaptureNow, 'canHandlePendingAuthorization' => $canHandlePendingAuthorization]; return json_encode($payload, JSON_FORCE_OBJECT); } public function updateCheckoutSession($Order, $amazonCheckoutSessionId) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->updateCheckoutSession($amazonCheckoutSessionId, $this->createUpdateCheckoutSessionPayload($Order)); return json_decode($result['response']); } public function signaturePayload($payload) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $signature = $client->generateButtonSignature($payload); return $signature; } public function getCheckoutSession($amazonCheckoutSessionId) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->getCheckoutSession($amazonCheckoutSessionId); return json_decode($result['response']); } public function completeCheckoutSession($Order, $amazonCheckoutSessionId) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->completeCheckoutSession($amazonCheckoutSessionId, $this->createCompleteCheckoutSessionPayload($Order)); $response = json_decode($result['response']); logs('amazon_pay_v2')->info('▼completeCheckoutSession http-status = ' . $result['status'] . ', order_id = ' . $Order->getId()); if ($result['status'] == 200 || $result['status'] == 202) { if (!($response->statusDetails->state == 'Completed')) { goto yzNd8; } return $response; } if (isset($response->reasonCode)) { logs('amazon_pay_v2')->info('▼completeCheckoutSession reasonCode = ' . $response->reasonCode . ', order_id = ' . $Order->getId()); if (!($response->reasonCode == 'CheckoutSessionCanceled')) { goto u2Elz; } $checkoutSession = $this->getCheckoutSession($amazonCheckoutSessionId); if (!($checkoutSession && isset($checkoutSession->statusDetails->reasonCode))) { goto J8QPJ; } $errorCode = AmazonPaymentException::getErrorCode($checkoutSession->statusDetails->reasonCode); logs('amazon_pay_v2')->info('▼completeCheckoutSession statusDetails = ' . var_export($checkoutSession->statusDetails, true)); $this->cancelOrder($Order); logs('amazon_pay_v2')->info('▼completeCheckoutSession 受注をキャンセルしましたorder_id = ' . $Order->getId()); if (!$errorCode) { J8QPJ: u2Elz: goto zimPs; } throw AmazonPaymentException::create($errorCode); } zimPs: yzNd8: throw new AmazonException(); } private function cancelOrder($Order) { $OrderStatus = $this->orderStatusRepository->find($this->orderStatusRepository->find(OrderStatus::CANCEL)); $Order->setOrderStatus($OrderStatus); $AmazonStatus = $this->amazonStatusRepository->find(AmazonStatus::CANCEL); $Order->setAmazonPayV2AmazonStatus($AmazonStatus); $this->entityManager->flush(); } public function captureCharge($chargeId, $Order, $billingAmount = null) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $headers = ['x-amz-pay-Idempotency-Key' => uniqid()]; $result = $client->captureCharge($chargeId, $this->createCaptureChargePayload($Order, $billingAmount), $headers); return json_decode($result['response']); } public function cancelCharge($chargeId, $cancellationReason = null) { $payload = $this->createCancelChargePayload($cancellationReason); $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->cancelCharge($chargeId, $payload); return json_decode($result['response']); } public function closeChargePermission($chargePermissionId, $closureReason = null, $cancelPendingCharges = true) { $payload = $this->createCloseChargePermissionPayload($closureReason, $cancelPendingCharges); $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->closeChargePermission($chargePermissionId, $payload); return json_decode($result['response']); } public function createRefund($chargeId, $refundAmount, $softDescriptor = null, $idempotencyKey = null) { $payload = $this->createCreateRefundPayload($chargeId, $refundAmount); if (!(null != $softDescriptor)) { goto OEXa0; } $payload = array_merge($payload, ["softDescriptor" => $softDescriptor]); OEXa0: if (!($idempotencyKey == null)) { goto yiNKI; } $idempotencyKey = uniqid(); yiNKI: $headers = ['x-amz-pay-Idempotency-Key' => $idempotencyKey]; $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->createRefund($payload, $headers); return json_decode($result['response']); } public function createCharge($chargePermissionId, $paymentTotal, $CaptureNow = false, $softDescriptor = null, $canHandlePendingAuthorization = false, $merchantMetadataMerchantReferenceId = null, $idempotencyKey = null) { $payload = $this->createCreateChargePayload($chargePermissionId, $paymentTotal, $CaptureNow, $canHandlePendingAuthorization); if (!(null != $merchantMetadataMerchantReferenceId)) { goto I58cu; } $payload = array_merge($payload, ["merchantMetadata" => ["merchantReferenceId" => $merchantMetadataMerchantReferenceId]]); I58cu: if (!(null != $softDescriptor)) { goto ax77O; } $payload = array_merge($payload, ["softDescriptor" => $softDescriptor]); ax77O: if (!($idempotencyKey == null)) { goto N4NAQ; } $idempotencyKey = uniqid(); N4NAQ: $headers = ['x-amz-pay-Idempotency-Key' => $idempotencyKey]; $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->createCharge($payload, $headers); return json_decode($result['response']); } public function getCharge($chargeId) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->getCharge($chargeId); return json_decode($result['response']); } public function createSigninPayload($returnUrl) { $Config = $this->configRepository->get(); $payload = ['signInReturnUrl' => $returnUrl, 'storeId' => $Config->getClientId()]; return json_encode($payload, JSON_FORCE_OBJECT); } public function getBuyer($buyerToken, $headers = null) { $client = new AmazonPayClient($this->getAmazonPayConfig()); $result = $client->getBuyer($buyerToken, $headers); if (!($result['status'] != 200)) { return json_decode($result['response']); } throw new AmazonException(); } public function loginWithBuyerId(Request $request, $buyerId) { $Customers = $this->customerRepository->getNonWithdrawingCustomers(['v2_amazon_user_id' => $buyerId]); if (!(empty($Customers[0]) || !$Customers[0] instanceof \Eccube\Entity\Customer)) { $token = new UsernamePasswordToken($Customers[0], null, 'customer', ['ROLE_USER']); $this->tokenStorage->setToken($token); $request->getSession()->migrate(true); $this->cartService->mergeFromPersistedCart(); foreach ($this->cartService->getCarts() as $Cart) { $this->purchaseFlow->validate($Cart, new PurchaseContext($Cart, $Customers[0])); } $this->cartService->save(); return true; } return false; } }
Malware detection & removal plugin for WordPress
(C)2020 Wordpress Doctor All rights reserved.