Snippets

Metadrop Simular paid in full en commerce order

Created by Omar

  /**
   * Recreate paid in full.
   *
   * @Given the last order is paid in full
   */
  public function lastOrderIsPaidInFull() {
    $result = \Drupal::entityQuery("commerce_order")
      ->accessCheck(FALSE)
      ->sort('order_id', 'desc')
      ->range(0, 1)
      ->execute();
    $order_id = reset($result);
    $order = \Drupal::entityTypeManager()->getStorage('commerce_order')->load($order_id);
    $payment_storage = \Drupal::entityTypeManager()->getStorage('commerce_payment');
    $payment = $payment_storage->create([
      'state' => 'authorization',
      'amount' => $order->getTotalPrice(),
      'payment_gateway' => 'redsys_001',
      'order_id' => $order->id(),
      'test' => TRUE,
      'remote_id' => random_int('100000', '999999'),
      'remote_state' => t('Test payment'),
      'authorized' => \Drupal::time()->getRequestTime(),
    ]);
    $payment->save();
    return $order;
  }

  /**
   * Complete a donation checkout with credit card payment method.
   *
   * @When I complete order
   */
  public function completeOrder() {
    $order = $this->lastOrderIsPaidInFull();
    $order->state = 'completed';
    $order->save();
    // Set order as complete
  }

  /**
   * Complete a payment attaching payment method to order.
   *
   * @When I complete order with payment method
   */
  public function completeMembership() {
    $order = $this->lastOrderIsPaidInFull();
    $payment_method = \Drupal::entityTypeManager()->getStorage('commerce_payment_method')
      ->create([
        'type' => 'credit_card',
        'payment_gateway' => 'redsys',
        'payment_gateway_mode' => 'test',
        'remote_id' => random_int('100000', '999999'),
        'reusable' => 1,
        'expires' => REQUEST_TIME + 60 * 60 * 24 * 365,
        'card_type' => 'XXX',
        'card_number' => 'XX',
        'card_exp_month' => 'XX',
        'card_exp_year' => 'XX',
      ]);
    $payment_method->save();
    $order->set('payment_method', $payment_method->id());
    $order->state = 'completed';
    $order->save();
  }

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.