diff --git a/.env b/.env index 32f3c16..9c7c8eb 100644 --- a/.env +++ b/.env @@ -4,11 +4,12 @@ APP_DEBUG=true APP_KEY=base64:HrWQ9AV3Zt2TU0iq1OeUUpTUaXwNUdh8xHmx7RXTif4= APP_URL=https://mivita.local/ APP_DOMAIN=mivita.local -APP_PROTOCOL=https:// +APP_PROTOCOL=http:// APP_URL_MAIN= APP_URL_CHECKOUT=checkout. #APP_URL_MAIN=dev. APP_URL_CRM=mein. +APP_CHECKOUT_MAIL=k.adametz@kagado.de LOG_CHANNEL=stack diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 2453cbb..1ce9f87 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,11 +2,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + + + - + - - + + - + - - + + - + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -269,16 +325,6 @@ - date - birthdatepicker - data - tea - lea - lead - accepted_active - mail - speic - your Data your render base_ @@ -299,9 +345,25 @@ Util use Util hidde + country_id + user_shop + with + paid + checkout + des + totalWithShipping + cardexpiredate + getS + slat + + + $PROJECT_DIR$/app + $PROJECT_DIR$/resources/views/web + $PROJECT_DIR$/app/Http/Controllers + $PROJECT_DIR$/database/migrations @@ -339,18 +401,6 @@ @@ -524,10 +586,10 @@ - @@ -561,6 +623,14 @@ + + + + + + + + @@ -576,6 +646,18 @@ + + + + + + + + + + + + @@ -587,6 +669,11 @@ + + + + + @@ -598,11 +685,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -614,7 +725,7 @@ - + @@ -648,6 +759,16 @@ + + + + + + + + + + @@ -666,18 +787,18 @@ + + + + + + + - - - - - - - - @@ -755,10 +880,10 @@ - + - + @@ -788,274 +913,13 @@ - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1066,20 +930,17 @@ - + - - + + - - - - + - - + + @@ -1090,55 +951,361 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index 025281f..e345047 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -5,7 +5,7 @@ namespace PHPSTORM_META { /** * PhpStorm Meta file, to provide autocomplete information for PhpStorm - * Generated on 2019-02-21 17:50:01. + * Generated on 2019-02-26 16:09:06. * * @author Barry vd. Heuvel * @see https://github.com/barryvdh/laravel-ide-helper diff --git a/_ide_helper.php b/_ide_helper.php index d6b8295..ad98127 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -3,7 +3,7 @@ /** * A helper file for Laravel 5, to provide autocomplete information to your IDE - * Generated for Laravel 5.6.39 on 2019-02-21 17:50:01. + * Generated for Laravel 5.6.39 on 2019-02-26 16:09:06. * * This file should not be included in your code, only analyzed by your IDE! * diff --git a/_ide_helper_models.php b/_ide_helper_models.php index a54a3b2..634d5d4 100644 --- a/_ide_helper_models.php +++ b/_ide_helper_models.php @@ -132,6 +132,37 @@ namespace App\Models{ class Category extends \Eloquent {} } +namespace App\Models{ +/** + * App\Models\ShoppingOrderItem + * + * @property int $id + * @property int $shopping_order_id + * @property string|null $row_id + * @property int $product_id + * @property int|null $qty + * @property float|null $price + * @property string|null $slug + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Product $product + * @property-read \App\Models\ShoppingOrder $shopping_order + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem wherePrice($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereProductId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereQty($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereRowId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereShoppingOrderId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereSlug($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereUpdatedAt($value) + */ + class ShoppingOrderItem extends \Eloquent {} +} + namespace App\Models{ /** * App\Models\UserUpdateEmail @@ -187,6 +218,97 @@ namespace App\Models{ class ShippingPrice extends \Eloquent {} } +namespace App\Models{ +/** + * App\Models\ShoppingUser + * + * @property int $id + * @property string|null $billing_salutation + * @property string|null $billing_company + * @property string|null $billing_firstname + * @property string|null $billing_lastname + * @property string|null $billing_address + * @property string|null $billing_address_2 + * @property string|null $billing_zipcode + * @property string|null $billing_city + * @property int $billing_country_id + * @property string|null $billing_phone + * @property string|null $billing_email + * @property int $accepted_data_checkbox + * @property int $same_as_billing + * @property string|null $shipping_salutation + * @property string|null $shipping_company + * @property string|null $shipping_firstname + * @property string|null $shipping_lastname + * @property string|null $shipping_address + * @property string|null $shipping_address_2 + * @property string|null $shipping_zipcode + * @property string|null $shipping_city + * @property int $shipping_country_id + * @property string|null $shipping_phone + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ShoppingOrder[] $Shopping_orders + * @property-read \App\Models\Country $billing_country + * @property-read \App\Models\Country $shipping_country + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereAcceptedDataCheckbox($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingAddress($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingAddress2($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingCompany($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingLastname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingPhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingSalutation($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereBillingZipcode($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereSameAsBilling($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingAddress($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingAddress2($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingCity($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingCompany($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingFirstname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingLastname($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingPhone($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingSalutation($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereShippingZipcode($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingUser whereUpdatedAt($value) + */ + class ShoppingUser extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\ShoppingInstance + * + * @property string $identifier + * @property int $user_shop_id + * @property int $country_id + * @property string $subdomain + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Country $country + * @property-read \App\Models\UserShop $user_shop + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereIdentifier($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereSubdomain($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingInstance whereUserShopId($value) + */ + class ShoppingInstance extends \Eloquent {} +} + namespace App\Models{ /** * App\Models\Product @@ -358,6 +480,81 @@ namespace App\Models{ class ProductImage extends \Eloquent {} } +namespace App\Models{ +/** + * App\Models\ShoppingPayment + * + * @property int $id + * @property int $shopping_order_id + * @property string $clearingtype + * @property string|null $wallettype + * @property string|null $onlinebanktransfertype + * @property string $reference + * @property int $amount + * @property string $currency + * @property int|null $status + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\PaymentTransaction[] $payment_transactions + * @property-read \App\Models\ShoppingOrder $shopping_order + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereAmount($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereClearingtype($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereCurrency($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereOnlinebanktransfertype($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereReference($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereShoppingOrderId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingPayment whereWallettype($value) + */ + class ShoppingPayment extends \Eloquent {} +} + +namespace App\Models{ +/** + * App\Models\PaymentTransaction + * + * @property int $id + * @property int $shopping_payment_id + * @property string $request + * @property int $txid + * @property int $userid + * @property string|null $status + * @property string|null $key + * @property string|null $txaction + * @property string|null $transmitted_data + * @property int|null $errorcode + * @property string|null $errormessage + * @property string|null $customermessage + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\ShoppingPayment $shopping_order + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereCustomermessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereErrorcode($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereErrormessage($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereKey($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereRequest($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereShoppingPaymentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereStatus($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereTransmittedData($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereTxaction($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereTxid($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\PaymentTransaction whereUserid($value) + */ + class PaymentTransaction extends \Eloquent {} +} + namespace App\Models{ /** * App\Models\Attribute @@ -390,6 +587,50 @@ namespace App\Models{ class Attribute extends \Eloquent {} } +namespace App\Models{ +/** + * App\Models\ShoppingOrder + * + * @property int $id + * @property int $shopping_user_id + * @property int $country_id + * @property int $user_shop_id + * @property float|null $total + * @property float|null $shipping + * @property float|null $subtotal + * @property float|null $tax_rate + * @property float|null $tax + * @property float|null $total_shipping + * @property int|null $weight + * @property int|null $paid + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\Models\Country $country + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ShoppingOrderItem[] $shopping_order_items + * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ShoppingPayment[] $shopping_payments + * @property-read \App\Models\ShoppingUser $shopping_user + * @property-read \App\Models\UserShop $user_shop + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereCountryId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder wherePaid($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereShipping($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereShoppingUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereSubtotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereTax($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereTaxRate($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereTotal($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereTotalShipping($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereUserShopId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrder whereWeight($value) + */ + class ShoppingOrder extends \Eloquent {} +} + namespace App\Models{ /** * App\Models\UserAccount diff --git a/app/Http/Controllers/Pay/PayoneController.php b/app/Http/Controllers/Pay/PayoneController.php index 22f554f..d4870a2 100644 --- a/app/Http/Controllers/Pay/PayoneController.php +++ b/app/Http/Controllers/Pay/PayoneController.php @@ -1,12 +1,5 @@ 'PayPal', + 'cc' => 'CreditCard', + 'sb#GPY' => 'giropay', + 'sb#PNT' => 'Sofort', + 'wlt#PDT' => 'paydirekt', + 'fnc' => 'Rechnungskauf', + 'pref' => 'Vorauskasse', + ];*/ +namespace App\Http\Controllers\Pay; + +use App\Http\Controllers\Controller; +use App\Models\PaymentTransaction; +use App\Models\ShoppingPayment; +use App\Services\Payone; +use Illuminate\Http\Request; +use Util; +use Yard; + class PayoneController extends Controller { @@ -30,210 +42,264 @@ class PayoneController extends Controller const REFUND = 'refund'; const DEBIT = 'debit'; - private $default = []; private $personalData = []; - private $deliveryData = []; private $method = []; private $prepayment = []; - private $onlineTransfer = []; - private $creditCard = []; - private $url = []; + /* private $onlineTransfer = []; + private $creditCard = []; */ + private $deliveryData = []; + + + // private $payment_method; + private $urls = []; + + private $shopping_user; + private $shopping_order; + private $shopping_payment; + + private $reference; + + public function __construct() { + + $this->default = \Config::get('payone.defaults'); + } + + + public function init($shopping_user, $shopping_order){ + $this->shopping_user = $shopping_user; + $this->shopping_order = $shopping_order; + } + + public function getShoppingPayment(){ + return $this->shopping_payment; + } + + //make Payone payment + public function setPrePayment($payment_method, $amount, $currency, $cc_ret = []){ + + $this->reference = substr(uniqid(true), 0, 16); + $this->setMethod($payment_method, $cc_ret); + + $this->urls = [ + 'successurl' => route('checkout.transaction_status', ['success', $this->reference]), + 'errorurl' => route('checkout.transaction_status', ['error', $this->reference]), + 'backurl' => route('checkout.transaction_status', ['cancel', $this->reference]), + ]; + + $this->prepayment = [ + "reference" => $this->reference, // a unique reference, e.g. order number + "amount" => $amount, // amount in smallest currency unit, i.e. cents + "currency" => $currency, + "param" => $this->shopping_order->id, + + ]; + + $this->shopping_payment = ShoppingPayment::create([ + 'shopping_order_id' => $this->shopping_order->id, + 'clearingtype' => $this->method["clearingtype"], + 'wallettype' => $this->method["wallettype"], + 'onlinebanktransfertype' => $this->method["onlinebanktransfertype"], + 'reference' => $this->reference, + 'amount' => $amount, + 'currency' => $currency, + ]); + + return $this->reference; + } + + public function setPersonalData($data){ + + $this->personalData = [ + // "salutation" => "Mr.", + // "firstname" => "Henry", + "lastname" => "Player", // mandatory + // "street" => "Royal Street 1", + // "zip" => "24118", + // "city" => "Kiel", + "country" => "DE", // mandatory + //"email" => " info-buyer@mivita.care", + "language" => "de" + ]; + + + /* $this->personalData = array( + "salutation" => "Herr", + "title" => "Dr.", + "firstname" => "Paul", + "lastname" => "Neverpayer", + "street" => "Fraunhoferstraße 2-4", + "addressaddition" => "EG", + "zip" => "24118", + "city" => "Kiel", + "country" => "DE", + "email" => "paul.neverpayer@payone.de", + "telephonenumber" => "043125968500", + "birthday" => "19700204", + "language" => "de", + "gender" => "m", + "ip" => "8.8.8.8" + ); + */ + + /** + * Paydirekt requires both, personal data and shipping data + */ + /* $this->deliveryData = array( + "shipping_firstname" => "Paul", + "shipping_lastname" => "Neverpayer", + "shipping_street" => "Hamburger Allee 26-28", + "shipping_zip" => "60486", + "shipping_city" => "Frankfurt am Main", + "shipping_country" => "DE" + );*/ - public function __construct($payment_method = null) { + + } + + private function setMethod($payment_method, $cc_ret = []){ if($payment_method){ - if(strpos($payment_method, '#')){ $payment_method = explode('#', $payment_method); - //wallet + //wallet Paypal if($payment_method[0] == 'wlt'){ $this->method = [ "clearingtype" => "wlt", "wallettype" => $payment_method[1], - "request" => "authorization", + 'onlinebanktransfertype' => "", + "request" => "authorization" ]; } //Online-Überweisung if($payment_method[0] == 'sb'){ $this->method = [ "clearingtype" => "sb", + "wallettype" => "", "onlinebanktransfertype" => $payment_method[1], // this is the type for Sofort.com "bankcountry" => "DE", // we need to know the country of the customer's bank, i.e. of the invoice address "request" => "authorization", ]; - } + + //Rechnungskauf + /* if($payment_method[0]== 'fnc'){ + $this->method = [ + "clearingtype" => "fnc", + "wallettype" => "", + 'onlinebanktransfertype' => "", + "financingtype" => "PYV", + "request" => "genericpayment", + "add_paydata[action]" => "pre_check", + "add_paydata[payment_type]" => "Payolution-Invoicing", + ]; + } + */ } + //vorkasse + if($payment_method == 'vor'){ + $this->method = [ + "clearingtype" => "vor", + "wallettype" => "", + 'onlinebanktransfertype' => "", + "request" => "preauthorization", + ]; + } + //CreditCard + if($payment_method == 'cc'){ + //need the $cc_ret + $this->method = [ + "clearingtype" => "cc", + "wallettype" => "", + 'onlinebanktransfertype' => "", + "request" => "authorization", + "pseudocardpan" => $cc_ret['pseudocardpan'] + //"xid" => "3-D Secure transaction ID" + ]; + + } + + + } - $this->default = \Config::get('payone.defaults'); - $this->url['successurl'] = route('checkout.transaction_status', ['success']); - $this->url['errorurl'] = route('checkout.transaction_status', ['error']); - $this->url['backurl'] = route('checkout.transaction_status', ['cancel']); - - } - - //make Payone payment - - public function setPrePayment($data){ - - /* $this->prepayment = [ - "clearingtype" => "sb", // sb means online bank transfer - "reference" => time(), // a unique reference, e.g. order number - "amount" => "10000", // amount in smallest currency unit, i.e. cents - "currency" => "EUR", - "request" => "preauthorization", // create account receivable and instantly book the amount - "onlinebanktransfertype" => "PNT", // this is the type for Sofort.com - "bankcountry" => "DE", // we need to know the country of the customer's bank, i.e. of the invoice add - //"request" => "preauthorization" // create account receivable - ];*/ - - $this->prepayment = [ - "reference" => time(), // a unique reference, e.g. order number - "amount" => "10000", // amount in smallest currency unit, i.e. cents - "currency" => "EUR", - - - /* "clearingtype" => "wlt", // sb means online bank transfer - "wallettype" => "PPE", - "request" => "authorization", - */ - - - - /* "request" => "preauthorization", - "cardpan" => "4301111100070203", - "cardexpiredate" => "2105", - "cardtype" => "V", - */ - - - - - //"pseudocardpan" => "9410009000000005606", - - - ]; - } - - - public function creditCardCheck($data){ - - $this->prepayment = [ - "request" => "creditcardcheck", // create account receivable and instantly book the amount - "cardpan" => "4111111111111111", - "cardexpiredate" => "2105", - "cardtype" => "V", - "cardcvc2" => "123", - ]; - - } - - public function setPersonalData($data){ - - $this->personalData = [ - // "salutation" => "Mr.", - // "firstname" => "Henry", - "lastname" => "Payer", // mandatory - // "street" => "Royal Street 1", - // "zip" => "24118", - // "city" => "Kiel", - "country" => "DE", // mandatory - // "email" => "henry.viii@tudor.gov.uk", - "language" => "de" - ]; - } - - public function setDeliverylData($data){ - $this->deliveryData = [ - "shipping_company" => "Mr.", - "shipping_firstname" => "Henry", - "shipping_lastname" => "Tudor", - "shipping_street" => "Royal Street 1", - "shipping_zip" => "24118", - "shipping_city" => "Kiel", - "shipping_country" => "DE", - ]; - } - - public function checkStatus(){ - // again, the default values will be needed - $capture = array( - "request" => "capture", - "txid" => "your_txid", - "sequencenumber" => "previous_sequencenumber_plus_one", // get this from the last received transactionsstatus - "amount" => "your_amount", // you can either capture the full amount of the tx, or less - "currency" => "EUR" - ); - $request = array_merge($this->default, $capture); - $response = Payone::sendRequest($request); - } public function ResponseData(){ + $request = array_merge($this->default, $this->personalData, $this->deliveryData, $this->method, $this->prepayment, $this->urls); + + - $request = array_merge($this->default, $this->personalData, $this->method, $this->prepayment, $this->url); - // var_dump($request); - // echo "


