gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taldir] branch master updated: refactor merchant into taler-go


From: gnunet
Subject: [taler-taldir] branch master updated: refactor merchant into taler-go
Date: Tue, 19 Jul 2022 14:09:59 +0200

This is an automated email from the git hooks/post-receive script.

martin-schanzenbach pushed a commit to branch master
in repository taldir.

The following commit(s) were added to refs/heads/master by this push:
     new b31794a  refactor merchant into taler-go
b31794a is described below

commit b31794a373023c3fafe985671e5268c82d215d46
Author: Martin Schanzenbach <schanzen@gnunet.org>
AuthorDate: Tue Jul 19 14:09:54 2022 +0200

    refactor merchant into taler-go
---
 go.mod                |   2 +-
 pkg/rest/taldir.go    |   6 +-
 pkg/taler/merchant.go | 156 --------------------------------------------------
 3 files changed, 4 insertions(+), 160 deletions(-)

diff --git a/go.mod b/go.mod
index e0770ae..e04561b 100644
--- a/go.mod
+++ b/go.mod
@@ -16,5 +16,5 @@ require (
        gopkg.in/ini.v1 v1.66.4
        gorm.io/driver/postgres v1.3.4
        gorm.io/gorm v1.23.4
-       taler.net/taler-go.git v0.0.0-20220717105356-903c2fdca4c5
+       taler.net/taler-go.git v0.0.0-20220719120550-b4025837dad5
 )
diff --git a/pkg/rest/taldir.go b/pkg/rest/taldir.go
index bfd577d..c14cdcb 100644
--- a/pkg/rest/taldir.go
+++ b/pkg/rest/taldir.go
@@ -48,7 +48,7 @@ import (
        "gorm.io/gorm/logger"
        "taler.net/taldir/internal/gana"
        "taler.net/taldir/internal/util"
-       "taler.net/taldir/pkg/taler"
+       "taler.net/taler-go.git/pkg/merchant"
 )
 
 // Taldir is the primary object of the Taldir service
@@ -88,7 +88,7 @@ type Taldir struct {
        ChallengeBytes int
 
        // Merchant object
-       Merchant taler.Merchant
+       Merchant merchant.Merchant
 
        // Monthly fee amount
        MonthlyFee string
@@ -776,6 +776,6 @@ func (t *Taldir) Initialize(cfgfile string) {
        }
        merchURL := 
t.Cfg.Section("taldir").Key("merchant_baseurl_private").MustString("http://merchant.taldir/instances/myInstance";)
        merchToken := 
t.Cfg.Section("taldir").Key("merchant_token").MustString("secretAccessToken")
-       t.Merchant = taler.NewMerchant(merchURL, merchToken)
+       t.Merchant = merchant.NewMerchant(merchURL, merchToken)
        t.setupHandlers()
 }
