Bladeren bron

let user choose what methods need to make payment

tags/v0.5
patrick 5 jaren geleden
bovenliggende
commit
adbd1f2413
4 gewijzigde bestanden met toevoegingen van 88 en 28 verwijderingen
  1. +44
    -16
      db.go
  2. +12
    -0
      form/StartPay.tmpl
  3. +15
    -0
      leanwork_request.go
  4. +17
    -12
      purchase.go

+ 44
- 16
db.go Bestand weergeven

@@ -5,6 +5,7 @@ import (
"fmt"
"log"
"net/http"
"strconv"
)

type TransactionDB struct {
@@ -31,30 +32,57 @@ func (m *TransactionDB) close() {
defer m.h.Close()
}

func (m *TransactionDB) addRequest(r *http.Request) error {
if err := m.conn(Config); err != nil {
return err
func (m *TransactionDB) addRequest(r *http.Request) (row LeanworkRequest, err error) {
if err = m.conn(Config); err != nil {
return row, err
}
defer m.close()

r.ParseForm()
//assuming form has been parsed
pickupUrl := r.Form["pickupUrl"][0]
receiveUrl := r.Form["receiveUrl"][0]
signType := r.Form["signType"][0]
orderNo := r.Form["orderNo"][0]
orderAmount := r.Form["orderAmount"][0]
orderCurrency := r.Form["orderCurrency"][0]
customerId := r.Form["customerId"][0]
sign := r.Form["sign"][0]
row = LeanworkRequest{}
pickupUrl, _ := retrieveFormValue(r.Form, "pickupUrl")
receiveUrl, _ := retrieveFormValue(r.Form, "receiveUrl")
signType, _ := retrieveFormValue(r.Form, "signType")
orderNo, _ := retrieveFormValue(r.Form, "orderNo")
orderAmount, _ := retrieveFormValue(r.Form, "orderAmount")
orderCurrency, _ := retrieveFormValue(r.Form, "orderCurrency")
customerId, _ := retrieveFormValue(r.Form, "customerId")
sign, _ := retrieveFormValue(r.Form, "sign")
valid := isLeanworkFormValid(r.Form)
ip4 := getClientIPLong(r)

insForm, err := m.h.Prepare("INSERT INTO request(pickupUrl, receiveUrl, signType, orderNo, orderAmount, orderCurrency, customerId, sign, valid, ip4) VALUES(?,?,?,?,?,?,?,?,?,?)")
if err == nil {
insForm.Exec(pickupUrl, receiveUrl, signType, orderNo, orderAmount, orderCurrency, customerId, sign, valid, ip4)
log.Println("INSERT: customerId: " + customerId + " | orderAmount: " + orderCurrency + " " + orderAmount)
if err != nil {
log.Printf("Failed to prepare SQL statment for insert")
return
}
m.close()
return err

res, err := insForm.Exec(pickupUrl, receiveUrl, signType, orderNo, orderAmount, orderCurrency, customerId, sign, valid, ip4)
if err != nil {
log.Printf("Error inserting leanwork request with orderNo =%s \n", orderNo)
return
}

id, err := res.LastInsertId()
if err != nil {
return
}

row.Id = id
row.PickupUrl = pickupUrl
row.ReceiveUrl = receiveUrl
row.SignType = signType
row.OrderNo = orderNo
row.OrderAmount = orderAmount
row.OrderCurrency = orderCurrency
row.CustomerId = customerId
row.Sign = sign
row.Valid = valid
row.Ip4 = ip4
log.Println("INSERT[" + strconv.FormatInt(row.Id, 10) + "]: customerId: " + customerId + " | orderAmount: " + orderCurrency + " " + orderAmount)

return row, err
}

func (m *TransactionDB) addRpnOut(r RpnReq) error {

+ 12
- 0
form/StartPay.tmpl Bestand weergeven

@@ -0,0 +1,12 @@
{{ define "StartPay" }}
<html><body>
select a form of payment
<form id="payment" name="payment" action="/choosePayment " method="POST">
<input id="rpnp2p" type="radio" name="rpn" value="rpnp2p" checked /> <label for="rpnp2p"> RPN P2P </label>
<input id="rpnfat" type="radio" name="rpn" value="rpnfat" /> <label for="rpnfat"> RPN FAT </label>
<input type="hidden" name="id" value="{{ .Id}}" />
<input type="hidden" name="sign" value="{{ .Sign}}" />
<input type="submit" value="submit" />
</form>
</body></html>
{{ end }}

+ 15
- 0
leanwork_request.go Bestand weergeven

@@ -0,0 +1,15 @@
package main

type LeanworkRequest struct {
Id int64
PickupUrl string
ReceiveUrl string
SignType string
OrderNo string
OrderAmount string
OrderCurrency string
CustomerId string
Sign string
Valid bool
Ip4 uint32
}

+ 17
- 12
purchase.go Bestand weergeven

@@ -9,24 +9,25 @@ import (

func StartPay(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
fmt.Fprintf(w, "invalid request")
w.WriteHeader(http.StatusMethodNotAllowed)
fmt.Fprintf(w, "invalid method")
return
}
r.ParseForm()
db.addRequest(r)
if !isLeanworkFormValid(r.Form) {
fmt.Fprintf(w, "invalid request")

row, err := db.addRequest(r)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte("Cannot initiate database transaction"))
return
}

for key, value := range r.Form {
fmt.Printf("%s= %s\n", key, value)
//fmt.Fprintf(w, "%s= %s\n", key, value)
if !isLeanworkFormValid(r.Form) {
w.WriteHeader(http.StatusMethodNotAllowed)
fmt.Fprintf(w, "invalid request")
return
}
sign := md5LeanworkForm(r.Form)
fmt.Printf("my md5=%s, valid = %t", sign, isLeanworkFormValid(r.Form))

askForPaymentInfo(w, r)
askForPaymentSelection(w, row)
return

// m := RpnReq{}
@@ -43,8 +44,12 @@ func StartPay(w http.ResponseWriter, r *http.Request) {

}

func askForPaymentInfo(w http.ResponseWriter, r *http.Request) {
func askForPaymentSelection(w http.ResponseWriter, row LeanworkRequest) {

tmpl.ExecuteTemplate(w, "StartPay", row)
}

func askForPaymentInfo(w http.ResponseWriter, r *http.Request) {
t := template.Must(template.New("askForPaymentInfo").ParseGlob("form/*.tmpl"))
t.ExecuteTemplate(os.Stdout, "rpnAskNameAndCard", r.Form)
t.ExecuteTemplate(w, "rpnAskNameAndCard", r.Form)

Laden…
Annuleren
Opslaan