"; $response = Payone::sendRequest($request); /* * status APPROVED / REDIRECT / ERROR / PENDING - * */ - - //cc - - var_dump($response); - die(); - if ($response["status"] == "REDIRECT") { // this happens when the card needs a 3d secure verification - header("Location: " . $response["redirecturl"]); // or other redirect method - } elseif ($response["status"] == "APPROVED") { // no 3d secure verification required, transaction went through - echo "Thank you for your purchase."; - var_dump($response); - die(); - } else { - echo "There has been an error processing your request."; - var_dump($response); - die(); + */ + if($response['status'] == 'ERROR'){ + PaymentTransaction::create([ + 'shopping_payment_id' => $this->shopping_payment->id, + 'request' => $this->method['request'], + 'errorcode' => $response['errorcode'], + 'errormessage' => $response['errormessage'], + 'customermessage' => $response['customermessage'], + 'status' => $response['status'], + ]); + \Session::flash('errormessage', $response['errormessage']); + \Session::flash('customermessage', $response['customermessage']); + return redirect(route('checkout.checkout_card')); } + if($response['status'] == 'REDIRECT'){ + PaymentTransaction::create([ + 'shopping_payment_id' => $this->shopping_payment->id, + 'request' => $this->method['request'], + 'txid' => $response['txid'], + 'userid' => $response['userid'], + 'status' => $response['status'], + ]); + return redirect()->away($response["redirecturl"]); + exit; + + } if($response['status'] == 'APPROVED'){ // header("Location: " . $response["redirecturl"]); // or other redirect method - var_dump($response); - die(); - //txid - //Payment process ID (PAYONE) - //userid - //Debtor ID (PAYONE) - } - if($response['status'] == 'REDIRECT'){ - header("Location: " . $response["redirecturl"]); // or other redirect method + $payt = PaymentTransaction::create([ + 'shopping_payment_id' => $this->shopping_payment->id, + 'request' => $this->method['request'], + 'txid' => $response['txid'], + 'userid' => $response['userid'], + 'status' => $response['status'], + 'transmitted_data' => $response, + ]); + if($payt->shopping_payment->clearingtype == "vor"){ + //vorkasse + return redirect(route('checkout.transaction_approved', [$payt->id, $this->reference])); + exit; + } + + if($payt->shopping_payment->clearingtype == "cc"){ + //creditcard + return redirect(route('checkout.transaction_approved', [$payt->id, $this->reference])); + exit; + } + + var_dump($response); + die(); //txid //Payment process ID (PAYONE) //userid //Debtor ID (PAYONE) - //redirecturl - //Redirect URL - } - if($response['status'] == 'ERROR'){ - var_dump($response); - die(); - //errorcode - //Error number - //errormessage - //Error message for the merchant - //customermessage - // Error message for the end customer } + + if($response['status'] == 'PENDING'){ var_dump($response); die(); @@ -248,54 +314,92 @@ class PayoneController extends Controller + public function checkCreditCard($data) + { + $this->prepayment = [ + "request" => "creditcardcheck", // create account receivable and instantly book the amount + "cardholder" => $data['cc_cardholder_first']." ".$data['cc_cardholder_last'], + "cardpan" => $data['cc_cardpan'], + "cardexpiredate" => substr($data['cc_cardexpireyear'], -2) . $data['cc_cardexpiremonth'], + "cardtype" => $data['cc_cardtype'], + "cardcvc2" => $data['cc_cardcvc2'], + "storecarddata" => 'yes', + "language" => 'de', + ]; + $request = array_merge($this->default, $this->prepayment); + $response = Payone::sendRequest($request); + return $response; + + } + + + /* public function checkStatus(){ + // again, the default values will be needed + $capture = array( + "request" => "capture", + "txid" => "your_txid", + "sequencenumber" => "previous_sequencenumber_plus_one", // get this from the last received transactionsstatus + "amount" => "your_amount", // you can either capture the full amount of the tx, or less + "currency" => "EUR" + ); + $request = array_merge($this->default, $capture); + $response = Payone::sendRequest($request); + + } */ + + //set for clearingtype //debit payment + /* + * + * ["clearing_bankaccount"]=> string(10) "2599100003" + ["clearing_bankcode"]=> string(8) "12345678" + ["clearing_bankcountry"]=> string(2) "DE" + ["clearing_bankname"]=> string(8) "Testbank" + ["clearing_bankaccountholder"]=> string(11) "Test Nutzer" + ["clearing_bankcity"]=> string(4) "Kiel" + ["clearing_bankiban"]=> string(22) "DE00123456782599100003" + ["clearing_bankbic"]=> string(8) "TESTTEST" } + */ + /* + * PNT Sofortbanking (DE, AT, CH, NL) + GPY giropay (DE) + EPS eps – online transfer (AT) + PFF PostFinance E-Finance (CH) + PFC PostFinance Card (CH) + IDL iDEAL (NL) + P24 Przelewy24 (PL) + BCT Bancontact*/ /* * iban * bic * bankcountry*/ - public function setOnlineTransfer($data){ - /* - * PNT Sofortbanking (DE, AT, CH, NL) - GPY giropay (DE) - EPS eps – online transfer (AT) - PFF PostFinance E-Finance (CH) - PFC PostFinance Card (CH) - IDL iDEAL (NL) - P24 Przelewy24 (PL) - BCT Bancontact*/ - $this->onlineTransfer = [ - "onlinebanktransfertype" => "PNT", - "bankcountry" => "DE", - // "iban" => "", - ]; - } - - - public function setCreditCard(){ - /* - * Card type + /* * Card type V Visa M MasterCard A American Express D Diners / Discover J JCB O Maestro International - */ - $this->creditCard = [ - "cardpan" => "number", - "cardtype" => "V", - "cardexpiredate" => "YYMM", - // "cardcvc2" => "Credit verification number (CVC)", + + + + + + public function setDeliverylData($data){ + $this->deliveryData = [ + "shipping_company" => "Mr.", + "shipping_firstname" => "Henry", + "shipping_lastname" => "Tudor", + "shipping_street" => "Royal Street 1", + "shipping_zip" => "24118", + "shipping_city" => "Kiel", + "shipping_country" => "DE", ]; - - /*3-D Secure*/ - $this->creditCard['xid'] = "3-D Secure transaction ID"; - } - +*/ diff --git a/app/Http/Controllers/Web/CardController.php b/app/Http/Controllers/Web/CardController.php index 2083f90..2806e5c 100755 --- a/app/Http/Controllers/Web/CardController.php +++ b/app/Http/Controllers/Web/CardController.php @@ -93,7 +93,6 @@ class CardController extends Controller $user_shop = Util::getUserShop(); - do { $identifier = Util::getToken(); } while( ShoppingInstance::where('identifier', $identifier)->count() ); @@ -113,6 +112,11 @@ class CardController extends Controller return redirect()->secure($path); } + public function backToShop(){ + $this->deleteCard(); + return redirect(url('/')); + + } public function removeCard($rowId){ Yard::instance('shopping')->remove($rowId); diff --git a/app/Http/Controllers/Web/CheckoutController.php b/app/Http/Controllers/Web/CheckoutController.php index 9136099..a33a7e1 100755 --- a/app/Http/Controllers/Web/CheckoutController.php +++ b/app/Http/Controllers/Web/CheckoutController.php @@ -5,7 +5,15 @@ namespace App\Http\Controllers\Web; use App\Http\Controllers\Controller; use App\Http\Controllers\Pay\PayoneController; -use App\Models\Product; +use App\Mail\MailCheckout; +use App\Models\PaymentTransaction; +use App\Models\ShoppingOrder; +use App\Models\ShoppingOrderItem; +use App\Models\ShoppingPayment; +use App\Models\ShoppingUser; +use Illuminate\Session\SessionManager; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Mail; use Validator; use App\Services\Util; use Yard; @@ -13,17 +21,20 @@ use Input; class CheckoutController extends Controller { + private $session; + private $instance; /** * Create a new controller instance. * * @return void */ - public function __construct() + public function __construct(SessionManager $session) { + $this->session = $session; + $this->instance = sprintf('%s.%s', 'cart', 'payments'); } - public function checkout(){ $user_shop = Util::getUserShop(); @@ -34,82 +45,366 @@ class CheckoutController extends Controller // $ShippingCountry = ShippingCountry::where('country_id', 1)->first(); // $selected_country = $ShippingCountry->id; } + + $shopping_user = ShoppingUser::findOrNew($this->getPayments('shopping_user_id')); + if($shopping_user->same_as_billing === NULL){ + $shopping_user->same_as_billing = true; + } $data = [ 'user_shop' => Util::getUserShop(), + 'shopping_user' => $shopping_user, ]; return view('web.templates.checkout', $data); } public function checkoutFinal(){ - /*$rules = array( - 'billing.firstname'=>'required', - 'billing.lastname'=>'required', - 'billing.email'=>'required|email', - 'billing.address'=>'required', - 'billing.zipcode'=>'required', - 'billing.city' => 'required', + /* + $rules = array( + 'billing_salutation' => 'required', + 'billing_firstname'=>'required', + 'billing_lastname'=>'required', + 'billing_email'=>'required|email', + 'billing_address'=>'required', + 'billing_zipcode'=>'required', + 'billing_city' => 'required', 'accepted_data_checkbox' => 'accepted', - 'billing.salutation => 'required' ); - if(!Input::get('shipping.same_as_billing')){ + if(!Input::get('same_as_billing')){ $rules = array_merge($rules, [ - 'shipping.firstname'=>'required', - 'shipping.lastname'=>'required', - 'shipping.address'=>'required', - 'shipping.zipcode'=>'required', - 'shipping.city' => 'required', - 'shipping.salutation => 'required' + 'shipping_firstname'=>'required', + 'shipping_lastname'=>'required', + 'shipping_address'=>'required', + 'shipping_zipcode'=>'required', + 'shipping_city' => 'required', + 'shipping_salutation' => 'required' ]); } $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return back()->withErrors($validator)->withErrors($validator)->withInput(Input::all()); - }*/ + } + */ + $data = Input::all(); + //make User + $shopping_user = $this->makeShoppingUser($data); + //make Order and Items + $shopping_order = $this->makeShoppingOrder($shopping_user); + + //check credit Card if(Input::get('payment_method')){ - $pay = new PayoneController(Input::get('payment_method')); - $pay->setPrePayment([]); + $cc_ret = []; + //need precheck the card + if(Input::get('payment_method') == 'cc'){ + $pay = new PayoneController(); + $cc_ret = $pay->checkCreditCard($data); + if($cc_ret['status'] == 'ERROR' || $cc_ret['status'] == 'INVALID'){ + /* PaymentTransaction::create([ + 'shopping_payment_id' => //is no shopping_payment_id at this moment, + 'request' => 'creditcardcheck, + 'errorcode' => $cc_ret['errorcode'], + 'errormessage' => $cc_ret['errormessage'], + 'customermessage' => $cc_ret['customermessage'], + 'status' => $response['status'], + ]);*/ + \Session::flash('cc-error', 1); + \Session::flash('errormessage', $cc_ret['errormessage']); + \Session::flash('customermessage', $cc_ret['customermessage']); + return redirect(route('checkout.checkout_card'))->withInput(Input::all()); + exit; + } + if($cc_ret['status'] == 'VALID'){ + /* + * array(4) { ["status"]=> string(5) "VALID" ["pseudocardpan"]=> string(19) "9410010000169020567" ["cardtype"]=> string(1) "V" ["truncatedcardpan"]=> string(16) "411111XXXXXX1111" } + * application through http post + * get this to the prepayment + * */ + } + } + + //other + $pay = new PayoneController(); + $pay->init($shopping_user, $shopping_order); + $amount = intval(floatval(Yard::instance('shopping')->totalWithShipping(2, '.', ',')) *100); + $reference = $pay->setPrePayment(Input::get('payment_method'), $amount, 'EUR', $cc_ret); + $this->putPayments('payment_reference', $reference); $pay->setPersonalData([]); - $pay->ResponseData([]); + return $pay->ResponseData(); } + return redirect()->back(); + } + + public function transactionStatus($status, $reference){ + + $shopping_order_id = $this->getPayments('shopping_order_id'); + + $ShoppingPayment = ShoppingPayment::where('shopping_order_id', $shopping_order_id)->where('reference', $reference)->first(); + if(!$ShoppingPayment){ + //TODO log this + \Session::flash('checkout-error', 'Der Zahlungsvorgang konnte nicht abgeschlossen werden, die Zahlung wurde nicht gefunden: '.$reference); + return redirect(route('checkout.checkout_card')); + } + $ShoppingPayment->status = $status; + $ShoppingPayment->save(); + + if($status == "success"){ + + Yard::instance('shopping')->destroy(); + $this->destroy(); + + $payt = $ShoppingPayment->payment_transactions->last(); + + $data = [ + 'user_shop' => Util::getUserShop(), + 'order_reference' => $reference, + 'pay_trans' => $payt, + ]; + return view('web.templates.checkout-final', $data); + } + if($status == "cancel"){ + \Session::flash('checkout-error', 'Der Zahlungsvorgang wurde abgebrochen, die Bestellung konnte nicht ausgeführt werden.'); + return redirect(route('checkout.checkout_card')); + + } + if($status == "error"){ + \Session::flash('checkout-error', 'Der Zahlungsvorgang wurde abgebrochen, die Bestellung konnte nicht ausgeführt werden.'); + return redirect(route('checkout.checkout_card')); + + } + } + + public function transactionApproved($transactionId, $reference) { + + $payt = PaymentTransaction::findOrFail($transactionId); + if($payt->shopping_payment->reference != $reference){ + abort(404); + } + Yard::instance('shopping')->destroy(); + $this->destroy(); + //vor $data = [ 'user_shop' => Util::getUserShop(), + 'order_reference' => $payt->shopping_payment->reference, + 'pay_trans' => $payt, ]; return view('web.templates.checkout-final', $data); } - - public function transactionStatus($check){ + public function paymentStatus(){ $data = \Request::all(); - var_dump($data); - $data = \Input::all(); - var_dump($data); - die(); - if($check == "cancel"){ - \Session::flash('checkout-error', 'Der Zahlungsvorgang wurde abgebrochen, die Bestellung konnte nicht ausgeführt werden.'); - return $this->checkout(); + // test para + + $data = [ + 'key' => '698fb2555f8b2efc74f60b2121421f45', + 'txaction' => 'appointed', + 'clearingtype' => 'vor', + 'userid' => '157787236', + 'txid' => '319655873', + 'price' => '13.80', + 'param' => '6', //$this->shopping_order->id, + 'reference' => '15c76c0d470cf9', + ]; + + if(!isset($data['key']) || !isset($data['param']) || !isset($data['userid']) || !isset($data['txid']) || !isset($data['reference']) || !isset($data['price'])){ + \Log::channel('payone')->error('PaymentStatus: parameter incomplete: '.json_encode($data)); + abort(404); } - $pay = new PayoneController([]); - $pay->checkStatus(); + if($data['key'] != config('payone.defaults.key')) { + \Log::channel('payone')->error('PaymentStatus: Key error: '.json_encode($data)); + abort(404); + } + + $shopping_order = ShoppingOrder::find($data['param']); + if(!$shopping_order){ + \Log::channel('payone')->error('PaymentStatus: ShoppingOrder not found: '.json_encode($data)); + abort(404); + } + + $shopping_payment = ShoppingPayment::where('reference', $data['reference'])->first(); + if(!$shopping_payment){ + \Log::channel('payone')->error('PaymentStatus: ShoppingPayment not found: '.json_encode($data)); + abort(404); + } + + if($shopping_payment->shopping_order_id != $shopping_order->id){ + \Log::channel('payone')->error('PaymentStatus: ShoppingPayment no realation ShoppingOrder: '.json_encode($data)); + abort(404); + } + + if($data['key'] != config('payone.defaults.key')) { + \Log::channel('payone')->error('PaymentStatus: Key error: '.json_encode($data)); + abort(404); + } + + $price = intval($data['price']*100); + if($shopping_payment->amount != $price){ + \Log::channel('payone')->error('PaymentStatus: Price error: '.json_encode($data)); + abort(404); + } + + //create transaction + PaymentTransaction::create([ + 'shopping_payment_id' => $shopping_payment->id, + 'request' => 'transaction', + 'txid' => $data['txid'], + 'userid' => $data['userid'], + 'status' => 'PAYONE', + 'key' => $data['key'], + 'txaction' => $data['txaction'], + 'transmitted_data' => $data, + ]); + + $shopping_order->txaction = $data['txaction']; + $shopping_order->save(); + $shopping_payment->txaction = $data['txaction']; + $shopping_payment->save(); + + + if($data['txaction'] == 'failed'){ + + } + if($data['txaction'] == 'paid'){ + $shopping_order->paid = true; + $shopping_order->save(); + } + + if($data['txaction'] == 'appointed'){ + + } + $billing_email = $shopping_order->shopping_user->billing_email; + $user_shop_email = $shopping_order->user_shop->user->email; + if(!$billing_email){ + $billing_email = config('app.checkout_mail'); + } + $checkout_mail = config('app.checkout_mail'); + if($user_shop_email){ + Mail::to($billing_email)->bcc([$user_shop_email, $checkout_mail])->send(new MailCheckout($data['txaction'], $shopping_order, $shopping_payment)); + }else{ + Mail::to($billing_email)->bcc($checkout_mail)->send(new MailCheckout($data['txaction'], $shopping_order, $shopping_payment)); + } + die("ok"); } - public function removeCard($rowId){ - Yard::instance('shopping')->remove($rowId); - return back(); + private function makeShoppingUser($data){ + + $data['same_as_billing'] = isset($data['same_as_billing']) ? true : false; + $data['accepted_data_checkbox'] = isset($data['accepted_data_checkbox']) ? true : false; + + $shopping_user = false; + if($this->getPayments('shopping_user_id')){ + $shopping_user = ShoppingUser::find($this->getPayments('shopping_user_id')); + if($shopping_user){ + $shopping_user->fill($data); + $shopping_user->save(); + } + } + if(!$shopping_user){ + $shopping_user = ShoppingUser::create($data); + } + $this->putPayments('shopping_user_id', $shopping_user->id); + + return $shopping_user; } - public function deleteCard(){ + private function makeShoppingOrder($shopping_user){ - Yard::instance('shopping')->destroy(); - return back(); + + $user_shop = Util::getUserShop(); + + $data = [ + 'shopping_user_id' => $shopping_user->id, + 'country_id' => Yard::instance('shopping')->getShippingCountryId(), + 'user_shop_id' => $user_shop->id, + 'total' => Yard::instance('shopping')->total(2, '.', ','), + 'shipping' => Yard::instance('shopping')->shipping(2, '.', ','), + 'subtotal' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ','), + 'tax_rate' => Yard::getTaxRate(), + 'tax' => Yard::instance('shopping')->subtotalWithShipping(2, '.', ','), + 'total_shipping' => Yard::instance('shopping')->totalWithShipping(2, '.', ','), + 'weight' => Yard::instance('shopping')->weight(), + ]; + $shopping_order= false; + if($this->getPayments('shopping_order_id')){ + $shopping_order = ShoppingOrder::find($this->getPayments('shopping_order_id')); + if($shopping_order){ + $shopping_order->fill($data); + $shopping_order->save(); + } + } + if(!$shopping_order){ + $shopping_order = ShoppingOrder::create($data); + } + $this->putPayments('shopping_order_id', $shopping_order->id); + + + $items = Yard::instance('shopping')->content(); + + + $shopping_order->shopping_order_items()->each(function($model) use ($items, $shopping_order) { + foreach ($items as $item) { + if ($model->row_id === $item->rowId) { + $model->fill([ + 'shopping_order_id' => $shopping_order->id, + 'row_id' => $item->rowId, + 'product_id' => $item->id, + 'qty' => $item->qty, + 'price' => $item->price, + 'slug' => $item->options->slug, + ])->save(); + return; + } + } + return $model->delete(); + }); + + foreach ($items as $item) { + if (!ShoppingOrderItem::where('shopping_order_id', $shopping_order->id)->where('row_id', $item->rowId)->count()) + ShoppingOrderItem::create([ + 'shopping_order_id' => $shopping_order->id, + 'row_id' => $item->rowId, + 'product_id' => $item->id, + 'qty' => $item->qty, + 'price' => $item->price, + 'slug' => $item->options->slug + ]); + }; + + return $shopping_order; + } + + private function putPayments($key, $value){ + $content = $this->getContent(); + $content->put($key, $value); + $this->session->put($this->instance, $content); + + } + private function getPayments($key){ + $content = $this->getContent(); + if ($content->has($key)){ + return $content->get($key); + } + return false; + } + private function getContent() + { + if (is_null($this->session->get($this->instance))) { + return new Collection([]); + } + return $this->session->get($this->instance); + } + + + public function destroy() + { + $this->session->remove($this->instance); } } \ No newline at end of file diff --git a/app/Mail/MailCheckout.php b/app/Mail/MailCheckout.php new file mode 100644 index 0000000..1b87655 --- /dev/null +++ b/app/Mail/MailCheckout.php @@ -0,0 +1,69 @@ +txaction = $txaction; + $this->shopping_order = $shopping_order; + $this->shopping_payment = $shopping_payment; + + $this->subject = __('Deine Bestellung auf mivita.care'); + if($shopping_order->user_shop){ + $this->subject = __('Deine Bestellung auf '.$shopping_order->user_shop->slug.'.mivita.care'); + } + } + + + public function build() + { + $salutation = __('Dear customer').","; + + if($this->shopping_order->shopping_user){ + $salutation = __('Hallo')." ".$this->shopping_order->shopping_user->billing_firstname." ".$this->shopping_order->shopping_user->billing_lastname.","; + //make Adresse + + } + if($this->txaction == 'paid'){ + return $this->view('emails.checkout')->with([ + 'salutation' => $salutation, + 'copy1line' => __('vielen Dank für Deine Bestellung bei mivita.care.

