fix: for AI review problems

This commit is contained in:
wzxjohn
2025-07-10 20:55:43 +08:00
parent d6ed2ab3e0
commit 8cc747ef22
5 changed files with 24 additions and 35 deletions

View File

@@ -7,20 +7,20 @@ import (
"encoding/hex"
)
func Sha256Raw(data string) []byte {
func Sha256Raw(data []byte) []byte {
h := sha256.New()
h.Write([]byte(data))
h.Write(data)
return h.Sum(nil)
}
func Sha1Raw(data []byte) []byte {
h := sha1.New()
h.Write([]byte(data))
h.Write(data)
return h.Sum(nil)
}
func Sha1(data string) string {
return hex.EncodeToString(Sha1Raw([]byte(data)))
func Sha1(data []byte) string {
return hex.EncodeToString(Sha1Raw(data))
}
func HmacSha256Raw(message, key []byte) []byte {

View File

@@ -57,8 +57,8 @@ func (*StripeAdaptor) RequestPay(c *gin.Context, req *StripePayRequest) {
c.JSON(200, gin.H{"message": "error", "data": "不支持的支付渠道"})
return
}
if req.Amount < int64(setting.StripeMinTopUp) {
c.JSON(200, gin.H{"message": fmt.Sprintf("充值数量不能小于 %d", setting.StripeMinTopUp), "data": 10})
if req.Amount < getStripeMinTopup() {
c.JSON(200, gin.H{"message": fmt.Sprintf("充值数量不能小于 %d", getStripeMinTopup()), "data": 10})
return
}
if req.Amount > 10000 {
@@ -71,7 +71,7 @@ func (*StripeAdaptor) RequestPay(c *gin.Context, req *StripePayRequest) {
chargedMoney := GetChargedAmount(float64(req.Amount), *user)
reference := fmt.Sprintf("new-api-ref-%d-%d-%s", user.Id, time.Now().UnixMilli(), randstr.String(4))
referenceId := "ref_" + common.Sha1(reference)
referenceId := "ref_" + common.Sha1([]byte(reference))
payLink, err := genStripeLink(referenceId, user.StripeCustomer, user.Email, req.Amount)
if err != nil {
@@ -181,7 +181,7 @@ func sessionExpired(event stripe.Event) {
return
}
if "" == referenceId {
if len(referenceId) == 0 {
log.Println("未提供支付单号")
return
}
@@ -257,7 +257,7 @@ func getStripePayMoney(amount float64, group string) float64 {
if !common.DisplayInCurrencyEnabled {
amount = amount / common.QuotaPerUnit
}
// 别问为什么用float64,问就是这么点钱没必要
// Using float64 for monetary calculations is acceptable here due to the small amounts involved
topupGroupRatio := common.GetTopupGroupRatio(group)
if topupGroupRatio == 0 {
topupGroupRatio = 1

View File

@@ -43,7 +43,7 @@ type User struct {
LinuxDOId string `json:"linux_do_id" gorm:"column:linux_do_id;index"`
Setting string `json:"setting" gorm:"type:text;column:setting"`
Remark string `json:"remark,omitempty" gorm:"type:varchar(255)" validate:"max=255"`
StripeCustomer string `json:"stripe_customer" gorm:"column:stripe_customer;index"`
StripeCustomer string `json:"stripe_customer" gorm:"type:varchar(64);column:stripe_customer;index"`
}
func (user *User) ToBaseUser() *UserBase {

View File

@@ -14,7 +14,6 @@ import {
removeTrailingSlash,
showError,
showSuccess,
verifyJSON,
} from '../../../helpers';
import { useTranslation } from 'react-i18next';
@@ -60,19 +59,19 @@ export default function SettingsPaymentGateway(props) {
try {
const options = []
if (inputs.StripeApiSecret !== undefined && inputs.StripeApiSecret !== '') {
if (inputs.StripeApiSecret && inputs.StripeApiSecret !== '') {
options.push({ key: 'StripeApiSecret', value: inputs.StripeApiSecret });
}
if (inputs.StripeWebhookSecret !== undefined && inputs.StripeWebhookSecret !== '') {
if (inputs.StripeWebhookSecret && inputs.StripeWebhookSecret !== '') {
options.push({ key: 'StripeWebhookSecret', value: inputs.StripeWebhookSecret });
}
if (inputs.StripePriceId !== '') {
options.push({key: 'StripePriceId', value: inputs.StripePriceId,});
}
if (inputs.StripeUnitPrice !== '') {
if (inputs.StripeUnitPrice !== undefined && inputs.StripeUnitPrice !== null) {
options.push({ key: 'StripeUnitPrice', value: inputs.StripeUnitPrice.toString() });
}
if (inputs.StripeMinTopUp !== '') {
if (inputs.StripeMinTopUp !== undefined && inputs.StripeMinTopUp !== null) {
options.push({ key: 'StripeMinTopUp', value: inputs.StripeMinTopUp.toString() });
}
@@ -96,7 +95,7 @@ export default function SettingsPaymentGateway(props) {
showSuccess(t('更新成功'));
// 更新本地存储的原始值
setOriginInputs({ ...inputs });
props.refresh && props.refresh();
props.refresh?.();
}
} catch (error) {
showError(t('更新失败'));
@@ -135,7 +134,7 @@ export default function SettingsPaymentGateway(props) {
</Text>
<Banner
type='info'
description={`Webhook 填:${props.options.ServerAddress ? props.options.ServerAddress : '网站地址'}/api/stripe/webhook`}
description={`Webhook 填:${props.options.ServerAddress ? removeTrailingSlash(props.options.ServerAddress) : t('网站地址')}/api/stripe/webhook`}
/>
<Banner
type='warning'

View File

@@ -293,7 +293,7 @@ const TopUp = () => {
}
const processStripeCallback = (data) => {
location.href = data.pay_link;
window.open(data.pay_link, '_blank');
};
const getUserQuota = async () => {
@@ -938,21 +938,11 @@ const TopUp = () => {
<>
{/* 桌面端显示的自定义金额和支付按钮 */}
<div className='hidden md:block space-y-4'>
{!enableOnlineTopUp?(
<Divider style={{ margin: '24px 0' }}>
<Text className='text-sm font-medium'>
{t('或输入自定义金额')}
{t(!enableOnlineTopUp ? '或输入自定义金额' : 'Stripe')}
</Text>
</Divider>
) : (
<Divider style={{ margin: '24px 0' }}>
<Text className='text-sm font-medium'>
{t('Stripe')}
</Text>
</Divider>
)
}
<div>
<div className='flex justify-between mb-2'>
@@ -968,7 +958,7 @@ const TopUp = () => {
)}
</div>
<InputNumber
disabled={!enableOnlineTopUp}
disabled={!enableStripeTopUp}
placeholder={
t('充值数量,最低 ') + renderQuotaWithAmount(stripeMinTopUp)
}