Giter Site home page Giter Site logo

mitodl / bootcamp-ecommerce Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 2.0 8.01 MB

MIT Bootcamp e-commerce

License: BSD 3-Clause "New" or "Revised" License

Shell 0.31% Python 66.39% HTML 3.83% JavaScript 25.60% CSS 0.02% Dockerfile 0.07% SCSS 3.76% Procfile 0.02%

bootcamp-ecommerce's People

Contributors

abeglova avatar ahmed-belal avatar alicewriteswrongs avatar amir-qayyum-khan avatar anas12091101 avatar annagav avatar arslanashraf7 avatar asadali145 avatar asadiqbal08 avatar blarghmatey avatar collinpreston avatar dependabot[bot] avatar feoh avatar giocalitri avatar gsidebo avatar gumaerc avatar hamzaibnfarooq avatar kyfantaz avatar markbreedlove avatar mbertrand avatar mudassir-hafeez avatar odlbot avatar pdpinch avatar rachellougee avatar renovate[bot] avatar rhysyngsun avatar roberthouse54 avatar sesterki avatar shaidar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bootcamp-ecommerce's Issues

set up DNS for bootcamp.odl.mit.edu

In order to avoid a conflict with the DNS for the existing site at bootcamp.mit.edu, we won't use a subdomain. Instead, we'll go with bootcamp.odl.mit.edu. This should be a simple setup in Route 53 and Heroku.

US7 As a financial admin, I want to have each payment link to the Bootcamp it belongs.

Similar to #9.

"bootcamp name" needs to be passed to CyberSource as a MerchantDefinedField.

Merchant Defined data is passed to Cybersource in ecommerce/api.py. Currently we pass data about the klass, but not the bootcamp.

        'merchant_defined_data1': 'klass',
        'merchant_defined_data2': '{}'.format(klass.title),
        'merchant_defined_data3': '{}'.format(klass_id),