Nachfolgend haben wir zur Kontrolle Deine Bestellung noch einmal aufgelistet.'), + 'shopping_order' => $this->shopping_order, + 'shopping_payment' => $this->shopping_payment, + 'copy3line' => __('Bei Fragen sind wir jederzeit für Dich da.'), + 'greetings' => __('Best regards'), + 'sender' => __('your mivita.care team'), + ]); + }else{ + return $this->view('emails.checkout_status')->with([ + 'salutation' => $salutation, + 'copy1line' => "Status zu Deiner Bestellung bei mivita.care", + 'txactionn' => $this->txaction, + 'shopping_order' => $this->shopping_order, + 'shopping_payment' => $this->shopping_payment, + 'copy3line' => __('Bei Fragen sind wir jederzeit für Dich da.'), + 'greetings' => __('Best regards'), + 'sender' => __('your mivita.care team'), + ]); + } + + } +} \ No newline at end of file diff --git a/app/Models/PaymentTransaction.php b/app/Models/PaymentTransaction.php index fa9e9f7..84c47f7 100644 --- a/app/Models/PaymentTransaction.php +++ b/app/Models/PaymentTransaction.php @@ -6,5 +6,30 @@ use Illuminate\Database\Eloquent\Model; class PaymentTransaction extends Model { - // + protected $table = 'payment_transactions'; + + + protected $casts = [ + 'transmitted_data' => 'array' + ]; + + protected $fillable = [ + 'shopping_payment_id', + 'request', + 'txid', + 'userid', + 'status', + 'key', + 'txaction', + 'transmitted_data', + 'errorcode', + 'errormessage', + 'customermessage', + ]; + + + public function shopping_payment() + { + return $this->belongsTo('App\Models\ShoppingPayment','shopping_payment_id'); + } } diff --git a/app/Models/ShoppingOrder.php b/app/Models/ShoppingOrder.php index 8a5dfbd..a97482e 100644 --- a/app/Models/ShoppingOrder.php +++ b/app/Models/ShoppingOrder.php @@ -6,5 +6,77 @@ use Illuminate\Database\Eloquent\Model; class ShoppingOrder extends Model { - // + protected $table = 'shopping_orders'; + + protected $fillable = [ + 'shopping_user_id', + 'country_id', + 'user_shop_id', + 'total', + 'shipping', + 'subtotal', + 'tax_rate', + 'tax', + 'total_shipping', + 'weight', + ]; + + + public function shopping_user() + { + return $this->belongsTo('App\Models\ShoppingUser','shopping_user_id'); + } + + public function country() + { + return $this->belongsTo('App\Models\Country','country_id'); + } + + public function user_shop() + { + return $this->belongsTo('App\Models\UserShop','user_shop_id'); + } + + public function shopping_order_items(){ + return $this->hasMany('App\Models\ShoppingOrderItem', 'shopping_order_id'); + } + + public function shopping_payments(){ + return $this->hasMany('App\Models\ShoppingPayment', 'shopping_order_id'); + } + + + public function _format_number($value) + { + return preg_replace("/[^0-9,]/", "", $value); + } + + + public function getFormattedShipping() + { + if (\App::getLocale() == "en") { + return number_format($this->attributes['shipping'], 2, '.', ','); + } + return number_format($this->attributes['shipping'], 2, ',', '.'); + } + + public function getFormattedTotalShipping() + { + if (\App::getLocale() == "en") { + return number_format($this->attributes['total_shipping'], 2, '.', ','); + } + return number_format($this->attributes['total_shipping'], 2, ',', '.'); + } + + + public function getFormattedPrice() + { + if (\App::getLocale() == "en") { + return number_format($this->attributes['price'], 2, '.', ','); + } + return number_format($this->attributes['price'], 2, ',', '.'); + } + + + } diff --git a/app/Models/ShoppingOrderItem.php b/app/Models/ShoppingOrderItem.php index b05d823..f5a056c 100644 --- a/app/Models/ShoppingOrderItem.php +++ b/app/Models/ShoppingOrderItem.php @@ -6,5 +6,34 @@ use Illuminate\Database\Eloquent\Model; class ShoppingOrderItem extends Model { - // -} + protected $table = 'shopping_order_items'; + + protected $fillable = [ + 'shopping_order_id', + 'row_id', + 'product_id', + 'qty', + 'price', + 'slug', + ]; + + + public function shopping_order() + { + return $this->belongsTo('App\Models\ShoppingOrder','shopping_order_id'); + } + + public function product() + { + return $this->belongsTo('App\Models\Product','product_id'); + } + + public function getFormattedPrice() + { + if (\App::getLocale() == "en") { + return number_format($this->attributes['price'], 2, '.', ','); + } + return number_format($this->attributes['price'], 2, ',', '.'); + } + +} \ No newline at end of file diff --git a/app/Models/ShoppingPayment.php b/app/Models/ShoppingPayment.php index 6c37d98..47c4a67 100644 --- a/app/Models/ShoppingPayment.php +++ b/app/Models/ShoppingPayment.php @@ -6,5 +6,47 @@ use Illuminate\Database\Eloquent\Model; class ShoppingPayment extends Model { - // -} + protected $table = 'shopping_payments'; + + protected $fillable = [ + 'shopping_order_id', + 'clearingtype', + 'wallettype', + 'onlinebanktransfertype', + 'reference', + 'amount', + 'currency', + ]; + + + public function shopping_order() + { + return $this->belongsTo('App\Models\ShoppingOrder','shopping_order_id'); + } + + public function payment_transactions() + { + return $this->hasMany('App\Models\PaymentTransaction','shopping_payment_id'); + } + + public function getPaymentType(){ + + if($this->clearingtype == 'wlt') { + if ($this->wallettype == 'PPE') { + return 'PayPal'; + } + } + if($this->clearingtype == 'cc') { + return 'Kreditkarte'; + } + if($this->clearingtype == 'vor') { + return 'Vorkasse'; + } + if($this->clearingtype == 'sb') { + if ($this->onlinebanktransfertype == 'PNT') { + return 'Sofort Überweisung'; + } + } + } + +} \ No newline at end of file diff --git a/app/Models/ShoppingUser.php b/app/Models/ShoppingUser.php index 116dd18..1e91823 100644 --- a/app/Models/ShoppingUser.php +++ b/app/Models/ShoppingUser.php @@ -6,5 +6,49 @@ use Illuminate\Database\Eloquent\Model; class ShoppingUser extends Model { - // -} + protected $table = 'shopping_users'; + + protected $fillable = [ + 'billing_salutation', + 'billing_company', + 'billing_firstname', + 'billing_lastname', + 'billing_address', + 'billing_address_2', + 'billing_zipcode', + 'billing_city', + 'billing_country_id', + 'billing_phone', + 'billing_email', + 'accepted_data_checkbox', + 'same_as_billing', + 'shipping_salutation', + 'shipping_company', + 'shipping_firstname', + 'shipping_lastname', + 'shipping_address', + 'shipping_address_2', + 'shipping_zipcode', + 'shipping_city', + 'shipping_country_id', + 'shipping_phone', + ]; + + + + public function billing_country() + { + return $this->belongsTo('App\Models\Country','billing_country_id'); + } + + public function shipping_country() + { + return $this->belongsTo('App\Models\Country','shipping_country_id'); + } + + public function Shopping_orders() + { + return $this->hasMany('App\Models\ShoppingOrder','shopping_user_id'); + } + +} \ No newline at end of file diff --git a/app/Services/Util.php b/app/Services/Util.php index 202eb38..554fdb0 100644 --- a/app/Services/Util.php +++ b/app/Services/Util.php @@ -73,7 +73,17 @@ class Util return false; } - public static function getUserShopBackUrl($uri){ + public static function getUserShopBackUrl(){ + + if(\Session::has('user_shop')){ + if($user_shop = \Session::get('user_shop')){ + return 'http://'.$user_shop->slug.".".Config('app.domain')."/back/to/shop"; + } + } + return url("/"); + } + + public static function getUserCardBackUrl($uri){ if(\Session::has('user_shop')){ if($user_shop = \Session::get('user_shop')){ diff --git a/app/Services/Yard.php b/app/Services/Yard.php index f6a52de..5f936e7 100644 --- a/app/Services/Yard.php +++ b/app/Services/Yard.php @@ -226,6 +226,13 @@ class Yard extends Cart return $this->numberFormat($subTotal, $decimals, $decimalPoint, $thousandSeperator); } + public function destroy() + { + $this->ysession->remove($this->yinstance); + parent::destroy(); + + } + /** * Get the Formated number diff --git a/config/app.php b/config/app.php index 1845d87..20dfa42 100755 --- a/config/app.php +++ b/config/app.php @@ -58,6 +58,7 @@ return [ 'pre_url_main' => env('APP_URL_MAIN', ''), 'pre_url_crm' => env('APP_URL_CRM', 'mein.'), 'checkout_url' => env('APP_URL_CHECKOUT', 'checkout.'), + 'checkout_mail' => env('APP_CHECKOUT_MAIL', 'k.adametz@kagado.de'), /* 'url_backend' => env('APP_URL', 'http://mivita.local/'), diff --git a/config/logging.php b/config/logging.php index 400bc7f..2615106 100755 --- a/config/logging.php +++ b/config/logging.php @@ -33,6 +33,11 @@ return [ */ 'channels' => [ + + 'payone' => [ + 'driver' => 'single', + 'path' => storage_path('logs/payone.log'), + ], 'stack' => [ 'driver' => 'stack', 'channels' => ['single'], diff --git a/config/mail.php b/config/mail.php index d2fb75a..2ad6b89 100755 --- a/config/mail.php +++ b/config/mail.php @@ -57,7 +57,7 @@ return [ 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'support@mivita.care'), - 'name' => env('MAIL_FROM_NAME', 'Support at mivita.care'), + 'name' => env('MAIL_FROM_NAME', 'mivita.care'), ], /* diff --git a/database/migrations/2019_02_23_161530_create_shopping_users_table.php b/database/migrations/2019_02_23_161530_create_shopping_users_table.php index 568bbd7..f928ba5 100644 --- a/database/migrations/2019_02_23_161530_create_shopping_users_table.php +++ b/database/migrations/2019_02_23_161530_create_shopping_users_table.php @@ -28,6 +28,9 @@ class CreateShoppingUsersTable extends Migration $table->string('billing_phone')->nullable(); $table->string('billing_email')->nullable(); + + $table->boolean('accepted_data_checkbox')->default(false); + $table->boolean('same_as_billing')->default(true); $table->char('shipping_salutation', 2)->nullable(); diff --git a/database/migrations/2019_02_23_163527_create_shopping_orders_table.php b/database/migrations/2019_02_23_163527_create_shopping_orders_table.php index 2ec8cbd..97e9a2a 100644 --- a/database/migrations/2019_02_23_163527_create_shopping_orders_table.php +++ b/database/migrations/2019_02_23_163527_create_shopping_orders_table.php @@ -29,6 +29,10 @@ class CreateShoppingOrdersTable extends Migration $table->unsignedInteger('weight')->nullable(); + $table->boolean('paid')->default(false); + $table->string('txaction', 20)->nullable()->index(); + + $table->timestamps(); $table->foreign('shopping_user_id') diff --git a/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php b/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php index bea89c7..c6c826f 100644 --- a/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php +++ b/database/migrations/2019_02_23_163724_create_shopping_order_items_table.php @@ -17,12 +17,12 @@ class CreateShoppingOrderItemsTable extends Migration $table->increments('id'); $table->unsignedInteger('shopping_order_id'); + $table->string('row_id', 40)->nullable(); $table->unsignedInteger('product_id'); + $table->unsignedInteger('qty'); $table->decimal('price', 8, 2)->nullable(); $table->string('slug')->nullable(); - $table->boolean('paid')->default(false); - $table->timestamps(); $table->foreign('shopping_order_id') diff --git a/database/migrations/2019_02_23_163832_create_shopping_payments_table.php b/database/migrations/2019_02_23_163832_create_shopping_payments_table.php index 646b7d0..8155cd0 100644 --- a/database/migrations/2019_02_23_163832_create_shopping_payments_table.php +++ b/database/migrations/2019_02_23_163832_create_shopping_payments_table.php @@ -22,10 +22,12 @@ class CreateShoppingPaymentsTable extends Migration $table->string('wallettype', 3)->nullable(); $table->string('onlinebanktransfertype',3)->nullable(); - $table->string('reference', 20); + $table->string('reference', 16); $table->unsignedInteger('amount'); $table->string('currency', 6); + $table->string('status', 10)->nullable()->index(); + $table->string('txaction', 20)->nullable()->index(); $table->timestamps(); diff --git a/database/migrations/2019_02_25_090014_create_payment_transactions_table.php b/database/migrations/2019_02_25_090014_create_payment_transactions_table.php index 3a01103..fc708ff 100644 --- a/database/migrations/2019_02_25_090014_create_payment_transactions_table.php +++ b/database/migrations/2019_02_25_090014_create_payment_transactions_table.php @@ -22,17 +22,17 @@ class CreatePaymentTransactionsTable extends Migration $table->unsignedInteger('txid'); $table->unsignedInteger('userid'); - $table->string('status',20)->nullable();; + $table->string('status',20)->nullable(); - $table->string('key',40)->nullable();; - $table->string('txaction',20)->nullable();; + $table->string('key',40)->nullable(); + $table->string('txaction',20)->nullable(); - $table->text('transmitted_data')->nullable();; + $table->text('transmitted_data')->nullable(); - $table->unsignedInteger('errorcode')->nullable();; - $table->string('errormessage')->nullable();; - $table->string('customermessage')->nullable();; + $table->unsignedInteger('errorcode')->nullable(); + $table->string('errormessage')->nullable(); + $table->string('customermessage')->nullable(); $table->timestamps(); diff --git a/public/images/payments-assets/creditcard.png b/public/images/payments-assets/creditcard.png new file mode 100644 index 0000000..83b1b4e Binary files /dev/null and b/public/images/payments-assets/creditcard.png differ diff --git a/public/images/payments-assets/paypal.png b/public/images/payments-assets/paypal.png new file mode 100644 index 0000000..7722f3f Binary files /dev/null and b/public/images/payments-assets/paypal.png differ diff --git a/public/images/payments-assets/sofort.png b/public/images/payments-assets/sofort.png new file mode 100644 index 0000000..b07acd2 Binary files /dev/null and b/public/images/payments-assets/sofort.png differ diff --git a/public/images/payments-assets/vor.png b/public/images/payments-assets/vor.png new file mode 100644 index 0000000..f73551f Binary files /dev/null and b/public/images/payments-assets/vor.png differ diff --git a/public/images/payments.psd b/public/images/payments.psd new file mode 100644 index 0000000..fc0d283 Binary files /dev/null and b/public/images/payments.psd differ diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index a594df3..dc91136 100755 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -180,18 +180,20 @@ return [ 'user_shop_active' => 'Nutzungsbedinungen', 'g-recaptcha-response' => 'google reCaptcha', 'accepted_data_protection' => 'Einwilligung Datenschutzerklärung', - 'billing.firstname'=>'Vorname', - 'billing.lastname'=>'Nachname', - 'billing.email'=>'E-Mail-Adresse', - 'billing.address'=>'Adresse', - 'billing.zipcode'=>'PLZ', - 'billing.city' => 'Stadt', + 'billing_salutation' => 'Anrede', + 'billing_firstname'=>'Vorname', + 'billing_lastname'=>'Nachname', + 'billing_email'=>'E-Mail-Adresse', + 'billing_address'=>'Adresse', + 'billing_zipcode'=>'PLZ', + 'billing_city' => 'Stadt', 'accepted_data_checkbox' => 'Einwilligung', - 'shipping.firstname'=>'Vorname', - 'shipping.lastname'=>'Nachname', - 'shipping.address'=>'Adresse', - 'shipping.zipcode'=>'PLZ', - 'shipping.city' => 'Stadt' + 'shipping_salutation' => 'Anrede', + 'shipping_firstname'=>'Vorname', + 'shipping_lastname'=>'Nachname', + 'shipping_address'=>'Adresse', + 'shipping_zipcode'=>'PLZ', + 'shipping_city' => 'Stadt' ], ]; diff --git a/resources/views/emails/checkout.blade.php b/resources/views/emails/checkout.blade.php new file mode 100644 index 0000000..24a2ff5 --- /dev/null +++ b/resources/views/emails/checkout.blade.php @@ -0,0 +1,392 @@ + + + + + + mivita.care + + + + + + + + + + + + +
+ {{ $copy1line }} +
+ + + + + +
+
+ + + + +
+ + + + +
+
+ + + + + + + + + +
+
+ + mivita.care + +
+ +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {{ $salutation }} +
+ {!! nl2br($copy1line) !!} +
+

