/**
  * Create Redirect response to complete cart.
  *
  * @param int $id
  * @param \Userdesk\Subscription\Contracts\Product $product
  * @param \Userdesk\Subscription\Contracts\Consumer $consumer
  * @return \Illuminate\Http\Response|null
  */
 public function complete(int $id, SubscriptionProductContract $product, SubscriptionConsumerContract $consumer)
 {
     $params = ['mode' => '2CO', 'sid' => array_get($this->config, 'sid'), 'li_0_type' => 'product', 'li_0_name' => $product->getTitle(), 'li_0__description' => $product->getDescription(), 'li_0_price' => $product->getPrice(), 'li_0_recurrence' => $product->getFrequency() == 'month' ? '1 Month' : ($product->getFrequency() == 'year' ? '1 Year' : ''), 'li_0_duration' => $product->getFrequency() == 'year' || $product->getFrequency() == 'month' ? 'Forever' : '', 'li_0_tangible' => 'N', 'li_0_quantity' => '1', 'merchant_order_id' => $id, 'card_holder_name' => $consumer->getName(), 'street_address' => $consumer->getAddress(), 'street_address2' => '', 'city' => $consumer->getCity(), 'state' => $consumer->getState(), 'zip' => $consumer->getZip(), 'country' => $consumer->getCountry(), 'email' => $consumer->getEmail(), 'phone' => $consumer->getPhone(), 'purchase_step' => 'payment-method', 'x_receipt_link_url' => $product->getReturnUrl(), 'ipn_url' => $product->getIpnUrl(), 'submit' => 'Checkout'];
     if ($product->getDiscount() > 0) {
         $params = array_merge($params, ['li_0_startup_fee' => $product->getDiscount()]);
     }
     $url = sprintf('https://www.2checkout.com/checkout/purchase?%s', http_build_query($params));
     return redirect()->away($url);
 }
 /**
  * Create Redirect response to complete cart.
  *
  * @param int $id
  * @param \Userdesk\Subscription\Contracts\Product $product
  * @param \Userdesk\Subscription\Contracts\Consumer $consumer
  * @return \Illuminate\Http\Response|null
  */
 public function complete(int $id, SubscriptionProductContract $product, SubscriptionConsumerContract $consumer = null)
 {
     $params = ['business' => array_get($this->config, 'email'), 'currency_code' => 'USD', 'no_shipping' => 1, 'no_note' => 1, 'item_name' => $product->getTitle(), 'item_number' => $id, 'cpp_header_image' => array_get($this->config, 'logo'), 'cpp_header_color' => 'FFFFFF', 'notify_url' => $product->getIpnUrl(), 'return' => $product->getReturnUrl(), 'cancel_return' => $product->getCancelUrl(), 'submit' => 'Pay Using PayPal'];
     $recur = $this->getRecurrenceString($product->getRecurrence());
     if ($product->getRecurrence() != 'none') {
         $params = array_merge($params, ['cmd' => '_xclick-subscriptions', 'a3' => $product->getPrice(), 'p3' => $product->getFrequency(), 't3' => $recur, 'src' => 1]);
         if ($product->getDiscount() > 0) {
             $params = array_merge($params, ['a1' => sprintf("%.02d", $product->getPrice() - $product->getDiscount()), 'p1' => $product->getFrequency(), 't1' => $recur]);
         }
     } else {
         $params = array_merge($params, ['cmd' => '_xclick', 'amount' => $product->getPrice()]);
     }
     $redir_url = sprintf('https://www.paypal.com/cgi-bin/webscr?%s', http_build_query($params));
     return redirect()->away($redir_url);
 }