修复拉卡拉支付时间偏差
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"hfb_sys/backend/internal/modules/order"
|
||||
"hfb_sys/backend/internal/modules/paymentconfig"
|
||||
"hfb_sys/backend/internal/modules/wallet"
|
||||
"hfb_sys/backend/internal/timeutil"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
@@ -756,9 +757,27 @@ func canReuseOrderPayment(payment model.PaymentOrder, runtimeConfig runtimePayme
|
||||
if payment.MerchantID != "" && runtimeConfig.MerchantID != "" && payment.MerchantID != runtimeConfig.MerchantID {
|
||||
return false
|
||||
}
|
||||
if payment.Status == "paying" && paymentCashierExpired(payment) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func paymentCashierExpired(payment model.PaymentOrder) bool {
|
||||
if len(payment.RawRequest) == 0 {
|
||||
return false
|
||||
}
|
||||
var raw map[string]string
|
||||
if err := json.Unmarshal(payment.RawRequest, &raw); err != nil {
|
||||
return false
|
||||
}
|
||||
deadline := parseChannelTime(raw["order_efficient_time"])
|
||||
if deadline == nil {
|
||||
return false
|
||||
}
|
||||
return !timeutil.ShanghaiNow().Before(*deadline)
|
||||
}
|
||||
|
||||
func newOrderPayment(row model.RentalOrder, amountCent int64, req StartPaymentRequest, runtimeConfig runtimePaymentConfig) (model.PaymentOrder, error) {
|
||||
paymentNo, err := newPaymentNo()
|
||||
if err != nil {
|
||||
@@ -999,7 +1018,7 @@ func parseChannelTime(value string) *time.Time {
|
||||
return nil
|
||||
}
|
||||
for _, layout := range []string{"2006-01-02 15:04:05", "20060102150405", time.RFC3339} {
|
||||
parsed, err := time.ParseInLocation(layout, value, time.Local)
|
||||
parsed, err := time.ParseInLocation(layout, value, timeutil.ShanghaiLocation())
|
||||
if err == nil {
|
||||
return &parsed
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user