+ Du hast folgende Artikel bestellt: +
+ + @foreach($shopping_order->shopping_order_items as $shopping_order_item) + + + + + + @endforeach + + + + + + + + + + + + + + + + +
+ {{ $shopping_order_item->qty }} x + + {{ $shopping_order_item->product->name }} + + {{ $shopping_order_item->getFormattedPrice() }} EUR +
+
+
+   + + Verpackungs- u. Versandkosten + + {{ $shopping_order->getFormattedShipping() }} EUR +
+
+
+   + + Gesamtpreis + + {{ $shopping_order->getFormattedTotalShipping() }} EUR +
+
+
+
+ Zahlungsinfo: +
+ + + + +
+ Zahlung ist bestätigt!
+ Zahlung mit: {{$shopping_payment->getPaymentType()}}
+ Zahlungsreferenz: {{$shopping_payment->reference}}
+ Deine E-Mai: {{ $shopping_order->shopping_user->billing_email }}
+
+
+
+
+ Deine Rechnungsadresse: +
+ + + + + +
+ @if($shopping_order->shopping_user->billing_company) + {{ $shopping_order->shopping_user->billing_company }}
+ @endif + + {{ $shopping_order->shopping_user->billing_firstname }} + {{ $shopping_order->shopping_user->billing_lastname }}
+
+ + {{ $shopping_order->shopping_user->billing_address }}
+ @if($shopping_order->shopping_user->billing_address_2) + {{ $shopping_order->shopping_user->billing_address_2 }}
+ @endif + + {{ $shopping_order->shopping_user->billing_zipcode }} + {{ $shopping_order->shopping_user->billing_city }}
+ {{ $shopping_order->shopping_user->billing_country->getLocated() }}
+ + @if($shopping_order->shopping_user->billing_phone) +