(I'm not sure what value there is in passing the string 'klass' and the klass id.)

Production Ready

Off the top of my head this should include:

  • choose URL and configure DNS
  • Heroku and the build pipeline
  • Cybersource credentials
  • Setting up Sentry
  • Mail monitoring

UI skeleton

Add a skeleton UI to allow login and logout, and some non-functional payment UI

make the logo smaller in the receipt e-mail

Andrew from the Bootcamp team asked us to make the Bootcamp logo smaller on the receipt email sent from CyberSource. The logo text should be about the same size as the "Receipt" header in the e-mail.

He'd also like to see some more white space between the logo and the rest of the text. I think we can just add some padding when we reduce the log.

add MITx Bootcamps logo and styling to Cybersource pages

(Similar to mitodl/micromasters#2156)

Cybersource supports a logo and a limited amount of styling for the checkout pages. It would make users more confident in the checkout process, and less likely to abandon their cart, if they saw MIT branding on these pages.

The logo is a 840x60 (or smaller) pixel image, in jpg or png format.

Here's a screenshot from the Cybersource business center where you can see the style settings that can be changed.

screenshot-ebctest cybersource com-2016-12-18-14-51-42

Configure Cybersource in Production

We need to set up CyberSource similarly to the MicroMasters setup:

  • change contact information? (currently set to Chi Chu)
  • turn on payment tokenization
  • Enable PayPal Express Checkout
  • single page or multipage form? (bootcamp currently uses single page; MicroMasters uses multipage)
  • Notifications: update merchant post URL
  • Notifications: set merchant post email to odlcybersource account
  • Notifications: Email Receipt to Customer
  • Notifications: Sender's Email Address
  • Notifications: Sender's Name
  • #43 Notifications: add logo to receipt (bootcamp doesn't do this currently)
  • Branding: set header
  • Branding: set colors

Fix redirect URLs

It looks like CyberSource doesn't like the same URL being used for both the order receipt and cancellation pages. We should make some placeholder URLs which are different from each other (ie {base_url}/receipt/ and {base_url}/cancel/)

Blank page after payment on cybersource

After the payment on cybersource the user gets redirected to the main website https://bootcamp-ecommerce-ci.herokuapp.com/?status=receipt but the page is empty.

Tested only on CI environment so far

Reflect new payment/installment logic in UI

We've decided that the logic for payments and installments in bootcamp-ecommerce is as follows:

  • A Klass should have one or more Installments
  • The user will always see the total amount they've paid out of the total amount due, and will still be able to pay any amount towards the total at any time before the final Installment deadline
  • The user will always see the date of the final deadline (i.e.: the last Installment deadline)
  • If a user has not paid as much or more than the total amount up to and including the nearest future Installment amount, they will be shown a message that tells them how much they owe towards that amount, and that it is due by the Installment deadline date. EXAMPLE: A Klass has 4 Installments, $1000 each. 2 of those installments are in the past, the user has paid a total of $2500, and the next Installment has a deadline of May 30th. This message should indicate that the user needs to pay $500 by May 30th.
    • If a user has already paid more than the total amount required for the current Installment, this message will be hidden

We need to reflect this logic in the UI.

Google analytics

We need to add the relevant script tag for google analytics and whatever other analytics tools we use

for Prod, use UA-5145472-18
for CI and RC, use UA-5145472-19

Remove the text "/ Payment" from the logo

Another request from Andrew. He didn't like the addition of "/ Payment" to the logo.

He was amenable to making "Payment" a title elsewhere in the header, but he didn't like it as part of the logo.

Display klass payments based on API results

The bootcamp UI currently displays some hardcoded text for single klass that a user can pay for. We want to show the user the actual information from the API about the klasses they have paid for or can pay for.

Acceptance criteria:

  • Payment page displays klass information based on API results
    • If user can pay for a single klass, show payment info/prompt for that klass (like this design)
    • If user can pay for a multiple klasses, show a dropdown with the options, and when one is selected, show payment info/prompt for that klass

This is the UI part of #6

US6 As a financial admin, I want to have each payment link to the learner.

The learners email needs to be passed to CyberSource as MerchantDefinedFields, since the payer email and payer name may not be the same.

Similar to #9.

Merchant Defined data is passed to Cybersource in ecommerce/api.py. Currently we pass data about the klass, but not the learner.

        'merchant_defined_data1': 'klass',
        'merchant_defined_data2': '{}'.format(klass.title),
        'merchant_defined_data3': '{}'.format(klass_id),

login with edX.org credentials

As a user (learner or admin), I want to be able to log in to the site with my edX. org account credentials, same as MicroMasters.

Error pages

I think we just need a 404 and a 500 page. Maybe a 403.

It could be the same general idea as micromasters

Write API specs for the bootcamp

We need the following API:

  • given an user email, return the list of bootcamps where the user has been accepted.
    • REQUEST:
      • GET /<custom_base_url>/user/<user_email>
    • RESPONSE:
      • HTTP Headers : Content-Type: application/json
      • Status codes:
        • 200 OK
        • 400 - Bad Request: The given user email is not valid
        • 401 - Unauthorized: Requesting client is not authenticated
        • 403 - Forbidden: Requesting client is authenticated but there is no permission to query for progress for the given user email (not sure this is necessary).
        • 404 - Not Found: requested user email doesn't exist
      • Example response
        •  {
               "user": "[email protected]", 
               "bootcamps" :  [
                    {
                        "bootcamp_id" : 23,
                        "bootcamp_title": "The Awesome Bootcamp",
                        "klasses" :  [
                             {
                                 "klasse_id": 12,
                                 "klasse_name": "The Awesome Bootcamp Klasse of 2016",
                                 "status": "admitted",
                                 "is_user_eligible_to_pay": true
                             },
                             {
                                 "klasse_id": 23,
                                 "klasse_name": "The Awesome Bootcamp Klasse of 2016",
                                 "status": "pending",
                                 "is_user_eligible_to_pay": false
                             }
                         ]
                    }
                    {
                        "bootcamp_id" : 76,
                        "bootcamp_title": "The Outstanding Bootcamp",
                        "klasses" :  [
                             {
                                 "klasse_id": 36,
                                 "klasse_name": "The Outstanding Bootcamp Klasse of 2017",
                                 "status": "admitted",
                                 "is_user_eligible_to_pay": true
                             }
                         ]
                    }
                ]
           }
          

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.