2022-03-13 18:05:16 +08:00
// Copyright 2022 The Casdoor Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import React from "react" ;
2022-07-10 15:45:55 +08:00
import { Button , Result , Spin } from "antd" ;
2022-03-13 18:05:16 +08:00
import * as PaymentBackend from "./backend/PaymentBackend" ;
import * as Setting from "./Setting" ;
import i18next from "i18next" ;
class PaymentResultPage extends React . Component {
constructor ( props ) {
super ( props ) ;
this . state = {
classes : props ,
paymentName : props . match . params . paymentName ,
payment : null ,
2023-06-13 02:00:52 +08:00
timeout : null ,
2022-03-13 18:05:16 +08:00
} ;
}
UNSAFE _componentWillMount ( ) {
this . getPayment ( ) ;
}
2023-06-13 02:00:52 +08:00
componentWillUnmount ( ) {
if ( this . state . timeout !== null ) {
clearTimeout ( this . state . timeout ) ;
}
}
2022-03-13 18:05:16 +08:00
getPayment ( ) {
2023-06-12 00:31:49 +08:00
PaymentBackend . getPayment ( "admin" , this . state . paymentName )
2023-07-24 14:52:30 +08:00
. then ( ( res ) => {
2022-03-13 18:05:16 +08:00
this . setState ( {
2023-07-24 14:52:30 +08:00
payment : res . data ,
2022-03-13 18:05:16 +08:00
} ) ;
2023-07-24 14:52:30 +08:00
if ( res . data . state === "Created" ) {
2023-06-13 02:00:52 +08:00
this . setState ( { timeout : setTimeout ( ( ) => this . getPayment ( ) , 1000 ) } ) ;
2022-03-13 18:05:16 +08:00
}
} ) ;
}
render ( ) {
const payment = this . state . payment ;
if ( payment === null ) {
return null ;
}
if ( payment . state === "Paid" ) {
return (
< div >
{
Setting . renderHelmet ( payment )
}
< Result
status = "success"
2022-03-14 02:07:55 +08:00
title = { ` ${ i18next . t ( "payment:You have successfully completed the payment" ) } : ${ payment . productDisplayName } ` }
2022-03-13 18:05:16 +08:00
subTitle = { i18next . t ( "payment:Please click the below button to return to the original website" ) }
extra = { [
< Button type = "primary" key = "returnUrl" onClick = { ( ) => {
Setting . goToLink ( payment . returnUrl ) ;
} } >
{ i18next . t ( "payment:Return to Website" ) }
2022-08-06 23:54:56 +08:00
< / B u t t o n > ,
2022-03-13 18:05:16 +08:00
] }
/ >
< / d i v >
2022-07-10 15:45:55 +08:00
) ;
2022-03-13 18:05:16 +08:00
} else if ( payment . state === "Created" ) {
return (
< div >
{
Setting . renderHelmet ( payment )
}
< Result
status = "info"
2022-03-14 02:07:55 +08:00
title = { ` ${ i18next . t ( "payment:The payment is still under processing" ) } : ${ payment . productDisplayName } , ${ i18next . t ( "payment:the current state is" ) } : ${ payment . state } , ${ i18next . t ( "payment:please wait for a few seconds..." ) } ` }
2022-03-13 18:05:16 +08:00
subTitle = { i18next . t ( "payment:Please click the below button to return to the original website" ) }
extra = { [
2022-08-09 12:19:56 +08:00
< Spin key = "returnUrl" size = "large" tip = { i18next . t ( "payment:Processing..." ) } / > ,
2022-03-13 18:05:16 +08:00
] }
/ >
< / d i v >
2022-07-10 15:45:55 +08:00
) ;
2022-03-13 18:05:16 +08:00
} else {
return (
< div >
{
Setting . renderHelmet ( payment )
}
< Result
status = "error"
2022-03-14 02:07:55 +08:00
title = { ` ${ i18next . t ( "payment:The payment has failed" ) } : ${ payment . productDisplayName } , ${ i18next . t ( "payment:the current state is" ) } : ${ payment . state } ` }
2022-03-13 18:05:16 +08:00
subTitle = { i18next . t ( "payment:Please click the below button to return to the original website" ) }
extra = { [
< Button type = "primary" key = "returnUrl" onClick = { ( ) => {
Setting . goToLink ( payment . returnUrl ) ;
} } >
{ i18next . t ( "payment:Return to Website" ) }
2022-08-06 23:54:56 +08:00
< / B u t t o n > ,
2022-03-13 18:05:16 +08:00
] }
/ >
< / d i v >
2022-07-10 15:45:55 +08:00
) ;
2022-03-13 18:05:16 +08:00
}
}
}
export default PaymentResultPage ;