{{ $shopping_order->shopping_user->billing_phone }}
+ @endif +
+
+ Deine Lieferadresse: +
+ + + + + +
+ @if($shopping_order->shopping_user->same_as_billing) + Lieferadresse ist gleich Rechnungsadresse + @else + + @if($shopping_order->shopping_user->shipping_company) + {{ $shopping_order->shopping_user->shipping_company }}
+ @endif + + {{ $shopping_order->shopping_user->shipping_firstname }} + {{ $shopping_order->shopping_user->shipping_lastname }}
+
+ + {{ $shopping_order->shopping_user->shipping_address }}
+ @if($shopping_order->shopping_user->shipping_address_2) + {{ $shopping_order->shopping_user->shipping_address_2 }}
+ @endif + + {{ $shopping_order->shopping_user->shipping_zipcode }} + {{ $shopping_order->shopping_user->shipping_city }}
+ + {{ $shopping_order->shopping_user->shipping_country->getLocated() }}
+ + + @if($shopping_order->shopping_user->shipping_phone) +

{{ $shopping_order->shopping_user->shipping_phone }}
+ @endif + @endif +
+
+
+
+ + + + + + + +
+ {{ $copy3line }} +
+ + @if($shopping_order->user_shop) + @if($shopping_order->user_shop->title) + {{ $shopping_order->user_shop->title }}
+ @endif + @if($shopping_order->user_shop->contact) + {!! nl2br($shopping_order->user_shop->contact) !!}
+ @endif + {{ $shopping_order->user_shop->getSubdomain() }} + + @endif + + +

