Jump to content

administrator

Administrators
  • Posts

    3,092
  • Joined

  • Last visited

  • Days Won

    375

Everything posted by administrator

  1. Sure. Did you join the private mentoring club on the forum? If so, that is the best place to post. Let me know! Stef
  2. This is called internationalization ... there are different approaches. Long subject. But if it is simple site, having a sub domain is a viable option. I would treat these as product skus on the same site.
  3. Good luck and welcome to the forum.
  4. Ahh .. that is a generation 1 chapter review question that slipped through. Please ignore it. We are removing it for a bunch of reasons. Thanks for letting me know it was still there.
  5. Hi, Can you send me the course, chapter, lesson and question number? Stef
  6. Hi! If you are part of the mentoring group, you should post this in there .... you should get more responses. I would just seek out a client ... free or otherwise. Getting out there in the real world will also spawn many ideas.
  7. Here you go: https://www.killerphp.com/tutorials/object-oriented-php/ Stef
  8. Sorry for the delay. Just look up top 10 basic design principles for web design for some tips. Things like color and font choices, alignment etc.
  9. This is an OOOOLD thread. Just keep writing code and it will become natural.
  10. Hi, I am sending you an invite to the private club. Edit: I just sent the invite.
  11. Hi! The cart project, required a few updates given the changes to PayPal since that course was created. Here are the details: Videos impacted: Composer Introduction & SDK Setup PayPal Settings & Minor Changes Steps to Submitting a Payment Integrating PayPal Part 1 Integrating PayPal Part 2 Integrating PayPal Part 3 Integrating PayPal Part 4 On the whole the videos can be followed, but there are few red herrings on the way. And unnecessary distractions. Composer Introduction & SDK Setup Forget Composer, this is an unnecessary distraction and just confuses things, maybe mention Composer at the end of the tutorial as an alternative method for installing the SDK. Get the SDK hosted on Github from here: https://github.com/paypal/PayPal-PHP-SDK/releases I used the 1.13.0 zip (latest version) from this page and it works fine. To follow the videos you would rename the uncompressed SDK folder to 'vendor' and place it in the /app directory. The 'samples' are slightly different. They are now hosted online here" https://paypal.github.io/PayPal-PHP-SDK/sample/ Only one sample is actually used in the tutorial, this one: https://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html as you can see it looks virtually the same. If you want to host the samples locally, you can still do that. Go to the main SDK repository on Github https://github.com/paypal/PayPal-PHP-SDK you can see the samples directory is there. I did however have trouble downloading directly from here. For some reason when you hit the clone/download button and download from here the zip is missing files and directories you'd expect to be there, including the samples directory. I have no clue why this is. I managed to work around this problem by forking the repository and using the GitHub desktop app to clone my fork to my local drive. It was then fairly simple to drag the 'samples' directory out and host that with my MAMP/LAMP. PayPal Settings & Minor Changes Do the changes to init.php etc Then the first step really is to goto https://developer.paypal.com/ log in and go to the dashboard (it all looks very different, but it's essentially doing the same job as before). Scroll down to REST API apps and create a new App. A client ID, secret and two test accounts (buyer and facilitator) are created automatically. Continue and make the changes to init.php, v_public_cart.php, success.php, v_public_success.php and m_payments.php etc. Steps to Submitting a Payment This video is a bit confusing now, as the interactive guide is not the same. The vid really needs to be just a simple explanation of the steps used with paypal. Integrating PayPal Part 1 Integrating PayPal Part 2 Integrating PayPal Part 3 Integrating PayPal Part 4 Once all the above is sorted you can follow these video's pretty much verbatim, only there are some subtle differences with the bootstrap.php file that you'll be copying from. It's easier to just look at my m_payments.php file: <?php /* Payments Class Handle all tasks related to payments */ require ('app/vendor/autoload.php'); use PayPal\Rest\ApiContext; use PayPal\Auth\OAuthTokenCredential; use PayPal\Api\Amount; use PayPal\Api\Details; use PayPal\Api\Item; use PayPal\Api\ItemList; use PayPal\Api\Payer; use PayPal\Api\Payment; use PayPal\Api\RedirectUrls; use PayPal\Api\Transaction; use PayPal\Api\PaymentExecution; class Payments { private $api_context; function __construct() { $this->api_context = $this->get_api_context(); // echo '<pre>'; // print_r($this->api_context); // echo '</pre>'; // exit; } /* Getters and Setters */ public function get_api_context() { if (PAYPAL_MODE == "sandbox") { $apiContext = new ApiContext( new OAuthTokenCredential ( PAYPAL_DEVID, PAYPAL_DEVSECRET ) ); } else { $apiContext = new ApiContext( new OAuthTokenCredential ( PAYPAL_LIVEID, PAYPAL_LIVESECRET ) ); } $apiContext->setConfig(array ( 'mode' => PAYPAL_MODE, 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => true, 'log.FileName' => 'app/PayPal.log', 'log.LogLevel' => 'FINE' )); return $apiContext; } /** * Creates PayPal payment: * * @access public * @param * @return error string **/ public function create_payment($items_array, $details_array) { $payer = new Payer(); $payer->setPaymentMethod("paypal"); // set items $i = 0; foreach ($items_array as $item) { $items[$i] = new Item(); $items[$i] ->setName($item['name']) ->setCurrency(PAYPAL_CURRENCY) ->setQuantity($item['quantity']) ->setSku("123123" . $i) ->setPrice($item['price']); $i++; } $itemList = new ItemList(); $itemList->setItems($items); // set details $details = new Details(); $details ->setShipping($details_array['shipping']) ->setTax($details_array['tax']) ->setSubtotal($details_array['subtotal']); // set amount $amount = new Amount(); $amount ->setCurrency(PAYPAL_CURRENCY) ->setTotal($details_array['total']) ->setDetails($details); // set transaction $transaction = new Transaction(); $transaction ->setAmount($amount) ->setItemList($itemList) ->setDescription("") ->setInvoiceNumber(uniqid()); // create urls $redirectUrls = new RedirectUrls(); $redirectUrls ->setReturnUrl(SITE_PATH . "success.php") ->setCancelUrl(SITE_PATH . "cart.php"); // create payment $payment = new Payment(); $payment ->setIntent("sale") ->setPayer($payer) ->setRedirectUrls($redirectUrls) ->setTransactions(array($transaction)); try { $payment->create($this->api_context); } catch (Exception $ex) { // echo '<pre>'; // print_r($ex->getData()); // echo '</pre>'; // exit; return $ex->getMessage(); } // get redirect url $approvalUrl = $payment->getApprovalLink(); $_SESSION['payment_id'] = $payment->getId(); if (isset($approvalUrl)) { header("Location: $approvalUrl"); exit; } } /** * Executes PayPal payment: * * @access public * @param string, string * @return result object **/ public function execute_payment($payer_id, $payment_id) { $payment = Payment::get($payment_id, $this->api_context); $execution = new PaymentExecution(); $execution->setPayerId($payer_id); $result = $payment->execute($execution, $this->api_context); return $result; } } As you can see it's almost the same, just some subtle difference at the bottom with the re-directs and the try/catch. I did have to fix that bug that was a result of a comma being in the amount (see earlier post for the fix). Anyway I think that was everything. Dave
  12. Do the fundamentals. They all pay well once you are in the job. If you are a great JS developer, you make big money. If you are great Python programmer, you make big money. If you are great C# programmer, you make big money. On the flip side: If you are a bad JS developer, you WILL NOT make big money. If you are bad Python programmer, you WILL NOT make big money. .. You get the idea. Learn the fundamentals here: https://school.studioweb.com/store
  13. Check the browser docs.
  14. CSS is always much harder for people. Just take your time and write the code. You may have to do some lessons 2x. You could move forward to JavaScript to take a break from CSS.
  15. Hey! Sorry for the delay. Been busy too! Yes, the Killer in Killersites triggers all kinds of filters. That's why I am moving towards the more friendly StudioWeb brand.
  16. Just do a little everyday and you will learn a lot!
  17. Hi, When you have enough post there is that ability. Stef
×
×
  • Create New...