优化阅读页跳转逻辑,优先传递章节中间ID(mid),以提升分享功能的一致性。更新相关页面以支持新逻辑,确保用户体验流畅。增加退款功能的相关处理,支持订单退款及退款原因的记录,增强订单管理的灵活性。
This commit is contained in:
@@ -15,13 +15,13 @@ import (
|
||||
"soul-api/internal/config"
|
||||
|
||||
"github.com/ArtisanCloud/PowerLibs/v3/object"
|
||||
subrequest "github.com/ArtisanCloud/PowerWeChat/v3/src/basicService/subscribeMessage/request"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel/models"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/kernel/power"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/miniProgram"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/payment"
|
||||
notifyrequest "github.com/ArtisanCloud/PowerWeChat/v3/src/payment/notify/request"
|
||||
"github.com/ArtisanCloud/PowerWeChat/v3/src/payment/order/request"
|
||||
subrequest "github.com/ArtisanCloud/PowerWeChat/v3/src/basicService/subscribeMessage/request"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -104,7 +104,7 @@ func Init(c *config.Config) error {
|
||||
CertPath: certPath,
|
||||
KeyPath: keyPath,
|
||||
SerialNo: cfg.WechatSerialNo,
|
||||
NotifyURL: cfg.WechatNotifyURL,
|
||||
NotifyURL: cfg.WechatNotifyURL,
|
||||
HttpDebug: cfg.Mode == "debug",
|
||||
}
|
||||
paymentApp, err = payment.NewPayment(paymentConfig)
|
||||
@@ -153,10 +153,10 @@ func GetPhoneNumber(code string) (phoneNumber, countryCode string, err error) {
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s", token)
|
||||
|
||||
|
||||
reqBody := map[string]string{"code": code}
|
||||
jsonData, _ := json.Marshal(reqBody)
|
||||
|
||||
|
||||
resp, err := http.Post(url, "application/json", bytes.NewReader(jsonData))
|
||||
if err != nil {
|
||||
return "", "", fmt.Errorf("请求微信接口失败: %w", err)
|
||||
@@ -164,21 +164,21 @@ func GetPhoneNumber(code string) (phoneNumber, countryCode string, err error) {
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, _ := io.ReadAll(resp.Body)
|
||||
|
||||
|
||||
var result struct {
|
||||
ErrCode int `json:"errcode"`
|
||||
ErrMsg string `json:"errmsg"`
|
||||
ErrCode int `json:"errcode"`
|
||||
ErrMsg string `json:"errmsg"`
|
||||
PhoneInfo struct {
|
||||
PhoneNumber string `json:"phoneNumber"`
|
||||
PurePhoneNumber string `json:"purePhoneNumber"`
|
||||
CountryCode string `json:"countryCode"`
|
||||
} `json:"phone_info"`
|
||||
}
|
||||
|
||||
|
||||
if err := json.Unmarshal(body, &result); err != nil {
|
||||
return "", "", fmt.Errorf("解析微信返回失败: %w", err)
|
||||
}
|
||||
|
||||
|
||||
if result.ErrCode != 0 {
|
||||
return "", "", fmt.Errorf("微信返回错误: %d - %s", result.ErrCode, result.ErrMsg)
|
||||
}
|
||||
@@ -203,7 +203,7 @@ func GenerateMiniProgramCode(scene, page string, width int) ([]byte, error) {
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s", token)
|
||||
|
||||
|
||||
if width <= 0 || width > 430 {
|
||||
width = 280
|
||||
}
|
||||
@@ -263,12 +263,15 @@ func GenerateMiniProgramCode(scene, page string, width int) ([]byte, error) {
|
||||
return body, nil
|
||||
}
|
||||
|
||||
// GetPayNotifyURL 返回支付回调地址(与商户平台配置一致)
|
||||
// GetPayNotifyURL 返回支付回调地址(从 config.BaseURL 派生,与商户平台配置一致)
|
||||
func GetPayNotifyURL() string {
|
||||
if cfg != nil && cfg.WechatNotifyURL != "" {
|
||||
return cfg.WechatNotifyURL
|
||||
}
|
||||
return "https://soul.quwanzhi.com/api/miniprogram/pay/notify"
|
||||
if cfg != nil && cfg.BaseURL != "" {
|
||||
return cfg.BaseURLJoin("/api/miniprogram/pay/notify")
|
||||
}
|
||||
return "https://soulapi.quwanzhi.com/api/miniprogram/pay/notify"
|
||||
}
|
||||
|
||||
// PayJSAPIOrder 微信支付 v3 小程序 JSAPI 统一下单,返回 prepay_id
|
||||
@@ -288,7 +291,7 @@ func PayJSAPIOrder(ctx context.Context, openID, orderSn string, amountCents int,
|
||||
Total: amountCents,
|
||||
Currency: "CNY",
|
||||
},
|
||||
Payer: &request.JSAPIPayer{OpenID: openID},
|
||||
Payer: &request.JSAPIPayer{OpenID: openID},
|
||||
Attach: attach,
|
||||
}
|
||||
res, err := paymentApp.Order.JSAPITransaction(ctx, req)
|
||||
|
||||
Reference in New Issue
Block a user