+ {{ $greetings }}
{{ $sender }} +
+

+
+ + + + + + + +
+

+ mivita e.K. | Leinfeld 2 | 87755 Kirchhaslach
+ Telefon: +49 (0) 8333 946 98 90 | Fax: +49 (0) 8333 7268
+ E-Mail: info@mivita.care

+ www.mivita.care +
+

Geschäftsinhaber: Alois Ried | Registergericht: Memmingen
+ Registernummer: HRA 12236 | USt-ID-Nr.: DE 244162340

+ + Datenschutzerklärung
+ Impressum
+ + © 2019 All Rights Reserved
+
+
+
+
+ + + diff --git a/resources/views/emails/checkout_status.blade.php b/resources/views/emails/checkout_status.blade.php new file mode 100644 index 0000000..d701e70 --- /dev/null +++ b/resources/views/emails/checkout_status.blade.php @@ -0,0 +1,419 @@ + + + + + + mivita.care + + + + + + + + + + + + +
+ {{ $copy1line }} +
+ + + + + +
+
+ + + + +
+ + + + +
+
+ + + + + + + + + +
+
+ + mivita.care + +
+ +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ {{ $salutation }} +
+ {!! nl2br($copy1line) !!} +
+ Statusinfo: +
+ + + + +
+ @if($txaction == 'failed') + Die Zahlung ist fehlgeschlagen!
+ @elseif($txaction == 'appointed') + + @if($shopping_payment->clearingtype == "vor") + Bezahlung per Vorkasse:
+ Bitte überweise {{ number_format( floatval($shopping_payment->amount/100), 2, ",", ".") }} EUR auf die folgende Kontoverbindung, um den Kauf abzuschließen.
+

