Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
PERFORMA_REPLICA
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Muhammad Usman
PERFORMA_REPLICA
Commits
cced2597
Commit
cced2597
authored
Feb 28, 2018
by
Nilu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replace card, edit card functionality
parent
8c2fa209
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
620 additions
and
144 deletions
+620
-144
Company.xml
cmsWebApp/sql/Company.xml
+3
-0
Company.sql
cmsWebApp/sql/ms/Company.sql
+3
-0
Company.sql
cmsWebApp/sql/oracle/Company.sql
+3
-0
Company.sql
cmsWebApp/sql/postgres/Company.sql
+3
-0
MakePaymentFP.java
cmsWebApp/src/performa/form/MakePaymentFP.java
+31
-43
UpdateCardFP.java
cmsWebApp/src/performa/form/UpdateCardFP.java
+76
-0
BaseCompany.java
cmsWebApp/src/performa/orm/BaseCompany.java
+0
-0
Company.java
cmsWebApp/src/performa/orm/Company.java
+19
-0
Company.xml
cmsWebApp/src/performa/orm/Company.xml
+3
-0
CompanyPersistenceMgr.java
cmsWebApp/src/performa/orm/CompanyPersistenceMgr.java
+0
-0
StripeUtils.java
cmsWebApp/src/performa/utils/StripeUtils.java
+27
-2
common.css
cmsWebApp/webroot/css/common.css
+10
-2
CustomServlets_adminPortal.xml
...oot/extensions/adminportal/CustomServlets_adminPortal.xml
+1
-0
GeneralConfig_adminPortal.xml
...root/extensions/adminportal/GeneralConfig_adminPortal.xml
+2
-0
billing.jsp
cmsWebApp/webroot/extensions/adminportal/billing.jsp
+21
-58
edit_card.jsp
cmsWebApp/webroot/extensions/adminportal/edit_card.jsp
+98
-0
card_details.jsp
...ebApp/webroot/extensions/adminportal/inc/card_details.jsp
+131
-0
existing_card.jsp
...bApp/webroot/extensions/adminportal/inc/existing_card.jsp
+38
-0
replace_card.jsp
cmsWebApp/webroot/extensions/adminportal/replace_card.jsp
+91
-0
20180220_Alter_Company.xml
...t/extensions/performa/upgrades/20180220_Alter_Company.xml
+16
-0
performaStripe.js
cmsWebApp/webroot/scripts/performaStripe.js
+16
-39
updateCardStripe.js
cmsWebApp/webroot/scripts/updateCardStripe.js
+28
-0
No files found.
cmsWebApp/sql/Company.xml
View file @
cced2597
...
...
@@ -21,6 +21,9 @@
<column
name=
"has_client_support"
type=
"Boolean"
nullable=
"true"
/>
<column
name=
"stripe_reference"
type=
"String"
nullable=
"true"
length=
"100"
/>
<column
name=
"stripe_subscription"
type=
"String"
nullable=
"true"
length=
"100"
/>
<column
name=
"name_on_card"
type=
"String"
nullable=
"true"
length=
"100"
/>
<column
name=
"card_post_code"
type=
"String"
nullable=
"true"
length=
"10"
/>
<column
name=
"card_id"
type=
"String"
nullable=
"true"
length=
"100"
/>
<column
name=
"added_by_user_id"
type=
"Long"
length=
"11"
nullable=
"false"
/>
<column
name=
"payment_plan_id"
type=
"Long"
length=
"11"
nullable=
"true"
/>
</NODE>
...
...
cmsWebApp/sql/ms/Company.sql
View file @
cced2597
...
...
@@ -21,6 +21,9 @@ CREATE TABLE tl_company (
has_client_support
char
(
1
)
NULL
,
stripe_reference
varchar
(
100
)
NULL
,
stripe_subscription
varchar
(
100
)
NULL
,
name_on_card
varchar
(
100
)
NULL
,
card_post_code
varchar
(
10
)
NULL
,
card_id
varchar
(
100
)
NULL
,
added_by_user_id
numeric
(
12
)
NOT
NULL
,
payment_plan_id
numeric
(
12
)
NULL
);
...
...
cmsWebApp/sql/oracle/Company.sql
View file @
cced2597
...
...
@@ -22,6 +22,9 @@ CREATE TABLE tl_company (
has_client_support
char
(
1
)
NULL
,
stripe_reference
varchar2
(
100
)
NULL
,
stripe_subscription
varchar2
(
100
)
NULL
,
name_on_card
varchar2
(
100
)
NULL
,
card_post_code
varchar2
(
10
)
NULL
,
card_id
varchar2
(
100
)
NULL
,
added_by_user_id
number
(
12
)
NOT
NULL
,
payment_plan_id
number
(
12
)
NULL
);
...
...
cmsWebApp/sql/postgres/Company.sql
View file @
cced2597
...
...
@@ -22,6 +22,9 @@ CREATE TABLE tl_company (
has_client_support
char
(
1
)
NULL
,
stripe_reference
varchar
(
100
)
NULL
,
stripe_subscription
varchar
(
100
)
NULL
,
name_on_card
varchar
(
100
)
NULL
,
card_post_code
varchar
(
10
)
NULL
,
card_id
varchar
(
100
)
NULL
,
added_by_user_id
numeric
(
12
)
NOT
NULL
,
payment_plan_id
numeric
(
12
)
NULL
);
...
...
cmsWebApp/src/performa/form/MakePaymentFP.java
View file @
cced2597
...
...
@@ -15,65 +15,56 @@ import oneit.logging.LogMgr;
import
oneit.objstore.StorageException
;
import
oneit.servlets.forms.SuccessfulResult
;
import
oneit.servlets.process.ORMProcessState
;
import
performa.orm.Job
;
import
com.stripe.Stripe
;
import
com.stripe.exception.StripeException
;
import
com.stripe.model.Card
;
import
com.stripe.model.Charge
;
import
com.stripe.model.Customer
;
import
com.stripe.model.Subscription
;
import
java.util.Calendar
;
import
java.util.Date
;
import
oneit.utils.DateDiff
;
import
oneit.logging.LoggingArea
;
import
oneit.security.SecUser
;
import
performa.orm.Company
;
import
performa.orm.CompanyUser
;
import
performa.utils.StripeUtils
;
public
class
MakePaymentFP
extends
SaveFP
{
public
static
final
String
STRIPE_KEY
=
ConfigMgr
.
getKeyfileString
(
"stripe.key"
,
""
);
public
static
final
String
STRIPE_PUB_KEY
=
ConfigMgr
.
getKeyfileString
(
"stripe.pubkey"
,
""
);
public
static
final
String
STRIPE_KEY
=
ConfigMgr
.
getKeyfileString
(
"stripe.key"
,
""
);
public
static
final
String
STRIPE_PUB_KEY
=
ConfigMgr
.
getKeyfileString
(
"stripe.pubkey"
,
""
);
private
static
final
LoggingArea
LOG
=
LoggingArea
.
createLoggingArea
(
"MakePaymentFP"
);
@Override
public
SuccessfulResult
processForm
(
ORMProcessState
process
,
SubmissionDetails
submission
,
Map
p
)
throws
BusinessException
,
StorageException
{
HttpServletRequest
request
=
submission
.
getRequest
();
LogMgr
.
log
(
Job
.
LOG
,
LogLevel
.
PROCESSING1
,
"In MakePaymentFP : "
);
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"In MakePaymentFP : "
);
Stripe
.
apiKey
=
STRIPE_KEY
;
try
String
token
=
request
.
getParameter
(
"stripe-token-id"
);
if
(
StringUtils
.
subBlanks
(
token
)
==
null
)
{
Customer
customer
=
Customer
.
retrieve
(
"cus_C8kIeItf64JnHe
"
);
System
.
out
.
println
(
"customer :: "
+
customer
);
throw
new
BusinessException
(
"Updating card details failed, Please contact adminstrator for more info.
"
);
}
// Map<String, Object> item = new HashMap<>();
// item.put("plan", "0001");
//
// Map<String, Object> items = new HashMap<>();
// items.put("0", item);
//
// Map<String, Object> params = new HashMap<>();
// params.put("items", items);
// params.put("coupon", "EAP");
// params.put("customer", "cus_C8kIeItf64JnHe");
//
// Date today = new Date();
// Date trialExpiry = DateDiff.add(today, Calendar.DATE, 30);
//
// params.put("trial_end", trialExpiry.getTime() / 1000L);
//
// Subscription subscription = Subscription.create(params);
//
// System.out.println("subscription : " + subscription);
try
{
SecUser
secUser
=
SecUser
.
getTXUser
(
process
.
getTransaction
());
CompanyUser
companyUser
=
secUser
.
getExtension
(
CompanyUser
.
REFERENCE_CompanyUser
);
Card
card
=
StripeUtils
.
updateCardDetails
(
companyUser
.
getCompany
(),
token
);
Company
company
=
companyUser
.
getCompany
();
company
.
setNameOnCard
(
card
.
getName
());
company
.
setCardPostCode
(
card
.
getAddressZip
());
company
.
setCardID
(
card
.
getId
());
}
catch
(
Exception
e
)
catch
(
StorageException
|
Field
Exception
e
)
{
System
.
out
.
println
(
"error occured : "
+
e
);
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
e
,
"Error while making payment"
);
}
// performStripePayment(submission);
return
super
.
processForm
(
process
,
submission
,
p
);
}
...
...
@@ -91,12 +82,13 @@ public class MakePaymentFP extends SaveFP
Stripe
.
apiKey
=
STRIPE_KEY
;
// Charge the Customer instead of the card:
Map
<
String
,
Object
>
chargeParams
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
chargeParams
=
new
HashMap
<>();
chargeParams
.
put
(
"amount"
,
NullArith
.
intVal
(
NullArith
.
multiply
(
100
d
,
100
,
0
d
)));
chargeParams
.
put
(
"currency"
,
"aud"
);
chargeParams
.
put
(
"description"
,
"Charges of creating job"
);
chargeParams
.
put
(
"source"
,
token
);
Charge
charge
;
try
{
charge
=
Charge
.
create
(
chargeParams
);
...
...
@@ -114,10 +106,7 @@ public class MakePaymentFP extends SaveFP
errorMsg
+=
", Fraud Details :: "
+
charge
.
getFraudDetails
();
}
throw
new
BusinessException
(
errorMsg
);
}
System
.
out
.
println
(
"stripe response : "
+
charge
.
toJson
());
}
}
\ No newline at end of file
cmsWebApp/src/performa/form/UpdateCardFP.java
0 → 100644
View file @
cced2597
package
performa
.
form
;
import
com.stripe.Stripe
;
import
com.stripe.exception.APIConnectionException
;
import
com.stripe.exception.APIException
;
import
com.stripe.exception.AuthenticationException
;
import
com.stripe.exception.CardException
;
import
com.stripe.exception.InvalidRequestException
;
import
com.stripe.model.Card
;
import
java.util.HashMap
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
oneit.logging.LogLevel
;
import
oneit.logging.LogMgr
;
import
oneit.logging.LoggingArea
;
import
oneit.objstore.StorageException
;
import
oneit.security.SecUser
;
import
oneit.servlets.forms.SubmissionDetails
;
import
oneit.servlets.forms.SuccessfulResult
;
import
oneit.servlets.process.ORMProcessState
;
import
oneit.servlets.process.SaveFP
;
import
oneit.utils.BusinessException
;
import
performa.orm.Company
;
import
performa.orm.CompanyUser
;
import
performa.utils.StripeUtils
;
public
class
UpdateCardFP
extends
SaveFP
{
private
static
final
LoggingArea
LOG
=
LoggingArea
.
createLoggingArea
(
"UpdateCardFP"
);
@Override
public
SuccessfulResult
processForm
(
ORMProcessState
process
,
SubmissionDetails
submission
,
Map
p
)
throws
BusinessException
,
StorageException
{
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
"In UpdateCardFP : "
);
Stripe
.
apiKey
=
StripeUtils
.
STRIPE_KEY
;
try
{
HttpServletRequest
request
=
submission
.
getRequest
();
SecUser
secUser
=
SecUser
.
getTXUser
(
process
.
getTransaction
());
CompanyUser
companyUser
=
secUser
.
getExtension
(
CompanyUser
.
REFERENCE_CompanyUser
);
Company
company
=
companyUser
.
getCompany
();
Card
card
=
StripeUtils
.
retrieveCard
(
company
);
Map
<
String
,
Object
>
updateParams
=
new
HashMap
<>();
String
expiryDate
=
request
.
getParameter
(
"expiry-date"
);
String
name
=
request
.
getParameter
(
"holder-name"
);
String
addressZip
=
request
.
getParameter
(
"address-zip"
);
if
(
expiryDate
!=
null
&&
!
expiryDate
.
isEmpty
()
&&
expiryDate
.
length
()
==
7
)
{
updateParams
.
put
(
"exp_month"
,
expiryDate
.
substring
(
0
,
2
));
updateParams
.
put
(
"exp_year"
,
expiryDate
.
substring
(
5
,
7
));
}
updateParams
.
put
(
"name"
,
name
);
updateParams
.
put
(
"address_zip"
,
addressZip
);
card
.
update
(
updateParams
);
company
.
setNameOnCard
(
name
);
company
.
setCardPostCode
(
addressZip
);
}
catch
(
AuthenticationException
|
InvalidRequestException
|
APIConnectionException
|
CardException
|
APIException
e
)
{
LogMgr
.
log
(
LOG
,
LogLevel
.
PROCESSING1
,
e
,
"Error while making payment"
);
}
return
super
.
processForm
(
process
,
submission
,
p
);
}
}
\ No newline at end of file
cmsWebApp/src/performa/orm/BaseCompany.java
View file @
cced2597
This diff is collapsed.
Click to expand it.
cmsWebApp/src/performa/orm/Company.java
View file @
cced2597
package
performa
.
orm
;
import
com.stripe.model.Card
;
import
oneit.logging.LoggingArea
;
import
oneit.objstore.ObjectStatus
;
import
oneit.objstore.ValidationContext
;
...
...
@@ -10,6 +11,7 @@ import oneit.utils.CollectionUtils;
import
oneit.utils.StringUtils
;
import
oneit.utils.math.NullArith
;
import
oneit.utils.parsers.FieldException
;
import
performa.utils.StripeUtils
;
public
class
Company
extends
BaseCompany
...
...
@@ -133,4 +135,20 @@ public class Company extends BaseCompany
return
null
;
}
public
String
getCardNumber
()
throws
FieldException
{
Card
card
=
StripeUtils
.
retrieveCard
(
this
);
return
card
!=
null
?
"xxxx-xxxx-xxxx-"
+
card
.
getLast4
()
:
""
;
}
public
String
getExpiry
()
throws
FieldException
{
Card
card
=
StripeUtils
.
retrieveCard
(
this
);
return
card
!=
null
?
String
.
format
(
"%02d"
,
card
.
getExpMonth
())
+
" / "
+
(
card
.
getExpYear
()
%
100
)
:
""
;
}
}
\ No newline at end of file
cmsWebApp/src/performa/orm/Company.xml
View file @
cced2597
...
...
@@ -34,6 +34,9 @@
<ATTRIB
name=
"HasClientSupport"
type=
"Boolean"
dbcol=
"has_client_support"
mandatory=
"false"
defaultValue=
"Boolean.FALSE"
/>
<ATTRIB
name=
"StripeReference"
type=
"String"
dbcol=
"stripe_reference"
length=
"100"
/>
<ATTRIB
name=
"StripeSubscription"
type=
"String"
dbcol=
"stripe_subscription"
length=
"100"
/>
<ATTRIB
name=
"NameOnCard"
type=
"String"
dbcol=
"name_on_card"
length=
"100"
/>
<ATTRIB
name=
"CardPostCode"
type=
"String"
dbcol=
"card_post_code"
length=
"10"
/>
<ATTRIB
name=
"CardID"
type=
"String"
dbcol=
"card_id"
length=
"100"
/>
<SINGLEREFERENCE
name=
"AddedByUser"
type=
"CompanyUser"
dbcol=
"added_by_user_id"
mandatory=
"true"
/>
<SINGLEREFERENCE
name=
"PaymentPlan"
type=
"PaymentPlan"
dbcol=
"payment_plan_id"
mandatory=
"false"
/>
...
...
cmsWebApp/src/performa/orm/CompanyPersistenceMgr.java
View file @
cced2597
This diff is collapsed.
Click to expand it.
cmsWebApp/src/performa/utils/StripeUtils.java
View file @
cced2597
...
...
@@ -6,12 +6,16 @@ import com.stripe.exception.APIException;
import
com.stripe.exception.AuthenticationException
;
import
com.stripe.exception.CardException
;
import
com.stripe.exception.InvalidRequestException
;
import
com.stripe.model.Card
;
import
com.stripe.model.Customer
;
import
com.stripe.model.ExternalAccount
;
import
com.stripe.model.ExternalAccountCollection
;
import
com.stripe.model.Plan
;
import
com.stripe.model.Subscription
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
oneit.appservices.config.ConfigMgr
;
import
oneit.logging.LogLevel
;
...
...
@@ -61,7 +65,7 @@ public class StripeUtils
}
public
static
voi
d
updateCardDetails
(
Company
company
,
String
token
)
throws
FieldException
public
static
Car
d
updateCardDetails
(
Company
company
,
String
token
)
throws
FieldException
{
try
{
...
...
@@ -76,13 +80,34 @@ public class StripeUtils
updateParams
.
put
(
"source"
,
token
);
customer
.
update
(
updateParams
);
customer
=
customer
.
update
(
updateParams
);
return
(
Card
)
customer
.
getSources
().
retrieve
(
customer
.
getDefaultSource
());
}
catch
(
StorageException
|
AuthenticationException
|
InvalidRequestException
|
APIConnectionException
|
CardException
|
APIException
ex
)
{
LogMgr
.
log
(
LoggingArea
.
ALL
,
LogLevel
.
PROCESSING1
,
ex
,
"Error while updating a customer in stripe"
);
}
return
null
;
}
public
static
Card
retrieveCard
(
Company
company
)
throws
FieldException
{
try
{
Customer
customer
=
Customer
.
retrieve
(
company
.
getStripeReference
());
return
(
Card
)
customer
.
getSources
().
retrieve
(
customer
.
getDefaultSource
());
}
catch
(
StorageException
|
AuthenticationException
|
InvalidRequestException
|
APIConnectionException
|
CardException
|
APIException
ex
)
{
LogMgr
.
log
(
LoggingArea
.
ALL
,
LogLevel
.
PROCESSING1
,
ex
,
"Error while updating a customer in stripe"
);
}
return
null
;
}
...
...
cmsWebApp/webroot/css/common.css
View file @
cced2597
...
...
@@ -5454,6 +5454,15 @@ label, label .label-title span {
font-family
:
"Usual-Medium"
;
margin-top
:
20px
;
}
.edit-card-link
{
text-decoration
:
underline
;
font-size
:
13px
;
}
.deselected-link
{
color
:
#03a0e7
;
}
/*My Company Pages End*/
...
...
@@ -6090,4 +6099,4 @@ input{
.pay-subsc-btn-row
{
padding-bottom
:
40px
;
}
\ No newline at end of file
}
cmsWebApp/webroot/extensions/adminportal/CustomServlets_adminPortal.xml
View file @
cced2597
...
...
@@ -55,6 +55,7 @@
<FORM
name=
"*.processCulture"
factory=
"Participant"
class=
"performa.form.ProcessCultureFP"
/>
<FORM
name=
"*.savePayment"
factory=
"Participant"
class=
"performa.form.MakePaymentFP"
/>
<FORM
name=
"*.managePlans"
factory=
"Participant"
class=
"performa.form.ManagePlansFP"
/>
<FORM
name=
"*.updateCard"
factory=
"Participant"
class=
"performa.form.UpdateCardFP"
/>
</NODE>
<NODE
name=
"job_assessment_criteria_add_jsp"
factory=
"Participant"
>
...
...
cmsWebApp/webroot/extensions/adminportal/GeneralConfig_adminPortal.xml
View file @
cced2597
...
...
@@ -77,6 +77,8 @@
<RenderMode
name=
"Page"
preIncludeJSP=
"extensions/adminportal/my_company.jsp"
/>
<RenderMode
name=
"ManagePlan"
preIncludeJSP=
"extensions/adminportal/manage_plan.jsp"
/>
<RenderMode
name=
"Billing"
preIncludeJSP=
"extensions/adminportal/billing.jsp"
/>
<RenderMode
name=
"ReplaceCard"
preIncludeJSP=
"extensions/adminportal/replace_card.jsp"
/>
<RenderMode
name=
"EditCard"
preIncludeJSP=
"extensions/adminportal/edit_card.jsp"
/>
<RenderMode
name=
"Invoices"
preIncludeJSP=
"extensions/adminportal/invoices.jsp"
/>
</NODE>
</MAP>
...
...
cmsWebApp/webroot/extensions/adminportal/billing.jsp
View file @
cced2597
...
...
@@ -13,11 +13,12 @@
Debug.assertion(company != null , "Invalid company in admin portal my company");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Billing");
String replaceCardPage = WebUtils.getSamePageInRenderMode(request, "ReplaceCard");
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("
form
"), {'recalcOnError':true});
recalcFunction = setupRecalc ($("
makePayment
"), {'recalcOnError':true});
});
</script>
...
...
@@ -42,68 +43,30 @@
<label class="label-20">Billing</label><br/>
<span id="card-errors" style="color: #eb1c26; font-size: 15px;"></span>
</div>
<div>
<label class="label-14 bold">Add a payment method</label><br/>
<label class="label-14">Your card details will be saved for future billing</label>
</div>
<div class="grey-area">
<div class="form-group">
<label>Card Number</label>
<div id="card-number" class="form-control">
</div>
</div>
<div class="form-group">
<label>Name on Card</label>
<oneit:ormInput obj="<%= company %>" type="text" attributeName="CompanyName" cssClass="form-control" />
</div>
<div class="form-group row">
<div class="col-md-4">
<label>Expires</label>
<div id="card-expiry" class="form-control">
</div>
</div>
<div class="col-md-4">
<label>CCV</label>
<div id="card-cvc" class="form-control">
</div>
</div>
<div class="col-md-4">
<label>Postal Code</label>
<oneit:ormInput obj="<%= company %>" type="text" attributeName="PostCode" cssClass="form-control" />
</div>
</div>
<div class="form-group">
<oneit:button value="Save Card" name="saveCompany" cssClass="btn btn-primary btn-green large-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Company", company)
.toMap() %>" />
<%
if(company.getCardID() != null)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/existing_card.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
Company="<%= company %>" IsEdit="<%= false %>" IsReplace="<%= false %>"/>
<%
}
else
{
%>
<div>
<label class="label-14 bold">Add a payment method</label><br/>
<label class="label-14">Your card details will be saved for future billing</label>
</div>
</div>
</div>
</div>
</div>
</oneit:form>
<oneit:form name="editCompany" method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6">
<div class="form-group hide">
<input type="hidden" name="stripe-token-id" />
<oneit:dynInclude page="/extensions/adminportal/inc/card_details.jsp" data="<%= CollectionUtils.EMPTY_MAP%>" Company="<%= company %>"/>
<%
}
%>
</div>
</div>
</div>
<oneit:button value="Pay" name="savePayment" cssClass="hide" id="payNow"
requestAttribs='<%= CollectionUtils.mapEntry("nextPage", nextPage)
.toMap() %>'/>
</oneit:form>
<script src="https://js.stripe.com/v3/"></script>
<script>
var stripePubKey = '<%= MakePaymentFP.STRIPE_PUB_KEY %>';
</script>
<oneit:script>
<!-- MUST be included after initializing stripePubKey -->
<oneit:script src="/scripts/performaStripe.js"/>
</oneit:script>
</div>
</div>
</div>
...
...
cmsWebApp/webroot/extensions/adminportal/edit_card.jsp
0 → 100644
View file @
cced2597
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded>
<%
SecUser loggedInUser = SecUser.getTXUser(transaction);
CompanyUser companyUser = loggedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
Company company = companyUser.getCompany();
Debug.assertion(company != null , "Invalid company in admin portal my company");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Billing");
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("makePayment"), {'recalcOnError':true});
});
</script>
<div class="container-fluid">
<div class="row content">
<div class="main-content-area">
<h1 class="page-title">My Hiring Team</h1>
<div class="my-company-area">
<oneit:form name="makePayment" method="post" enctype="multipart/form-data">
<div style="padding-left: 15px; padding-right: 15px;">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
</div>
<oneit:dynInclude page="/extensions/adminportal/inc/my_company_tabs.jsp" TabNumber="3" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="company-content-area">
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="company-detail">
<div class="tabpage-title">
<label class="label-20">Billing</label><br/>
<span id="card-errors" style="color: #eb1c26; font-size: 15px;"></span>
</div>
<%
if(company.getCardID() != null)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/existing_card.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
Company="<%= company %>" IsEdit="<%= true %>" IsReplace="<%= false %>"/>
<%
}
%>
</div>
<div>
<div>
<label class="label-14 bold">Edit Card</label><br/>
<label class="label-14">Your card details will be saved for future billing</label>
</div>
<oneit:dynInclude page="/extensions/adminportal/inc/card_details.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
Company="<%= company %>" IsEdit="<%= true %>" IsReplace="<%= false %>"/>
</div>
</div>
</div>
</oneit:form>
<oneit:form name="editCompany" method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6">
<div class="form-group hide">
<input type="hidden" name="expiry-date" />
</div>
<div class="form-group hide">
<input type="hidden" name="holder-name" />
</div>
<div class="form-group hide">
<input type="hidden" name="address-zip" />
</div>
</div>
</div>
<oneit:button value="Pay" name="updateCard" cssClass="hide" id="payNow"
requestAttribs='<%= CollectionUtils.mapEntry("nextPage", nextPage)
.toMap() %>'/>
</oneit:form>
<script src="https://js.stripe.com/v2/"></script>
<script src="https://js.stripe.com/v3/"></script>
<script>
var stripePubKey = '<%= MakePaymentFP.STRIPE_PUB_KEY %>';
</script>
<oneit:script>
<!-- MUST be included after initializing stripePubKey -->
<oneit:script src="/scripts/updateCardStripe.js"/>
</oneit:script>
</div>
</div>
</div>
</div>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/adminportal/inc/card_details.jsp
0 → 100644
View file @
cced2597
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<%
Company company = (Company) getData(request, "Company");
boolean isReplace = (boolean) getData(request, "IsReplace");
boolean isEdit = (boolean) getData(request, "IsEdit");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Billing");
%>
<oneit:dynIncluded>
<script>
$(document).ready(function() {
$('#cardExpiry').attr("maxlength", 7);
$("#cardExpiry" ).keydown(function(e) {
var val = $(this).val();
if(e.keyCode == 8) {
temp_val = val.substring(0,1);
$(this).val(temp_val);
}
if(!isNaN(val)) {
if(val.length === 3 || val.length === 2)
{
temp_val = val + " / ";
$(this).val(temp_val);
}
else
{
if(val > 1 && val < 10 && val.length === 1) {
temp_val = "0" + val + " / ";
$(this).val(temp_val);
}
else if (val >= 1 && val < 10 && val.length === 2 && e.keyCode != 7) {
temp_val = val + " / ";
$(this).val(temp_val);
}
else if(val > 9 && val.length === 2 && e.keyCode !== 7) {
temp_val = val + " / ";
$(this).val(temp_val);
}
}
}
});
});
</script>
<div class="grey-area">
<div class="form-group">
<label>Card Number</label>
<%
if(isEdit)
{
%>
<input type="text" name="cardNumber" value="<%= company.getCardNumber() %>" class="form-control" readonly>
<%
}
else
{
%>
<div id="card-number" class="form-control" style="padding-top:15px;">
</div>
<%
}
%>
</div>
<div class="form-group">
<label>Name on Card</label>
<oneit:ormInput obj="<%= company %>" type="text" attributeName="NameOnCard" cssClass="form-control" id="NameOnCard" data-stripe="name"/>
</div>
<div class="form-group row">
<div class="col-md-4">
<label>Expires</label>
<%
if(isEdit)
{
%>
<input type="text" id="cardExpiry" class="form-control" placeholder="MM / YY" value="<%= company.getExpiry() %>">
<%
}
else
{
%>
<div id="card-expiry" class="form-control" style="padding-top:15px;">
</div>
<%
}
%>
</div>
<div class="col-md-4">
<label>CCV</label>
<%
if(isEdit)
{
%>
<input type="text" name="ccv" value="" class="form-control" readonly>
<%
}
else
{
%>
<div id="card-cvc" class="form-control" style="padding-top:15px;">
</div>
<%
}
%>
</div>
<div class="col-md-4">
<label>Postal Code</label>
<oneit:ormInput obj="<%= company %>" type="text" attributeName="CardPostCode" cssClass="form-control" id="PostCode" />
</div>
</div>
<div class="form-group">
<oneit:button value="Save Card" name="updateCard" cssClass="btn btn-primary btn-green large-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Company", company)
.toMap() %>" />
</div>
<input type="hidden" name="expiration-date" />
</div>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/adminportal/inc/existing_card.jsp
0 → 100644
View file @
cced2597
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<%
Company company = (Company) getData(request, "Company");
boolean isReplace = (boolean) getData(request, "IsReplace");
boolean isEdit = (boolean) getData(request, "IsEdit");
String replaceCardPage = WebUtils.getSamePageInRenderMode(request, "ReplaceCard");
String editCardPage = WebUtils.getSamePageInRenderMode(request, "EditCard");
%>
<oneit:dynIncluded>
<div class="form-group row">
<div class="col-md-3">
<label>Card on file</label>
</div>
<div class="col-md-5">
<label><%= company.getCardNumber() %></label>
</div>
<div class="col-md-2">
<oneit:button value=" " name="gotoPage" skin="link" cssClass="<%= "edit-card-link " + (isEdit ? "" : "deselected-link")%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", editCardPage)
.toMap() %>">
Edit Card
</oneit:button>
</div>
<div class="col-md-2">
<oneit:button value=" " name="gotoPage" skin="link" cssClass="<%= "edit-card-link " + (isReplace ? "" : "deselected-link")%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", replaceCardPage)
.toMap() %>">
Replace Card
</oneit:button>
</div>
</div>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/adminportal/replace_card.jsp
0 → 100644
View file @
cced2597
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded>
<%
SecUser loggedInUser = SecUser.getTXUser(transaction);
CompanyUser companyUser = loggedInUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
Company company = companyUser.getCompany();
Debug.assertion(company != null , "Invalid company in admin portal my company");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Billing");
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("makePayment"), {'recalcOnError':true});
});
</script>
<div class="container-fluid">
<div class="row content">
<div class="main-content-area">
<h1 class="page-title">My Hiring Team</h1>
<div class="my-company-area">
<oneit:form name="makePayment" method="post" enctype="multipart/form-data">
<div style="padding-left: 15px; padding-right: 15px;">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
</div>
<oneit:dynInclude page="/extensions/adminportal/inc/my_company_tabs.jsp" TabNumber="3" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="company-content-area">
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="company-detail">
<div class="tabpage-title">
<label class="label-20">Billing</label><br/>
<span id="card-errors" style="color: #eb1c26; font-size: 15px;"></span>
</div>
<%
if(company.getCardID() != null)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/existing_card.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
Company="<%= company %>" IsEdit="<%= false %>" IsReplace="<%= true %>"/>
<%
}
%>
</div>
<div>
<div>
<label class="label-14 bold">Replace Card</label><br/>
<label class="label-14">Your card details will be saved for future billing</label>
</div>
<oneit:dynInclude page="/extensions/adminportal/inc/card_details.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
Company="<%= company %>" IsEdit="<%= false %>" IsReplace="<%= true %>"/>
</div>
</div>
</div>
</oneit:form>
<oneit:form name="editCompany" method="post" enctype="multipart/form-data">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-6">
<div class="form-group hide">
<input type="hidden" name="stripe-token-id" />
</div>
</div>
</div>
<oneit:button value="Pay" name="savePayment" cssClass="hide" id="payNow"
requestAttribs='<%= CollectionUtils.mapEntry("nextPage", nextPage)
.toMap() %>'/>
</oneit:form>
<script src="https://js.stripe.com/v3/"></script>
<script>
var stripePubKey = '<%= MakePaymentFP.STRIPE_PUB_KEY %>';
</script>
<oneit:script>
<!-- MUST be included after initializing stripePubKey -->
<oneit:script src="/scripts/performaStripe.js"/>
</oneit:script>
</div>
</div>
</div>
</div>
</oneit:dynIncluded>
cmsWebApp/webroot/extensions/performa/upgrades/20180220_Alter_Company.xml
0 → 100644
View file @
cced2597
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS
name=
""
xmlns:oneit=
"http://www.1iT.com.au"
>
<NODE
name=
"Script"
factory=
"Vector"
>
<NODE
name=
"DDL"
factory=
"Participant"
class=
"oneit.sql.transfer.RedefineTableOperation"
>
<tableName
factory=
"String"
>
tl_company
</tableName>
<column
name=
"name_on_card"
type=
"String"
nullable=
"true"
length=
"100"
/>
<column
name=
"card_post_code"
type=
"String"
nullable=
"true"
length=
"10"
/>
<column
name=
"card_id"
type=
"String"
nullable=
"true"
length=
"100"
/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
cmsWebApp/webroot/scripts/performaStripe.js
View file @
cced2597
...
...
@@ -12,34 +12,26 @@ var elements = stripe.elements();
var
style
=
{
base
:
{
// Add your base input styles here. For example:
fontSize
:
'16px'
,
color
:
"#32325d"
,
fontSize
:
'14px'
,
fontFamily
:
'"Usual-Light"'
,
color
:
"#555"
,
'::placeholder'
:
{
color
:
'#DBDBDF'
,
fontSize
:
'18px'
,
},
// padding-top: "7px !important",
}
};
var
cardNumber
=
elements
.
create
(
'cardNumber'
,
{
style
:
style
});
var
cardNumber
=
elements
.
create
(
'cardNumber'
,
{
style
:
style
,
placeholder
:
''
});
cardNumber
.
mount
(
'#card-number'
);
var
cardExpiry
=
elements
.
create
(
'cardExpiry'
,
{
style
:
style
});
cardExpiry
.
mount
(
'#card-expiry'
);
var
cardCvc
=
elements
.
create
(
'cardCvc'
,
{
style
:
style
});
var
cardCvc
=
elements
.
create
(
'cardCvc'
,
{
style
:
style
,
placeholder
:
''
});
cardCvc
.
mount
(
'#card-cvc'
);
// Create an instance of the card Element
//var card = elements.create('card', {style: style});
// Add an instance of the card Element into the `card-element` <div>
//card.mount('#card-element');
//card.addEventListener('change', function(event) {
// var displayError = document.getElementById('card-errors');
// if (event.error) {
// displayError.textContent = event.error.message;
// } else {
// displayError.textContent = '';
// }
//});
cardNumber
.
addEventListener
(
'change'
,
function
(
event
)
{
var
displayError
=
document
.
getElementById
(
'card-errors'
);
if
(
event
.
error
)
{
...
...
@@ -71,7 +63,10 @@ var form = document.getElementById('makePayment');
form
.
addEventListener
(
'submit'
,
function
(
event
)
{
event
.
preventDefault
();
stripe
.
createToken
(
cardNumber
,
{
name
:
"Demo Card Name"
}).
then
(
function
(
result
)
{
var
nameOnCard
=
document
.
getElementById
(
'NameOnCard'
).
value
;
var
postalCode
=
document
.
getElementById
(
'PostCode'
).
value
;
stripe
.
createToken
(
cardNumber
,
{
name
:
nameOnCard
,
address_zip
:
postalCode
}).
then
(
function
(
result
)
{
if
(
result
.
error
)
{
// Inform the customer that there was an error
var
errorElement
=
document
.
getElementById
(
'card-errors'
);
...
...
@@ -80,24 +75,6 @@ form.addEventListener('submit', function(event) {
// Send the token to your server
$
(
'input[name=stripe-token-id]'
).
val
(
result
.
token
.
id
);
$
(
'#payNow'
).
click
();
// stripeTokenHandler(result.token);
}
});
});
function
stripeTokenHandler
(
token
)
{
// Insert the token ID into the form so it gets submitted to the server
// var form = document.getElementById('payment-form');
// var hiddenInput = document.createElement('input');
// hiddenInput.setAttribute('type', 'hidden');
// hiddenInput.setAttribute('name', 'stripeToken');
// hiddenInput.setAttribute('value', token.id);
// form.appendChild(hiddenInput);
alert
(
token
.
id
);
$
(
'input[name=stripe-token-id]'
).
val
(
token
.
id
);
// $('div.stripedetails').removeClass('stripedetails');
alert
(
$
(
'input[name=stripe-token-id]'
).
val
());
$
(
'#payNow'
).
click
();
// Submit the form
// form.submit();
}
\ No newline at end of file
});
\ No newline at end of file
cmsWebApp/webroot/scripts/updateCardStripe.js
0 → 100644
View file @
cced2597
/**
* Reference : https://stripe.com/docs/stripe-js#elements
*/
// Create a Stripe client
var
stripe
=
Stripe
(
stripePubKey
);
var
form
=
document
.
getElementById
(
'makePayment'
);
form
.
addEventListener
(
'submit'
,
function
(
event
)
{
event
.
preventDefault
();
var
cardExpiry
=
document
.
getElementById
(
'cardExpiry'
).
value
;
if
(
cardExpiry
.
length
!==
0
&&
!
Stripe
.
card
.
validateExpiry
(
cardExpiry
))
{
var
displayError
=
document
.
getElementById
(
'card-errors'
);
displayError
.
textContent
=
"Please enter a valid expiry"
;
}
else
{
$
(
'input[name=expiry-date]'
).
val
(
document
.
getElementById
(
'cardExpiry'
).
value
);
$
(
'input[name=holder-name]'
).
val
(
document
.
getElementById
(
'NameOnCard'
).
value
);
$
(
'input[name=address-zip]'
).
val
(
document
.
getElementById
(
'PostCode'
).
value
);
$
(
'#payNow'
).
click
();
}
});
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment