Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var TransferFee = delay.Func("transfer-fee", func(ctx context.Context, stripeToken, namespace, id string) { var fe *fee.Fee var tr *transfer.Transfer ctx = nscontext.WithNamespace(ctx, namespace) err := datastore.RunInTransaction(ctx, func(db *datastore.Datastore) error { fe = fee.New(db) if err := fe.GetById(id); err != nil { log.Warn("Failed to get fee with id '%s': %v", id, err, ctx) return err } if fe.Status == fee.Disputed { return fmt.Errorf("fee '%s' is being disputed", fe.Id()) } if fe.Status == fee.Transferred { return fmt.Errorf("fee '%s' is already transferred", fe.Id()) } tr := transferFromFee(db, fe) fe.Status = fee.Transferred fe.TransferId = tr.Id() models := []interface{}{tr, fe} return multi.Update(models) }, nil) if err != nil { log.Warn("Failed to create transfer for fee '%s', transfer '%s': %v", fe.Id(), tr.Id(), err, ctx) return } sc := stripe.New(ctx, stripeToken) res, err := sc.Payout(tr) tr.Account.TransferId = res.ID if err != nil { log.Warn("Failed to create Stripe transfer for fee '%s', transfer '%s': %v", fe.Id(), tr.Id(), err, ctx) tr.Status = transfer.Error if res.FailureMessage == "" { tr.FailureCode = string(res.FailureCode) tr.FailureMessage = res.FailureMessage } else { tr.FailureCode = "stripe-error" tr.FailureMessage = err.Error() } } if err := tr.Update(); err != nil { log.Error("Failed to update status of failed transfer '%s': %v\n%v", tr.Id(), err, tr, ctx) } })
Create transfer for single fee
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.