+ @php($pay_trans = $shopping_payment->payment_transactions->where('request', 'preauthorization')->last()) + + + Kontoinhaber: {{ $pay_trans->transmitted_data['clearing_bankaccountholder'] }}
+ IBAN: {{ $pay_trans->transmitted_data['clearing_bankiban'] }}
+ BIC: {{ $pay_trans->transmitted_data['clearing_bankbic'] }}
+ Bank: {{ $pay_trans->transmitted_data['clearing_bankname'] }}
+ Gesamtbetrag: {{ number_format( floatval($pay_trans->shopping_payment->amount/100), 2, ",", ".") }} EUR
+ Verwendungszweck: {{ $pay_trans->transmitted_data['clearing_bankcode'] }} +

+
+ @else + Deine Zahlung wurde genehmigt, eine Bestätigung der Zahlung wird automatisch erstellt.
+ @endif + @else + SystemStatus: {{$txaction}}
+ + @endif + + Zahlung mit: {{$shopping_payment->getPaymentType()}}
+ Zahlungsreferenz: {{$shopping_payment->reference}}
+ Deine E-Mai: {{ $shopping_order->shopping_user->billing_email }}
+
+
+

+ Du hast folgende Artikel bestellt: +
+ + @foreach($shopping_order->shopping_order_items as $shopping_order_item) + + + + + + @endforeach + + + + + + + + + + + + + + + + +
+ {{ $shopping_order_item->qty }} x + + {{ $shopping_order_item->product->name }} + + {{ $shopping_order_item->getFormattedPrice() }} EUR +
+
+
+   + + Verpackungs- u. Versandkosten + + {{ $shopping_order->getFormattedShipping() }} EUR +
+
+
+   + + Gesamtpreis + + {{ $shopping_order->getFormattedTotalShipping() }} EUR +
+
+
+
+ Deine Rechnungsadresse: +
+ + + + + +
+ @if($shopping_order->shopping_user->billing_company) + {{ $shopping_order->shopping_user->billing_company }}
+ @endif + + {{ $shopping_order->shopping_user->billing_firstname }} + {{ $shopping_order->shopping_user->billing_lastname }}
+
+ + {{ $shopping_order->shopping_user->billing_address }}
+ @if($shopping_order->shopping_user->billing_address_2) + {{ $shopping_order->shopping_user->billing_address_2 }}
+ @endif + + {{ $shopping_order->shopping_user->billing_zipcode }} + {{ $shopping_order->shopping_user->billing_city }}
+ {{ $shopping_order->shopping_user->billing_country->getLocated() }}
+ + @if($shopping_order->shopping_user->billing_phone) +

{{ $shopping_order->shopping_user->billing_phone }}
+ @endif +
+
+
+
+ Deine Lieferadresse: +
+ + + + + +
+ @if($shopping_order->shopping_user->same_as_billing) + Lieferadresse ist gleich Rechnungsadresse + @else + + @if($shopping_order->shopping_user->shipping_company) + {{ $shopping_order->shopping_user->shipping_company }}
+ @endif + + {{ $shopping_order->shopping_user->shipping_firstname }} + {{ $shopping_order->shopping_user->shipping_lastname }}
+
+ + {{ $shopping_order->shopping_user->shipping_address }}
+ @if($shopping_order->shopping_user->shipping_address_2) + {{ $shopping_order->shopping_user->shipping_address_2 }}
+ @endif + + {{ $shopping_order->shopping_user->shipping_zipcode }} + {{ $shopping_order->shopping_user->shipping_city }}
+ + {{ $shopping_order->shopping_user->shipping_country->getLocated() }}
+ + + @if($shopping_order->shopping_user->shipping_phone) +

{{ $shopping_order->shopping_user->shipping_phone }}
+ @endif + @endif +
+
+
+
+ + + + + + + +
+ {{ $copy3line }} +
+ + @if($shopping_order->user_shop) + @if($shopping_order->user_shop->title) + {{ $shopping_order->user_shop->title }}
+ @endif + @if($shopping_order->user_shop->contact) + {!! nl2br($shopping_order->user_shop->contact) !!}
+ @endif + {{ $shopping_order->user_shop->getSubdomain() }} + + @endif + + +

+ {{ $greetings }}
{{ $sender }} +
+

+
+ + + + + + + +
+

+ mivita e.K. | Leinfeld 2 | 87755 Kirchhaslach
+ Telefon: +49 (0) 8333 946 98 90 | Fax: +49 (0) 8333 7268
+ E-Mail: info@mivita.care

+ www.mivita.care +
+

Geschäftsinhaber: Alois Ried | Registergericht: Memmingen
+ Registernummer: HRA 12236 | USt-ID-Nr.: DE 244162340

+ + Datenschutzerklärung
+ Impressum
+ + © 2019 All Rights Reserved
+
+
+
+
+ + + diff --git a/resources/views/web/templates/checkout-final.blade.php b/resources/views/web/templates/checkout-final.blade.php index 4e13f37..e89d7ef 100644 --- a/resources/views/web/templates/checkout-final.blade.php +++ b/resources/views/web/templates/checkout-final.blade.php @@ -92,18 +92,37 @@
-

Thank you, John Doe.

- -

- Your order has been placed. In a few moments you will receive an order confirmation email from us.
- If you like, you can explore more products. -

+

Vielen Dank,

+

Deine Bestellung wurde aufgenommen. In Kürze erhälst du von uns eine Bestellbestätigungs-E-Mail.

+

Deine Bestellnummer ist: {{ $order_reference }}


+ @if($pay_trans && $pay_trans->shopping_payment) + + @if($pay_trans->shopping_payment->clearingtype == "vor") +

Bezahlung per Vorkasse:

+

Bitte überweise {{ number_format( floatval($pay_trans->shopping_payment->amount/100), 2, ",", ".") }} EUR auf die folgende Kontoverbindung, um den Kauf abzuschließen. +
+ Kontoinhaber: {{ $pay_trans->transmitted_data['clearing_bankaccountholder'] }}
+ IBAN: {{ $pay_trans->transmitted_data['clearing_bankiban'] }}
+ BIC: {{ $pay_trans->transmitted_data['clearing_bankbic'] }}
+ Bank: {{ $pay_trans->transmitted_data['clearing_bankname'] }}
+ Gesamtbetrag: {{ number_format( floatval($pay_trans->shopping_payment->amount/100), 2, ",", ".") }} EUR
+ Verwendungszweck: {{ $pay_trans->transmitted_data['clearing_bankcode'] }} +

+
+ @endif + + @if($pay_trans->shopping_payment->clearingtype == "cc") +

Bezahlung per Kreditkarte:

+

Deine Zahlung wurde genehmigt, eine Bestätigung der Zahlung wird automatisch erstellt.

+
+ @endif + @endif

- Thank you very much for choosing us,
- Inc. + Dein Team von,
+ mivita.

