public function update(array $update = [], $updateSubscriptions = false) { if (!$this->id) { throw new LaraMillException('Offer ID is needed to update offer.', 403); } $offer = new \Paymill\Models\Request\Offer(); $offer->setId($this->id)->setUpdateSubscriptions($updateSubscriptions); if (isset($update['amount'])) { $offer->setAmount($update['amount']); } if (isset($update['currency'])) { $offer->setCurrency($update['currency']); } if (isset($update['interval'])) { $offer->setInterval($update['interval']); } if (isset($update['name'])) { $offer->setName($update['name']); } return $this->request->update($offer); }
define('CUSTOMER_EMAIL', 'SOME_TEST_EMAIL'); require 'vendor/autoload.php'; if (isset($_POST['paymillToken'])) { $service = new Paymill\Request(PAYMILL_API_KEY); $client = new Paymill\Models\Request\Client(); $payment = new Paymill\Models\Request\Payment(); $offer = new Paymill\Models\Request\Offer(); $subscription = new Paymill\Models\Request\Subscription(); try { $client->setEmail(CUSTOMER_EMAIL); $client->setDescription('This is a Testuser.'); $clientResponse = $service->create($client); $payment->setClient($clientResponse->getId()); $payment->setToken($_POST['paymillToken']); $paymentResponse = $service->create($payment); $offer->setAmount($_POST['amount'])->setCurrency($_POST['currency'])->setInterval($_POST['interval'])->setName($_POST['offer-name']); $offerResponse = $service->create($offer); $subscription->setClient($clientResponse->getId()); $subscription->setPayment($paymentResponse->getId()); $subscription->setOffer($offerResponse->getId()); $subscriptionResponse = $service->create($subscription); $title = "<h1>We appreciate your order!</h1>"; $result = print_r($subscriptionResponse, true); } catch (\Paymill\Services\PaymillException $e) { $title = "<h1>An error has occoured!</h1>"; $result = print_r($e->getResponseCode(), true) . " <br />" . print_r($e->getResponseCode(), true) . " <br />" . print_r($e->getErrorMessage(), true); } } ?> </head> <body>
/** * Allow admin to create new offers. * * @param CreateNewOfferRequest $request */ public function create(CreateNewOfferRequest $request) { // Create new paymill request $paymillRequest = new \Paymill\Request(env('PAYMILL_API_KEY')); $currency = 'EUR'; $interval = '1 MONTH'; // Create new offer $paymillOffer = new \Paymill\Models\Request\Offer(); $paymillOffer->setAmount($request->get('offer_amount'))->setCurrency($currency)->setInterval($interval)->setName($request->get('offer_name')); $response = $paymillRequest->create($paymillOffer); $promoCode = $request->get('promo_code'); $enableOffer = $request->get('enable_offer'); $useOnSignUp = $request->get('use_on_sign_up'); // If this offer will be used on sign up make sure it is the only one if ($useOnSignUp) { Offer::where('use_on_sign_up', true)->update(['use_on_sign_up' => false]); $promoCode = ''; $enableOffer = false; } // An enabled offer can not be used on sign up if ($enableOffer) { $useOnSignUp = false; } // Save in database Offer::create(['paymill_offer_id' => $response->getId(), 'name' => $request->get('offer_name'), 'amount' => $request->get('offer_amount'), 'interval' => $interval, 'currency' => $currency, 'promo_code' => $promoCode, 'use_on_sign_up' => (bool) $useOnSignUp, 'disabled' => !(bool) $enableOffer]); // Return response $ajaxResponse = new AjaxResponse(); $ajaxResponse->setSuccessMessage(trans('offers.offer_created')); return response($ajaxResponse->get())->header('Content-Type', 'application/json'); }