PaymentDataBuilder.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Braintree\Gateway\Request;
  7. use Magento\Braintree\Gateway\Config\Config;
  8. use Magento\Braintree\Gateway\SubjectReader;
  9. use Magento\Braintree\Observer\DataAssignObserver;
  10. use Magento\Payment\Gateway\Request\BuilderInterface;
  11. use Magento\Payment\Helper\Formatter;
  12. /**
  13. * Payment Data Builder
  14. */
  15. class PaymentDataBuilder implements BuilderInterface
  16. {
  17. use Formatter;
  18. /**
  19. * The billing amount of the request. This value must be greater than 0,
  20. * and must match the currency format of the merchant account.
  21. */
  22. const AMOUNT = 'amount';
  23. /**
  24. * One-time-use token that references a payment method provided by your customer,
  25. * such as a credit card or PayPal account.
  26. *
  27. * The nonce serves as proof that the user has authorized payment (e.g. credit card number or PayPal details).
  28. * This should be sent to your server and used with any of Braintree's server-side client libraries
  29. * that accept new or saved payment details.
  30. * This can be passed instead of a payment_method_token parameter.
  31. */
  32. const PAYMENT_METHOD_NONCE = 'paymentMethodNonce';
  33. /**
  34. * @deprecated
  35. * @see \Magento\Braintree\Gateway\Request\MerchantAccountDataBuilder
  36. */
  37. const MERCHANT_ACCOUNT_ID = 'merchantAccountId';
  38. /**
  39. * Order ID
  40. */
  41. const ORDER_ID = 'orderId';
  42. /**
  43. * @var SubjectReader
  44. */
  45. private $subjectReader;
  46. /**
  47. * @param Config $config
  48. * @param SubjectReader $subjectReader
  49. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  50. */
  51. public function __construct(Config $config, SubjectReader $subjectReader)
  52. {
  53. $this->subjectReader = $subjectReader;
  54. }
  55. /**
  56. * @inheritdoc
  57. */
  58. public function build(array $buildSubject)
  59. {
  60. $paymentDO = $this->subjectReader->readPayment($buildSubject);
  61. $payment = $paymentDO->getPayment();
  62. $order = $paymentDO->getOrder();
  63. $result = [
  64. self::AMOUNT => $this->formatPrice($this->subjectReader->readAmount($buildSubject)),
  65. self::PAYMENT_METHOD_NONCE => $payment->getAdditionalInformation(
  66. DataAssignObserver::PAYMENT_METHOD_NONCE
  67. ),
  68. self::ORDER_ID => $order->getOrderIncrementId()
  69. ];
  70. return $result;
  71. }
  72. }