diff --git a/resources/views/web/templates/checkout.blade.php b/resources/views/web/templates/checkout.blade.php index ed352dd..522876a 100644 --- a/resources/views/web/templates/checkout.blade.php +++ b/resources/views/web/templates/checkout.blade.php @@ -84,13 +84,20 @@ padding-top: 10px; } } - - - - .error .select2-selection { + .cc_error { border: #bf6464 2px dashed; } + + + .error .select2-selection, .error select.form-control { + border: #bf6464 2px dashed; + } + + fieldset.softhide { + display: none; + } + @@ -141,6 +148,18 @@ @endif + @if (\Session::has('errormessage')) +
+
+
+ {{ \Session::get('customermessage') }} +
+
+
+ @endif + + +
{!! Form::open(['url' => route('checkout.checkout_card_final'), 'class' => 'row clearfix', 'id'=>'']) !!} @@ -153,19 +172,19 @@
- {!! Form::text('billing[company]', null, ['class' => 'form-control', 'id'=>'billing_company']) !!} + {!! Form::text('billing_company', $shopping_user->billing_company, ['class' => 'form-control', 'id'=>'billing_company']) !!}
-
+
- + {!! HTMLHelper::getSalutation(($shopping_user->billing_salutation ? $shopping_user->billing_salutation : old('billing_salutation'))) !!} - @if ($errors->has('billing.salutation')) - + @if ($errors->has('billing_salutation')) + @endif
@@ -174,18 +193,18 @@
- {!! Form::text('billing[firstname]', null, ['class' => 'form-control '.($errors->has('billing.firstname') ? 'error' : ''), 'id'=>'billing_firstname']) !!} - @if ($errors->has('billing.firstname')) - + {!! Form::text('billing_firstname', $shopping_user->billing_firstname, ['class' => 'form-control '.($errors->has('billing_firstname') ? 'error' : ''), 'id'=>'billing_firstname']) !!} + @if ($errors->has('billing_firstname')) + @endif
- {!! Form::text('billing[lastname]', null, ['class' => 'form-control '.($errors->has('billing.lastname') ? 'error' : ''), 'id'=>'billing_lastname']) !!} - @if ($errors->has('billing.lastname')) - + {!! Form::text('billing_lastname', $shopping_user->billing_lastname, ['class' => 'form-control '.($errors->has('billing_lastname') ? 'error' : ''), 'id'=>'billing_lastname']) !!} + @if ($errors->has('billing_lastname')) + @endif
@@ -195,18 +214,18 @@
- {!! Form::text('billing[address]', null, ['class' => 'form-control '.($errors->has('billing.address') ? 'error' : ''), 'id'=>'billing_address']) !!} - @if ($errors->has('billing.address')) - + {!! Form::text('billing_address', $shopping_user->billing_address, ['class' => 'form-control '.($errors->has('billing_address') ? 'error' : ''), 'id'=>'billing_address']) !!} + @if ($errors->has('billing_address')) + @endif
- {!! Form::text('billing[address_2]', null, ['class' => 'form-control '.($errors->has('billing.address_2') ? 'error' : ''), 'id'=>'billing_address_2']) !!} - @if ($errors->has('billing.address_]')) - + {!! Form::text('billing_address_2', $shopping_user->billing_address_2, ['class' => 'form-control '.($errors->has('billing_address_2') ? 'error' : ''), 'id'=>'billing_address_2']) !!} + @if ($errors->has('billing_address_2')) + @endif
@@ -215,44 +234,44 @@
- {!! Form::text('billing[zipcode]', null, ['class' => 'form-control '.($errors->has('billing.zipcode') ? 'error' : ''), 'id'=>'billing_zipcode']) !!} - @if ($errors->has('billing.zipcode')) - + {!! Form::text('billing_zipcode', $shopping_user->billing_zipcode, ['class' => 'form-control '.($errors->has('billing_zipcode') ? 'error' : ''), 'id'=>'billing_zipcode']) !!} + @if ($errors->has('billing_zipcode')) + @endif
- {!! Form::text('billing[city]', null, ['class' => 'form-control '.($errors->has('billing.city') ? 'error' : ''), 'id'=>'billing_city']) !!} - @if ($errors->has('billing.city')) - + {!! Form::text('billing_city', $shopping_user->billing_city, ['class' => 'form-control '.($errors->has('billing_city') ? 'error' : ''), 'id'=>'billing_city']) !!} + @if ($errors->has('billing_city')) + @endif
- {!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!} - +
- {!! Form::text('billing[phone]', null, ['class' => 'form-control '.($errors->has('billing.phone') ? 'error' : ''), 'id'=>'billing_phone']) !!} - @if ($errors->has('billing.phone')) - + {!! Form::text('billing_phone', $shopping_user->billing_phone, ['class' => 'form-control '.($errors->has('billing_phone') ? 'error' : ''), 'id'=>'billing_phone']) !!} + @if ($errors->has('billing_phone')) + @endif
- {!! Form::email('billing[email]', null, ['class' => 'form-control '.($errors->has('billing.email') ? 'error' : ''), 'id'=>'billing_email']) !!} - @if ($errors->has('billing.email')) - + {!! Form::email('billing_email', $shopping_user->billing_email, ['class' => 'form-control '.($errors->has('billing_email') ? 'error' : ''), 'id'=>'billing_email']) !!} + @if ($errors->has('billing_email')) + @endif
@@ -261,7 +280,7 @@

@if ($errors->has('accepted_data_checkbox')) @@ -276,7 +295,7 @@

@@ -298,19 +317,23 @@
- {!! Form::text('shipping[company]', null, ['class' => 'form-control', 'id'=>'billing_company']) !!} + {!! Form::text('shipping_company', $shopping_user->shipping_company, ['class' => 'form-control', 'id'=>'billing_company']) !!}
+
+ + - + {!! HTMLHelper::getSalutation(($shopping_user->shipping_salutation ? $shopping_user->shipping_salutation : old('shipping_salutation'))) !!} - @if ($errors->has('shipping.firstname')) - + @if ($errors->has('shipping_salutation')) + @endif +
@@ -318,18 +341,18 @@
- {!! Form::text('shipping[firstname]', null, ['class' => 'form-control '.($errors->has('shipping.firstname') ? 'error' : ''), 'id'=>'shipping_firstname']) !!} - @if ($errors->has('shipping.firstname')) - + {!! Form::text('shipping_firstname', $shopping_user->shipping_firstname, ['class' => 'form-control '.($errors->has('shipping_firstname') ? 'error' : ''), 'id'=>'shipping_firstname']) !!} + @if ($errors->has('shipping_firstname')) + @endif
- {!! Form::text('shipping[lastname]', null, ['class' => 'form-control '.($errors->has('shipping.lastname') ? 'error' : ''), 'id'=>'shipping_lastname']) !!} - @if ($errors->has('shipping.lastname')) - + {!! Form::text('shipping_lastname', $shopping_user->shipping_lastname, ['class' => 'form-control '.($errors->has('shipping_lastname') ? 'error' : ''), 'id'=>'shipping_lastname']) !!} + @if ($errors->has('shipping_lastname')) + @endif
@@ -339,18 +362,18 @@
- {!! Form::text('shipping[address]', null, ['class' => 'form-control '.($errors->has('shipping.address') ? 'error' : ''), 'id'=>'shipping_address']) !!} - @if ($errors->has('shipping.address')) - + {!! Form::text('shipping_address', $shopping_user->shipping_address, ['class' => 'form-control '.($errors->has('shipping_address') ? 'error' : ''), 'id'=>'shipping_address']) !!} + @if ($errors->has('shipping_address')) + @endif
- {!! Form::text('shipping[address_2]', null, ['class' => 'form-control '.($errors->has('shipping.address_2') ? 'error' : ''), 'id'=>'shipping_address_2']) !!} - @if ($errors->has('shipping.address_]')) - + {!! Form::text('shipping_address_2', $shopping_user->shipping_address_2, ['class' => 'form-control '.($errors->has('shipping_address_2') ? 'error' : ''), 'id'=>'shipping_address_2']) !!} + @if ($errors->has('shipping_address_2')) + @endif
@@ -359,16 +382,16 @@
- {!! Form::text('shipping[zipcode]', null, ['class' => 'form-control '.($errors->has('shipping.zipcode') ? 'error' : ''), 'id'=>'shipping_zipcode']) !!} - @if ($errors->has('shipping.zipcode')) - + {!! Form::text('shipping_zipcode', $shopping_user->shipping_zipcode, ['class' => 'form-control '.($errors->has('shipping_zipcode') ? 'error' : ''), 'id'=>'shipping_zipcode']) !!} + @if ($errors->has('shipping_zipcode')) + @endif
- {!! Form::text('shipping[city]', null, ['class' => 'form-control '.($errors->has('shipping.city') ? 'error' : ''), 'id'=>'shipping_city']) !!} - @if ($errors->has('shipping.city')) - + {!! Form::text('shipping_city', $shopping_user->shipping_city, ['class' => 'form-control '.($errors->has('shipping_city') ? 'error' : ''), 'id'=>'shipping_city']) !!} + @if ($errors->has('shipping_city')) + @endif
@@ -377,19 +400,19 @@
- {!! HTMLHelper::getCountriesForShipping(Yard::instance('shopping')->getShippingCountryId()) !!} - +
- {!! Form::text('shipping[phone]', null, ['class' => 'form-control '.($errors->has('shipping.phone') ? 'error' : ''), 'id'=>'shipping_phone']) !!} - @if ($errors->has('shipping.phone')) - + {!! Form::text('shipping_phone', $shopping_user->shipping_phone, ['class' => 'form-control '.($errors->has('shipping_phone') ? 'error' : ''), 'id'=>'shipping_phone']) !!} + @if ($errors->has('shipping_phone')) + @endif
@@ -408,55 +431,61 @@

Zahlungsart


-
- -
-
-
{{--
-
--}}
-
- {{--
-
@@ -467,6 +496,85 @@ + +
+ + +

Kreditkarte

+ +
+ +
+
+
+ + + +
+ + +
+ +
+
+ +
+
+ {!! Form::text('cc_cardholder_first', '', ['class' => 'form-control', 'id'=>'cc_cardholder_first', 'placeholder'=>'Vorname']) !!} +
+
+ {!! Form::text('cc_cardholder_last', '', ['class' => 'form-control', 'id'=>'cc_cardholder_last', 'placeholder'=>'Nachname']) !!} +
+
+ +
+ + + {!! Form::text('cc_cardpan', '', ['class' => 'form-control', 'id'=>'cc_cardpan', 'placeholder'=>'Kreditkartennummer']) !!} +
+
+
+ +
+ +
+
+ +
+
+
+ + + {!! Form::text('cc_cardcvc2', '', ['class' => 'form-control', 'id'=>'cc_cardcvc2', 'placeholder'=>'CVC*']) !!} + +
+
+
+
+
+
@@ -517,46 +625,6 @@
- - - {{-- - -
-
-
- -
- -
- - -
- -
-
- - -
-
- - -
-
- NOTE: Email address will be used to login - -
- - - -
-
-
- - --}} -
{!! Form::close() !!} diff --git a/resources/views/web/user/layouts/application.blade.php b/resources/views/web/user/layouts/application.blade.php index e3061dd..1955f50 100644 --- a/resources/views/web/user/layouts/application.blade.php +++ b/resources/views/web/user/layouts/application.blade.php @@ -80,6 +80,87 @@ jQuery('.quick-cart-box').css('display', 'none'); }); + + function showCreditCardPayment(val){ + console.log(val); + if(val === 'cc'){ + $('#creditcard-box-holder').show('slow'); + }else{ + $('#creditcard-box-holder').hide('slow'); + } + + } + showCreditCardPayment(jQuery('input[name="payment_method"]:checked').val()); + jQuery('input[name="payment_method"]').on('change', function () { + showCreditCardPayment($(this).val()); + }); + + + + + {{-- + + + --}} + \ No newline at end of file diff --git a/resources/views/web/user/layouts/includes/footer.blade.php b/resources/views/web/user/layouts/includes/footer.blade.php index 1a0e536..4156c5a 100644 --- a/resources/views/web/user/layouts/includes/footer.blade.php +++ b/resources/views/web/user/layouts/includes/footer.blade.php @@ -7,16 +7,19 @@ Du möchtest Vertriebspartner werden oder hast Fragen zu unseren Produkten?

@if(Util::isCheckout()) - -

- Jetzt Kontakt aufnehmen: zum Kontakt -

- + @if(isset($order_reference)) +

+ zurück zum Shop +

+ @else +

+ Jetzt Kontakt aufnehmen: zum Kontakt +

+ @endif @else

Jetzt Kontakt aufnehmen: zum Kontakt

- @endif
@@ -61,9 +64,16 @@

 

- - zurück zum Warenkorb - + + @if(isset($order_reference)) + + zurück zum Shop + + @else + + zurück zum Warenkorb + + @endif
@else @@ -96,9 +106,9 @@
@if(Util::isCheckout()) @else diff --git a/resources/views/web/user/layouts/includes/header.blade.php b/resources/views/web/user/layouts/includes/header.blade.php index fbba118..74a7685 100644 --- a/resources/views/web/user/layouts/includes/header.blade.php +++ b/resources/views/web/user/layouts/includes/header.blade.php @@ -59,18 +59,31 @@ @if(Util::isCheckout()) - + @if(isset($order_reference)) + + @else + + @endif