refactor(api): 优化 camel_oil_api 客户端及日志隐私处理
- 为 NewClient 函数添加 context 参数以支持上下文传递 - 修改调用处使用带 context 的 NewClient 构造客户端实例 - 调整日志打印,手机号不再部分隐藏,确保日志信息完整 - 添加客户端代理配置,使用固定 socks5 代理地址 - 更新代理池初始化 Key 和代理用户名密码信息 - 调整创建订单、登录等接口日志,保存完整手机号 - 修正测试文件调用,改用带 context 的客户端创建方式 - 移除部分旧注释代码,提高代码清晰度 - 优化查询订单时卡号日志信息,输出完整卡号 - 调整部分时间和循环控制相关实现,提升代码规范性
This commit is contained in:
@@ -43,7 +43,7 @@ func (s *sCamelOil) LoginAccount(ctx context.Context) (err error) {
|
||||
return errors.New("手机号已存在,重新获取")
|
||||
}
|
||||
|
||||
isOk, err := camel_oil_api.NewClient().SendCaptcha(ctx, phoneNumber)
|
||||
isOk, err := camel_oil_api.NewClient(ctx).SendCaptcha(ctx, phoneNumber)
|
||||
if err != nil {
|
||||
return gerror.Wrap(err, "发送验证码失败")
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ func (s *sCamelOil) CronOrderPaymentCheckTask(ctx context.Context) error {
|
||||
}
|
||||
|
||||
// 查询订单状态
|
||||
queryResult, err2 := camel_oil_api.NewClient().QueryOrder(ctx, accountInfo.Phone, accountInfo.Token, order.PlatformOrderNo)
|
||||
queryResult, err2 := camel_oil_api.NewClient(ctx).QueryOrder(ctx, accountInfo.Phone, accountInfo.Token, order.PlatformOrderNo)
|
||||
if err2 != nil {
|
||||
glog.Error(ctx, "查询订单状态失败:", err2)
|
||||
_ = s.RecordOrderHistory(ctx, order.OrderNo, "query_failed", "", fmt.Sprintf("查询订单失败: %v", err))
|
||||
@@ -235,7 +235,7 @@ func (s *sCamelOil) CronVerifyCodeCheckTask(ctx context.Context) error {
|
||||
failCount := 0
|
||||
|
||||
pigClient := pig.NewClient()
|
||||
camelClient := camel_oil_api.NewClient()
|
||||
camelClient := camel_oil_api.NewClient(ctx)
|
||||
|
||||
for _, account := range accounts {
|
||||
//如果时间超过 1 分钟,就是过期
|
||||
|
||||
@@ -124,7 +124,7 @@ func (s *sCamelOil) PrefetchOrderConcurrently(ctx context.Context, amount float6
|
||||
mu.Unlock()
|
||||
|
||||
// 拉取订单
|
||||
platformOrderId, payUrl, err2 := camel_oil_api.NewClient().CreateCamelOilOrder(ctx, acc.Phone, acc.Token, amount)
|
||||
platformOrderId, payUrl, err2 := camel_oil_api.NewClient(ctx).CreateCamelOilOrder(ctx, acc.Phone, acc.Token, amount)
|
||||
if err2 != nil {
|
||||
if err2.Error() == "auth_error" {
|
||||
_ = s.UpdateAccountStatus(ctx, acc.Id, consts.CamelOilAccountStatusInvalid, consts.CamelOilAccountChangeTypeInvalidate, "账号token失效")
|
||||
@@ -185,7 +185,7 @@ func (s *sCamelOil) PrefetchOrder(ctx context.Context, account *entity.V1CamelOi
|
||||
s.SavePrefetchOrderLog(ctx, fmt.Sprintf("调用骆驼平台API - 账号ID: %d, 账号名称: %s, 金额: %.2f, 操作: CreateCamelOilOrder",
|
||||
account.Id, account.AccountName, amount))
|
||||
|
||||
platformOrderId, payUrl, err := camel_oil_api.NewClient().CreateCamelOilOrder(ctx, account.Phone, account.Token, amount)
|
||||
platformOrderId, payUrl, err := camel_oil_api.NewClient(ctx).CreateCamelOilOrder(ctx, account.Phone, account.Token, amount)
|
||||
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "调用骆驼平台API创建订单失败,账号ID=%d, 错误: %v", account.Id, err)
|
||||
|
||||
@@ -334,7 +334,7 @@ func (s *sCamelOil) BindCardToToken(ctx context.Context, orderId int64, cardNumb
|
||||
}
|
||||
|
||||
// 4.2 调用绑卡接口(使用选中 Token 的 TokenValue)
|
||||
rechargeErrType, rechargeErr := camel_oil_api.NewClient().RechargeCard(ctx, selectedToken.TokenValue, selectedToken.Phone, cardPassword)
|
||||
rechargeErrType, rechargeErr := camel_oil_api.NewClient(ctx).RechargeCard(ctx, selectedToken.TokenValue, selectedToken.Phone, cardPassword)
|
||||
if rechargeErr != nil {
|
||||
switch rechargeErrType {
|
||||
case camel_oil_api.RechargeCardErrorCode:
|
||||
|
||||
@@ -123,8 +123,8 @@ func (s *MinuteExpireStrategy) fetchProxyFromAPI(ctx context.Context) (*model.Pr
|
||||
return &model.ProxyInfo{
|
||||
Host: ipList[0],
|
||||
Port: int(port),
|
||||
Username: "E4WS5YZV",
|
||||
Password: "C474B2794C4E",
|
||||
Username: "8LO6KX52",
|
||||
Password: "9583D10B85D9",
|
||||
Protocol: "socks5",
|
||||
}, nil
|
||||
}
|
||||
|
||||
2
main.go
2
main.go
@@ -46,7 +46,7 @@ func main() {
|
||||
glog.Warning(gctx.GetInitCtx(), "AES 密钥初始化失败", err)
|
||||
}
|
||||
|
||||
_ = service.ProxyPool().InitStrategy(gctx.GetInitCtx(), "https://share.proxy.qg.net/get?key=E4WS5YZV&num=1&area=&isp=0&format=txt&seq=\\r\\n&distinct=false", gtime.M)
|
||||
_ = service.ProxyPool().InitStrategy(gctx.GetInitCtx(), "https://share.proxy.qg.net/get?key=8LO6KX52&num=1&area=&isp=0&format=txt&seq=\\r\\n&distinct=false", gtime.M)
|
||||
|
||||
// 测试日志输出
|
||||
glog.Info(gctx.GetInitCtx(), "OTel可观测性系统初始化完成,服务启动")
|
||||
|
||||
@@ -27,7 +27,7 @@ type Client struct {
|
||||
Client *gclient.Client
|
||||
}
|
||||
|
||||
func NewClient() *Client {
|
||||
func NewClient(ctx context.Context) *Client {
|
||||
client := gclient.New()
|
||||
client.SetBrowserMode(true)
|
||||
client.SetHeaderMap(map[string]string{
|
||||
@@ -37,6 +37,13 @@ func NewClient() *Client {
|
||||
"host": "app.bac365.com",
|
||||
"User-Agent": "Mozilla/5.0 (iPad; CPU OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Html5Plus/1.0 (Immersed/20) uni-app",
|
||||
})
|
||||
//proxy, err2 := service.ProxyPool().GetProxyByOrderId(ctx, "phone")
|
||||
//if err2 == nil && proxy.Host != "" {
|
||||
// glog.Info(ctx, "代理 ip", proxy.String())
|
||||
// client.SetProxy(proxy.String())
|
||||
//}
|
||||
proxy := "socks5://B548CAB4:08BDC0979C6F@tun-ytljxq.qg.net:10255"
|
||||
client.SetProxy(proxy)
|
||||
return &Client{
|
||||
Client: client,
|
||||
}
|
||||
@@ -77,17 +84,17 @@ func (c *Client) SendCaptcha(ctx context.Context, phone string) (bool, error) {
|
||||
}{}
|
||||
err = json.Unmarshal([]byte(respStr), &respStruct)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "解析发送验证码响应失败,手机号: %s***%s, 错误: %v", phone[:3], phone[len(phone)-4:], err)
|
||||
glog.Errorf(ctx, "解析发送验证码响应失败,手机号: %s, 错误: %v", phone, err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("解析发送验证码响应失败 - 手机号: %s, 错误: %v", phone, err))
|
||||
return false, err
|
||||
}
|
||||
|
||||
success := respStruct.Code == "success"
|
||||
if success {
|
||||
glog.Infof(ctx, "发送验证码成功,手机号: %s***%s", phone[:3], phone[len(phone)-4:])
|
||||
glog.Infof(ctx, "发送验证码成功,手机号: %s", phone)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码成功 - 手机号: %s, 响应消息: %s", phone, respStruct.Message))
|
||||
} else {
|
||||
glog.Warningf(ctx, "发送验证码失败,手机号: %s***%s, 错误码: %s, 消息: %s", phone[:3], phone[len(phone)-4:], respStruct.Code, respStruct.Message)
|
||||
glog.Warningf(ctx, "发送验证码失败,手机号: %s, 错误码: %s, 消息: %s", phone, respStruct.Code, respStruct.Message)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("发送验证码失败 - 手机号: %s, 错误码: %s, 消息: %s", phone, respStruct.Code, respStruct.Message))
|
||||
}
|
||||
|
||||
@@ -134,8 +141,8 @@ func (c *Client) GetCaptcha(ctx context.Context) (string, error) {
|
||||
|
||||
func (c *Client) LoginWithCaptcha(ctx context.Context, phone string, code string) (string, error) {
|
||||
// 记录登录开始
|
||||
glog.Infof(ctx, "开始登录 - 手机号: %s***%s", phone[:3], phone[len(phone)-4:])
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录请求开始 - 手机号: %s***%s, 验证码: %s", phone[:3], phone[len(phone)-4:], code))
|
||||
glog.Infof(ctx, "开始登录 - 手机号: %s", phone)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录请求开始 - 手机号: %s, 验证码: %s", phone, code))
|
||||
|
||||
//token, err := c.GetCaptcha(ctx)
|
||||
//if err != nil {
|
||||
@@ -160,14 +167,14 @@ func (c *Client) LoginWithCaptcha(ctx context.Context, phone string, code string
|
||||
|
||||
resp, err := c.Client.ContentJson().Post(ctx, "https://app.bac365.com/camel_wechat_mini_oil_server/loginApp", req)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "登录请求失败,手机号: %s***%s, 错误: %v", phone[:3], phone[len(phone)-4:], err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录请求失败 - 手机号: %s***%s, 错误: %v", phone[:3], phone[len(phone)-4:], err))
|
||||
glog.Errorf(ctx, "登录请求失败,手机号: %s, 错误: %v", phone, err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录请求失败 - 手机号: %s, 错误: %v", phone, err))
|
||||
return "", err
|
||||
}
|
||||
|
||||
respStr := resp.ReadAllString()
|
||||
glog.Info(ctx, "登录响应数据:", respStr)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录响应数据 - 手机号: %s***%s, 响应: %s", phone[:3], phone[len(phone)-4:], respStr))
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录响应数据 - 手机号: %s, 响应: %s", phone, respStr))
|
||||
|
||||
respStruct := struct {
|
||||
LoginUser struct {
|
||||
@@ -184,14 +191,14 @@ func (c *Client) LoginWithCaptcha(ctx context.Context, phone string, code string
|
||||
}{}
|
||||
err = json.Unmarshal([]byte(respStr), &respStruct)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "解析登录响应失败,手机号: %s***%s, 错误: %v", phone[:3], phone[len(phone)-4:], err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("解析登录响应失败 - 手机号: %s***%s, 错误: %v", phone[:3], phone[len(phone)-4:], err))
|
||||
glog.Errorf(ctx, "解析登录响应失败,手机号: %s, 错误: %v", phone, err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("解析登录响应失败 - 手机号: %s, 错误: %v", phone, err))
|
||||
return "", err
|
||||
}
|
||||
|
||||
if respStruct.Code != "success" {
|
||||
glog.Warningf(ctx, "登录失败,手机号: %s***%s, 错误码: %s, 消息: %s", phone[:3], phone[len(phone)-4:], respStruct.Code, respStruct.Message)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录失败 - 手机号: %s***%s, 错误码: %s, 消息: %s", phone[:3], phone[len(phone)-4:], respStruct.Code, respStruct.Message))
|
||||
glog.Warningf(ctx, "登录失败,手机号: %s, 错误码: %s, 消息: %s", phone, respStruct.Code, respStruct.Message)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录失败 - 手机号: %s, 错误码: %s, 消息: %s", phone, respStruct.Code, respStruct.Message))
|
||||
return "", errors.New(respStruct.Message)
|
||||
}
|
||||
|
||||
@@ -200,8 +207,8 @@ func (c *Client) LoginWithCaptcha(ctx context.Context, phone string, code string
|
||||
if len(tokenMask) > 8 {
|
||||
tokenMask = respStruct.Token[:4] + "****" + respStruct.Token[len(respStruct.Token)-4:]
|
||||
}
|
||||
glog.Infof(ctx, "登录成功,手机号: %s***%s, Token: %s, 用户ID: %s", phone[:3], phone[len(phone)-4:], tokenMask, respStruct.LoginUser.UserIdApp)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录成功 - 手机号: %s***%s, 用户ID: %s, Token: %s, 登录时间: %s", phone[:3], phone[len(phone)-4:], respStruct.LoginUser.UserIdApp, tokenMask, respStruct.LoginUser.LoginTime))
|
||||
glog.Infof(ctx, "登录成功,手机号: %s, Token: %s, 用户ID: %s", phone, tokenMask, respStruct.LoginUser.UserIdApp)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("登录成功 - 手机号: %s, 用户ID: %s, Token: %s, 登录时间: %s", phone, respStruct.LoginUser.UserIdApp, tokenMask, respStruct.LoginUser.LoginTime))
|
||||
|
||||
return respStruct.Token, err
|
||||
}
|
||||
@@ -251,14 +258,14 @@ func (c *Client) QueryCamelOilCardAvailableDenominations(ctx context.Context, to
|
||||
|
||||
func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, amount float64) (orderId string, payUrl string, err error) {
|
||||
// 记录创建订单开始
|
||||
glog.Infof(ctx, "开始创建骆驼油订单 - 手机号: %s***%s, 金额: %.2f", phone[:3], phone[len(phone)-4:], amount)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建骆驼油订单开始 - 手机号: %s***%s, 金额: %.2f", phone[:3], phone[len(phone)-4:], amount))
|
||||
glog.Infof(ctx, "开始创建骆驼油订单 - 手机号: %s, 金额: %.2f", phone, amount)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建骆驼油订单开始 - 手机号: %s, 金额: %.2f", phone, amount))
|
||||
|
||||
c.Client.SetHeader("Authorization", "Bearer "+c.getAuth(ctx, token))
|
||||
goods, err := c.QueryCamelOilCardAvailableDenominations(ctx, token)
|
||||
if err != nil {
|
||||
glog.Errorf(ctx, "查询可用面额失败,手机号: %s***%s, 金额: %.2f, 错误: %v", phone[:3], phone[len(phone)-4:], amount, err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建订单查询面额失败 - 手机号: %s***%s, 金额: %.2f, 错误: %v", phone[:3], phone[len(phone)-4:], amount, err))
|
||||
glog.Errorf(ctx, "查询可用面额失败,手机号: %s, 金额: %.2f, 错误: %v", phone, amount, err)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建订单查询面额失败 - 手机号: %s, 金额: %.2f, 错误: %v", phone, amount, err))
|
||||
return "", "", err
|
||||
}
|
||||
goodId := ""
|
||||
@@ -269,17 +276,17 @@ func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, a
|
||||
}
|
||||
}
|
||||
if goodId == "" {
|
||||
glog.Warningf(ctx, "当前金额 %.2f 不支持,手机号: %s***%s", amount, phone[:3], phone[len(phone)-4:])
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建订单失败 - 金额 %.2f 不支持, 手机号: %s***%s", amount, phone[:3], phone[len(phone)-4:]))
|
||||
glog.Warningf(ctx, "当前金额 %.2f 不支持,手机号: %s", amount, phone)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("创建订单失败 - 金额 %.2f 不支持, 手机号: %s", amount, phone))
|
||||
return "", "", errors.New("当前金额不支持")
|
||||
}
|
||||
|
||||
glog.Infof(ctx, "找到匹配的面额商品,手机号: %s***%s, 金额: %.2f, 商品ID: %s", phone[:3], phone[len(phone)-4:], amount, goodId)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("找到匹配商品 - 手机号: %s***%s, 金额: %.2f, 商品ID: %s", phone[:3], phone[len(phone)-4:], amount, goodId))
|
||||
glog.Infof(ctx, "找到匹配的面额商品,手机号: %s, 金额: %.2f, 商品ID: %s", phone, amount, goodId)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("找到匹配商品 - 手机号: %s, 金额: %.2f, 商品ID: %s", phone, amount, goodId))
|
||||
|
||||
const maxRetries = 10
|
||||
|
||||
// 获取骆驼模块设置
|
||||
//// 获取骆驼模块设置
|
||||
settings, err := service.CamelOil().GetCamelOilSettings(ctx)
|
||||
var maxConcurrency int
|
||||
if err != nil {
|
||||
@@ -374,11 +381,6 @@ func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, a
|
||||
Channel: "app",
|
||||
Yanqian: true,
|
||||
}
|
||||
//proxy, err2 := service.ProxyPool().GetProxyByOrderId(ctx, phone)
|
||||
//if err2 == nil && proxy.Host != "" {
|
||||
// glog.Info(ctx, "代理 ip", proxy.String())
|
||||
// c.Client.SetProxy(proxy.String())
|
||||
//}
|
||||
resp, err1 := c.Client.Post(ctx, "https://app.bac365.com/camel_wechat_mini_oil_server/eCardMall/wechatCardOrder", req)
|
||||
if err1 != nil {
|
||||
resultMutex.Lock()
|
||||
@@ -389,8 +391,9 @@ func (c *Client) CreateCamelOilOrder(ctx context.Context, phone, token string, a
|
||||
return
|
||||
}
|
||||
respStr := resp.ReadAllString()
|
||||
glog.Info(ctx, "创建订单响应", respStr)
|
||||
|
||||
// 记录响应数据到日志
|
||||
//记录响应数据到日志
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, respStr)
|
||||
|
||||
respStruct := struct {
|
||||
@@ -547,7 +550,7 @@ func (c *Client) QueryOrder(ctx context.Context, phone, token, orderId string) (
|
||||
for _, card := range respStruct.Cards {
|
||||
if card.OrderId == orderId {
|
||||
glog.Infof(ctx, "查询订单%s成功,金额: %.2f, 卡号: %s", orderId, card.Denomination, card.ECardNo)
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("查询订单成功 - 订单ID: %s, 金额: %.2f, 卡号: %s***%s, 创建时间: %s", orderId, card.Denomination, card.ECardNo[:4], card.ECardNo[len(card.ECardNo)-4:], card.CreateTime))
|
||||
service.CamelOil().SavePrefetchOrderLog(ctx, fmt.Sprintf("查询订单成功 - 订单ID: %s, 金额: %.2f, 卡号: %s, 创建时间: %s", orderId, card.Denomination, card.ECardNo, card.CreateTime))
|
||||
return &QueryResult{
|
||||
Balance: card.Denomination,
|
||||
CardNumber: card.ECardNo,
|
||||
|
||||
@@ -4,14 +4,12 @@ import (
|
||||
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
||||
"github.com/gogf/gf/v2/net/gclient"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
"kami/internal/logic/proxy_pool"
|
||||
"kami/internal/service"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestClient_SendCaptcha(t *testing.T) {
|
||||
client := NewClient()
|
||||
client := NewClient(t.Context())
|
||||
isOk, err := client.SendCaptcha(t.Context(), "19224625031")
|
||||
glog.Info(t.Context(), isOk, err)
|
||||
}
|
||||
@@ -36,22 +34,23 @@ func TestClient_SendCard(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestClient_LoginWithCaptcha(t *testing.T) {
|
||||
client := NewClient()
|
||||
client := NewClient(t.Context())
|
||||
isOk, err := client.LoginWithCaptcha(t.Context(), "19224625031", "063713")
|
||||
glog.Info(t.Context(), isOk, err)
|
||||
// 2025-11-27T17:14:24.131+08:00 [INFO]
|
||||
}
|
||||
|
||||
func TestClient_CreateOrder(t *testing.T) {
|
||||
ticker := time.NewTicker(time.Second)
|
||||
service.RegisterProxyPool(proxy_pool.New())
|
||||
for t2 := range ticker.C {
|
||||
glog.Info(t.Context(), t2)
|
||||
client := NewClient()
|
||||
orderId, payUrl, err := client.CreateCamelOilOrder(t.Context(), "13966750117", "buOSl900L1o6htbHZ6ou32NGtyEsuLu3TeJJlqEZNAvfPzlRk/OqkYm7rMh0X+otku80Jz+sjIlfnf8JXUIjH4NkTRgX92w2knTEjqIc92MSnEi9qyV0lTKue/ycVD1INIGJGBn3vJopJrcb8eupKUjVhFXvONAW2RQ7atAeANc=", 100)
|
||||
//service.RegisterProxyPool(proxy_pool.New())
|
||||
//_ = service.ProxyPool().InitStrategy(gctx.GetInitCtx(), "https://share.proxy.qg.net/get?key=8LO6KX52&num=1&area=&isp=0&format=txt&seq=\\r\\n&distinct=false", gtime.M)
|
||||
|
||||
ticker := time.NewTicker(time.Second * 1)
|
||||
for range ticker.C {
|
||||
client := NewClient(t.Context())
|
||||
orderId, payUrl, err := client.CreateCamelOilOrder(t.Context(), "19247252286", "D/k6sTlhbNrGk798lDhAP88qlJKYqMyiz9ESzmKW6uiuvj1ZWSPOlCgv3L0pEEr871Vuxr9tBAA4BiH2RTuSaYugq458wOjsJedfyGGHRyZZyMzZ/Tl6Km2vKT2Dph2/n9FaqNwErxNeq0+11x9q7VnBhhJTjxVIYN/fe3TB/m4=", 100)
|
||||
if err == nil {
|
||||
glog.Info(t.Context(), orderId, payUrl, err)
|
||||
break
|
||||
return
|
||||
}
|
||||
glog.Info(t.Context(), orderId, payUrl, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user