| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| "log" | |||||
| "net/http" | "net/http" | ||||
| "text/template" | "text/template" | ||||
| ) | ) | ||||
| func StartPay(w http.ResponseWriter, r *http.Request) { | |||||
| if r.Method != "POST" { | |||||
| w.WriteHeader(http.StatusMethodNotAllowed) | |||||
| fmt.Fprintf(w, "invalid method") | |||||
| return | |||||
| } | |||||
| r.ParseForm() | |||||
| row, err := db.addRequest(r) | |||||
| if err != nil { | |||||
| w.WriteHeader(http.StatusInternalServerError) | |||||
| w.Write([]byte("Cannot initiate database transaction")) | |||||
| return | |||||
| } | |||||
| if !isLeanworkFormValid(r.Form) { | |||||
| w.WriteHeader(http.StatusMethodNotAllowed) | |||||
| fmt.Fprintf(w, "invalid request") | |||||
| return | |||||
| } | |||||
| //debugStartLeanworkCallBack(row) | |||||
| askForPaymentSelection(w, row) | |||||
| return | |||||
| // m := RpnOut{} | |||||
| // resp, err := m.SendReq(r.Form) | |||||
| // if err != nil { | |||||
| // fmt.Fprintf(w, "invalid response from RPN") | |||||
| // } | |||||
| // w.Header().Set("Content-Type", resp.Header.Get("Content-Type")) | |||||
| // w.Header().Set("Content-Length", resp.Header.Get("Content-Length")) | |||||
| // io.Copy(w, resp.Body) | |||||
| //fmt.Fprintf(w, "my md5=%s", sign) | |||||
| } | |||||
| func askForPaymentSelection(w http.ResponseWriter, row LeanworkIn) { | |||||
| t := template.Must(template.ParseFiles("PG/StartPay.html")) | |||||
| //tmpl.ExecuteTemplate(w, "StartPay", row) | |||||
| t.Execute(w, row) | |||||
| } | |||||
| func askForPaymentInfo(w http.ResponseWriter, row LeanworkIn, rpn_type string) { | func askForPaymentInfo(w http.ResponseWriter, row LeanworkIn, rpn_type string) { | ||||
| var data struct { | var data struct { | ||||
| Id int64 | Id int64 | ||||
| data.Sign = row.Sign | data.Sign = row.Sign | ||||
| data.RpnType = rpn_type | data.RpnType = rpn_type | ||||
| //tmpl.ExecuteTemplate(w, "rpnAskNameAndCard", data) | //tmpl.ExecuteTemplate(w, "rpnAskNameAndCard", data) | ||||
| t := template.Must(template.ParseFiles("PG/rpnAskNameAndCard.html")) | |||||
| fname := "PG/rpnAskNameAndCardP2P.html" | |||||
| if rpn_type == "rpnfat" { | |||||
| fname = "PG/rpnAskNameAndCardFAT.html" | |||||
| } | |||||
| t := template.Must(template.ParseFiles(fname)) | |||||
| t.Execute(w, data) | t.Execute(w, data) | ||||
| } | } | ||||
| //show redirect, and start payment | //show redirect, and start payment | ||||
| askForPaymentInfo(w, row, rpn_type) | askForPaymentInfo(w, row, rpn_type) | ||||
| } | } | ||||
| //leanwork in for alipay | |||||
| func leanworkInFAT(w http.ResponseWriter, r *http.Request) { | |||||
| if r.Method != "POST" { | |||||
| errPage(w, http.StatusMethodNotAllowed, "invalid method") | |||||
| return | |||||
| } | |||||
| r.ParseForm() | |||||
| row, err := db.addRequest(r, Config.LeanWork.MD5FAT) | |||||
| if err != nil { | |||||
| errPage(w, http.StatusInternalServerError, "Cannot initiate database transaction for incoming request") | |||||
| return | |||||
| } | |||||
| if !isLeanworkFormValid(r.Form, Config.LeanWork.MD5FAT) { | |||||
| // w.WriteHeader(http.StatusMethodNotAllowed) | |||||
| // fmt.Fprintf(w, "invalid request") | |||||
| errPage(w, http.StatusBadRequest, "validation of FAT input parameters failed") | |||||
| return | |||||
| } | |||||
| //show redirect, and start payment | |||||
| askForPaymentInfo(w, row, "rpnfat") | |||||
| return | |||||
| } | |||||
| func leanworkInP2P(w http.ResponseWriter, r *http.Request) { | |||||
| if r.Method != "POST" { | |||||
| errPage(w, http.StatusMethodNotAllowed, "invalid method") | |||||
| return | |||||
| } | |||||
| r.ParseForm() | |||||
| row, err := db.addRequest(r, Config.LeanWork.MD5P2P) | |||||
| if err != nil { | |||||
| errPage(w, http.StatusInternalServerError, "Cannot initiate database transaction for incoming request") | |||||
| log.Printf("ERROR: cannot initiate LeanworkIn for adding database: %+v \n", r.Form) | |||||
| return | |||||
| } | |||||
| if !isLeanworkFormValid(r.Form, Config.LeanWork.MD5P2P) { | |||||
| // w.WriteHeader(http.StatusMethodNotAllowed) | |||||
| // fmt.Fprintf(w, "invalid request") | |||||
| errPage(w, http.StatusBadRequest, "validation of P2P input parameters failed") | |||||
| return | |||||
| } | |||||
| //show redirect, and start payment | |||||
| askForPaymentInfo(w, row, "rpnp2p") | |||||
| return | |||||
| } |