PaymentStorage.php in Commerce Core 8.2        
                          
                  
                        
  
  
  
  
  
File
  modules/payment/src/PaymentStorage.php
  
    View source  
  <?php
namespace Drupal\commerce_payment;
use Drupal\commerce\CommerceContentEntityStorage;
use Drupal\commerce_order\Entity\OrderInterface;
class PaymentStorage extends CommerceContentEntityStorage implements PaymentStorageInterface {
  
  public function loadByRemoteId($remote_id) {
    $payments = $this
      ->loadByProperties([
      'remote_id' => $remote_id,
    ]);
    $payment = reset($payments);
    return $payment ?: NULL;
  }
  
  public function loadMultipleByOrder(OrderInterface $order) {
    $query = $this
      ->getQuery()
      ->condition('order_id', $order
      ->id())
      ->accessCheck(FALSE)
      ->sort('payment_id');
    $result = $query
      ->execute();
    return $result ? $this
      ->loadMultiple($result) : [];
  }
  
  protected function doCreate(array $values) {
    
    if (!isset($values['type']) && !empty($values['payment_gateway'])) {
      $payment_gateway = $values['payment_gateway'];
      if (is_string($payment_gateway)) {
        
        $payment_gateway_storage = $this->entityTypeManager
          ->getStorage('commerce_payment_gateway');
        
        $payment_gateway = $payment_gateway_storage
          ->load($payment_gateway);
      }
      $payment_type = $payment_gateway
        ->getPlugin()
        ->getPaymentType();
      $values['type'] = $payment_type
        ->getPluginId();
    }
    return parent::doCreate($values);
  }
}