diff --git a/pkg/taler/merchant.go b/pkg/taler/merchant.go
deleted file mode 100644
index 862f00c..0000000
--- a/pkg/taler/merchant.go
+++ /dev/null
@@ -1,156 +0,0 @@
-package taler
-
-import (
-       "bytes"
-       "encoding/json"
-       "errors"
-       "fmt"
-       "io/ioutil"
-       "net/http"
-       talerutil "taler.net/taler-go.git/pkg/util"
-)
-
-type PostOrderRequest struct {
-       // The order must at least contain the minimal
-       // order detail, but can override all.
-       order MinimalOrderDetail
-
-       // If set, the backend will then set the refund deadline to the current
-       // time plus the specified delay.  If it's not set, refunds will not be
-       // possible.
-       RefundDelay int64 `json:"refund_delay,omitempty"`
-
-       // Specifies the payment target preferred by the client. Can be used
-       // to select among the various (active) wire methods supported by the 
instance.
-       PaymentTarget string `json:"payment_target,omitempty"`
-
-       // Specifies that some products are to be included in the
-       // order from the inventory.  For these inventory management
-       // is performed (so the products must be in stock) and
-       // details are completed from the product data of the backend.
-       // FIXME: Not sure we actually need this for now
-       //InventoryProducts []MinimalInventoryProduct 
`json:"inventory_products,omitempty"`
-
-       // Specifies a lock identifier that was used to
-       // lock a product in the inventory.  Only useful if
-       // inventory_products is set.  Used in case a frontend
-       // reserved quantities of the individual products while
-       // the shopping cart was being built.  Multiple UUIDs can
-       // be used in case different UUIDs were used for different
-       // products (i.e. in case the user started with multiple
-       // shopping sessions that were combined during checkout).
-       LockUuids []string `json:"lock_uuids"`
-
-       // Should a token for claiming the order be generated?
-       // False can make sense if the ORDER_ID is sufficiently
-       // high entropy to prevent adversarial claims (like it is
-       // if the backend auto-generates one). Default is 'true'.
-       CreateToken bool `json:"create_token,omitempty"`
-}
-
-type MinimalOrderDetail struct {
-       // Amount to be paid by the customer.
-       Amount string
-
-       // Short summary of the order.
-       Summary string
-}
-
-// NOTE: Part of the above but optional
-type FulfillmentMetadata struct {
-       // See documentation of fulfillment_url in ContractTerms.
-       // Either fulfillment_url or fulfillment_message must be specified.
-       FulfillmentUrl string `json:"fulfillment_url,omitempty"`
-
-       // See documentation of fulfillment_message in ContractTerms.
-       // Either fulfillment_url or fulfillment_message must be specified.
-       FulfillmentMessage string `json:"fulfillment_message,omitempty"`
-}
-
-type PostOrderResponse struct {
-       // Order ID of the response that was just created.
-       OrderId string `json:"order_id"`
-}
-
-type PostOrderResponseToken struct {
-       // Token that authorizes the wallet to claim the order.
-       // Provided only if "create_token" was set to 'true'
-       // in the request.
-       Token string
-}
-
-type CheckPaymentStatusResponse struct {
-       // Status of the order
-       OrderStatus string `json:"order_status"`
-}
-
-type CheckPaymentPaytoResponse struct {
-       // Status of the order
-       TalerPayUri string `json:"taler_pay_uri"`
-}
-
-type Merchant struct {
-
-       // The host of this merchant
-       BaseUrlPrivate string
-
-       // The access token to use for the private API
-       AccessToken string
-}
-
-func NewMerchant(merchBaseUrlPrivate string, merchAccessToken string) Merchant 
{
-       return Merchant{
-               BaseUrlPrivate: merchBaseUrlPrivate,
-               AccessToken:    merchAccessToken,
-       }
-}
-
-func (m *Merchant) IsOrderPaid(orderId string) (string, error) {
-       var orderPaidResponse CheckPaymentStatusResponse
-       var paytoResponse CheckPaymentPaytoResponse
-       resp, err := http.Get(m.BaseUrlPrivate + "/private/orders/" + orderId)
-       if nil != err {
-               return "", err
-       }
-       defer resp.Body.Close()
-       if http.StatusOK != resp.StatusCode {
-               message := fmt.Sprintf("Expected response code %d. Got %d", 
http.StatusOK, resp.StatusCode)
-               return "", errors.New(message)
-       }
-       respData, err := ioutil.ReadAll(resp.Body)
-       if err != nil {
-               return "", err
-       }
-       err = 
json.NewDecoder(bytes.NewReader(respData)).Decode(&orderPaidResponse)
-       if err != nil {
-               return "", err
-       }
-       if orderPaidResponse.OrderStatus != "paid" {
-               err = 
json.NewDecoder(bytes.NewReader(respData)).Decode(&paytoResponse)
-               return paytoResponse.TalerPayUri, err
-       }
-       return "", nil
-}
-
-func (m *Merchant) AddNewOrder(cost talerutil.Amount) (string, error) {
-       var newOrder PostOrderRequest
-       var orderDetail MinimalOrderDetail
-       var orderResponse PostOrderResponse
-       orderDetail.Amount = cost.String()
-       // FIXME get from cfg
-       orderDetail.Summary = "This is an order to a TalDir registration"
-       newOrder.order = orderDetail
-       reqString, _ := json.Marshal(newOrder)
-       resp, err := http.Post(m.BaseUrlPrivate+"/private/orders", 
"application/json", bytes.NewBuffer(reqString))
-
-       if nil != err {
-               return "", err
-       }
-       defer resp.Body.Close()
-       if http.StatusOK != resp.StatusCode {
-               message := fmt.Sprintf("Expected response code %d. Got %d", 
http.StatusOK, resp.StatusCode)
-               return "", errors.New(message)
-       }
-       err = json.NewDecoder(resp.Body).Decode(&orderResponse)
-       return orderResponse.OrderId, err
-}

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]