同步
This commit is contained in:
@@ -9,8 +9,8 @@ const { checkAndExecute } = require('./utils/ruleEngine.js')
|
||||
App({
|
||||
globalData: {
|
||||
// API 基础地址(切换环境时注释/取消注释)
|
||||
baseUrl: 'https://soulapi.quwanzhi.com',
|
||||
// baseUrl: 'http://localhost:8080', // 本地调试
|
||||
// baseUrl: 'https://soulapi.quwanzhi.com',
|
||||
baseUrl: 'http://localhost:8080', // 本地调试
|
||||
// baseUrl: 'https://souldev.quwanzhi.com', // 测试环境
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,9 @@ Page({
|
||||
detail: null,
|
||||
loading: true,
|
||||
paying: false,
|
||||
isInitiator: false // 是否发起人,发起人看到「分享给好友」UI,好友看到「帮他付款」
|
||||
isInitiator: false,
|
||||
requesterMsg: '',
|
||||
amountDisplay: '0.00' // 预格式化金额,WXML 中 toFixed 可能不生效
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
@@ -35,7 +37,13 @@ Page({
|
||||
if (res && res.success) {
|
||||
const myId = app.globalData.userInfo?.id || ''
|
||||
const isInitiator = !!myId && res.initiatorUserId === myId
|
||||
this.setData({ detail: res, loading: false, isInitiator })
|
||||
const requesterMsg = isInitiator
|
||||
? '分享给好友,好友打开后即可为你完成支付。'
|
||||
: (res.initiatorMsg || `" 请帮我代付「${res.sectionTitle || res.description || '该商品'}」,非常感谢! "`)
|
||||
const amountDisplay = (res.amount != null && res.amount !== '')
|
||||
? Number(res.amount).toFixed(2)
|
||||
: '0.00'
|
||||
this.setData({ detail: res, loading: false, isInitiator, requesterMsg, amountDisplay })
|
||||
} else {
|
||||
this.setData({ loading: false })
|
||||
wx.showToast({ title: res?.error || '加载失败', icon: 'none' })
|
||||
@@ -47,14 +55,24 @@ Page({
|
||||
},
|
||||
|
||||
async doPay() {
|
||||
if (!app.globalData.isLoggedIn || !app.globalData.userInfo) {
|
||||
wx.showToast({ title: '请先登录', icon: 'none' })
|
||||
setTimeout(() => wx.switchTab({ url: '/pages/my/my' }), 1500)
|
||||
return
|
||||
}
|
||||
const openId = app.globalData.openId || ''
|
||||
// 优先尝试静默获取 openId(有会话时可直接发起支付)
|
||||
let openId = app.globalData.openId || wx.getStorageSync('openId')
|
||||
if (!openId) {
|
||||
wx.showToast({ title: '请先完成微信授权', icon: 'none' })
|
||||
wx.showLoading({ title: '获取支付凭证...', mask: true })
|
||||
openId = await app.getOpenId()
|
||||
wx.hideLoading()
|
||||
}
|
||||
if (!openId) {
|
||||
const { confirm } = await new Promise(r => {
|
||||
wx.showModal({
|
||||
title: '请先登录',
|
||||
content: '登录后可帮他完成代付',
|
||||
confirmText: '去登录',
|
||||
cancelText: '取消',
|
||||
success: res => r(res)
|
||||
})
|
||||
})
|
||||
if (confirm) wx.switchTab({ url: '/pages/my/my' })
|
||||
return
|
||||
}
|
||||
const { requestSn, detail } = this.data
|
||||
@@ -98,7 +116,22 @@ Page({
|
||||
if (e.errMsg && e.errMsg.includes('cancel')) {
|
||||
wx.showToast({ title: '已取消支付', icon: 'none' })
|
||||
} else {
|
||||
wx.showToast({ title: e.message || e.error || '支付失败', icon: 'none' })
|
||||
const errMsg = e.message || e.error || '支付失败'
|
||||
const isPrepayError = /prepay_id|创建订单|支付请求/i.test(errMsg)
|
||||
if (isPrepayError) {
|
||||
const { confirm } = await new Promise(r => {
|
||||
wx.showModal({
|
||||
title: '订单创建失败',
|
||||
content: errMsg + '\n\n是否重新创建订单并重试?',
|
||||
confirmText: '重新创建订单',
|
||||
cancelText: '取消',
|
||||
success: res => r(res)
|
||||
})
|
||||
})
|
||||
if (confirm) this.doPay()
|
||||
} else {
|
||||
wx.showToast({ title: errMsg, icon: 'none' })
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -107,6 +140,20 @@ Page({
|
||||
app.goBackOrToHome()
|
||||
},
|
||||
|
||||
goToInitiatorProfile() {
|
||||
const { detail } = this.data
|
||||
if (!detail?.initiatorUserId) return
|
||||
wx.navigateTo({ url: `/pages/member-detail/member-detail?id=${detail.initiatorUserId}` })
|
||||
},
|
||||
|
||||
goToArticle() {
|
||||
const { detail } = this.data
|
||||
if (!detail || detail.productType !== 'section' || !detail.productId) return
|
||||
const mid = detail.productMid || app.getSectionMid?.(detail.productId)
|
||||
const q = mid ? `mid=${mid}` : `id=${detail.productId}`
|
||||
wx.navigateTo({ url: `/pages/read/read?${q}` })
|
||||
},
|
||||
|
||||
onShareAppMessage() {
|
||||
const { requestSn } = this.data
|
||||
return {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- Soul创业派对 - 代付详情页(美团式:发起人看到分享入口,好友看到帮他付款) -->
|
||||
<!-- Soul创业派对 - 代付详情页(参考 yulan:代付视角+发起视角,忽略 nav) -->
|
||||
<view class="page">
|
||||
<view class="nav-bar" style="padding-top: {{statusBarHeight}}px;">
|
||||
<view class="nav-content">
|
||||
@@ -20,50 +20,55 @@
|
||||
</view>
|
||||
</block>
|
||||
<block wx:elif="{{detail}}">
|
||||
<!-- 营销:章节标题+内容预览,吸引代付人 -->
|
||||
<view class="article-preview" wx:if="{{detail.sectionTitle || detail.contentPreview}}">
|
||||
<text class="article-title">{{detail.sectionTitle || detail.description || '代付商品'}}</text>
|
||||
<text class="article-content" wx:if="{{detail.contentPreview}}">{{detail.contentPreview}}</text>
|
||||
</view>
|
||||
<view class="card">
|
||||
<view class="card-header">
|
||||
<view class="card-badge">代付订单</view>
|
||||
<text class="initiator" wx:if="{{!isInitiator}}">{{detail.initiatorNickname || '好友'}} 请你帮忙付款</text>
|
||||
<text class="initiator" wx:else>分享给好友,好友帮你付款</text>
|
||||
</view>
|
||||
<view class="card-divider"></view>
|
||||
<view class="card-body">
|
||||
<view class="row product-row" wx:if="{{!detail.contentPreview}}">
|
||||
<text class="label">商品</text>
|
||||
<text class="value product-desc">{{detail.sectionTitle || detail.description || '-'}}</text>
|
||||
<!-- 产品 Hero 卡片(订单详情) -->
|
||||
<section class="hero-card">
|
||||
<view class="hero-glow"></view>
|
||||
<view class="hero-inner">
|
||||
<view class="hero-decor">
|
||||
<image class="hero-decor-img" src="/assets/icons/info.svg" mode="aspectFit"/>
|
||||
</view>
|
||||
<view class="row amount-row">
|
||||
<text class="label">金额</text>
|
||||
<text class="amount">¥{{detail.amount ? detail.amount.toFixed(2) : '0.00'}}</text>
|
||||
<view class="hero-badge">订单详情</view>
|
||||
<text class="hero-title">{{detail.sectionTitle || detail.description || '代付商品'}}</text>
|
||||
<text class="hero-desc" wx:if="{{detail.contentPreview}}">{{detail.contentPreview}}</text>
|
||||
<view class="hero-footer">
|
||||
<view class="hero-amount-wrap">
|
||||
<text class="hero-amount-label">应付金额</text>
|
||||
<view class="hero-amount-row">
|
||||
<text class="hero-currency">¥</text>
|
||||
<text class="hero-amount">{{amountDisplay}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="hero-arrow-wrap" bindtap="goToArticle" wx:if="{{detail.productType === 'section' && detail.productId}}">
|
||||
<image class="hero-arrow" src="/assets/icons/arrow-right.svg" mode="aspectFit"/>
|
||||
</view>
|
||||
<view class="hero-arrow-wrap hero-arrow-placeholder" wx:else></view>
|
||||
</view>
|
||||
</view>
|
||||
</section>
|
||||
|
||||
<!-- 发起人信息 -->
|
||||
<section class="requester-card">
|
||||
<view class="requester-header" bindtap="goToInitiatorProfile">
|
||||
<view class="requester-avatar">
|
||||
<image wx:if="{{detail.initiatorAvatar}}" class="avatar-img" src="{{detail.initiatorAvatar}}" mode="aspectFill"/>
|
||||
<image wx:else class="avatar-img icon-avatar" src="/assets/icons/user.svg" mode="aspectFit"/>
|
||||
</view>
|
||||
<view class="requester-info">
|
||||
<text class="requester-name">{{detail.initiatorNickname || '好友'}}</text>
|
||||
<text class="requester-label">发起代付请求</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="requester-msg-wrap">
|
||||
<view class="requester-msg-bar"></view>
|
||||
<text class="requester-msg">{{requesterMsg}}</text>
|
||||
</view>
|
||||
</section>
|
||||
|
||||
<!-- 安全徽章 -->
|
||||
<view class="security-badge">
|
||||
<text class="security-icon">🛡</text>
|
||||
<text class="security-text">安全支付保障 · 资金由平台托管</text>
|
||||
</view>
|
||||
<!-- 发起人:分享给好友 -->
|
||||
<block wx:if="{{isInitiator}}">
|
||||
<view class="tips">
|
||||
<text class="tips-icon">💡</text>
|
||||
<text>分享给好友,好友打开后点击「帮他付款」即可为你代付</text>
|
||||
</view>
|
||||
<button class="pay-btn share-btn" open-type="share">
|
||||
<image class="btn-icon-img" src="/assets/icons/share.svg" mode="aspectFit"/>
|
||||
<text>分享给好友</text>
|
||||
</button>
|
||||
</block>
|
||||
<!-- 好友:帮他付款 -->
|
||||
<block wx:else>
|
||||
<view class="tips">
|
||||
<text class="tips-icon">✓</text>
|
||||
<text>付款后,{{detail.initiatorNickname || '好友'}}将获得对应权益</text>
|
||||
</view>
|
||||
<button class="pay-btn" bindtap="doPay" disabled="{{paying}}">
|
||||
{{paying ? '支付中...' : '帮他付款'}}
|
||||
</button>
|
||||
</block>
|
||||
</block>
|
||||
<block wx:else>
|
||||
<view class="empty">
|
||||
@@ -71,4 +76,34 @@
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<!-- 底部浮动操作栏 -->
|
||||
<view class="footer-bar" wx:if="{{detail && !loading}}">
|
||||
<view class="footer-bg"></view>
|
||||
<view class="footer-inner">
|
||||
<view class="footer-summary">
|
||||
<text class="footer-label">合计</text>
|
||||
<text class="footer-amount">
|
||||
<text class="footer-currency">¥</text>{{amountDisplay}}
|
||||
</text>
|
||||
</view>
|
||||
<!-- 发起人:分享给好友 -->
|
||||
<button wx:if="{{isInitiator}}" class="footer-btn share-btn" open-type="share">
|
||||
<image class="btn-icon" src="/assets/icons/share.svg" mode="aspectFit"/>
|
||||
<text>发送给好友</text>
|
||||
</button>
|
||||
<!-- 好友:帮他付款 -->
|
||||
<button wx:else class="footer-btn pay-btn" bindtap="doPay" disabled="{{paying}}">
|
||||
<image class="btn-icon" src="/assets/icons/wallet.svg" mode="aspectFit"/>
|
||||
<text>{{paying ? '支付中...' : '立即帮他付款'}}</text>
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 背景光效 -->
|
||||
<view class="bg-effects">
|
||||
<view class="bg-glow bg-glow-1"></view>
|
||||
<view class="bg-glow bg-glow-2"></view>
|
||||
<view class="bg-dots"></view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/* Soul创业派对 - 代付详情页 */
|
||||
/* Soul创业派对 - 代付详情页(参考 yulan 深色主题、青绿主色) */
|
||||
.page {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(180deg, #0a0a0a 0%, #000 40%, #000 100%);
|
||||
background: #050505;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nav-bar {
|
||||
@@ -10,10 +11,10 @@
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 100;
|
||||
background: rgba(0, 0, 0, 0.92);
|
||||
backdrop-filter: blur(20rpx);
|
||||
-webkit-backdrop-filter: blur(20rpx);
|
||||
border-bottom: 1rpx solid rgba(255, 255, 255, 0.06);
|
||||
background: rgba(5, 5, 5, 0.6);
|
||||
backdrop-filter: blur(40rpx);
|
||||
-webkit-backdrop-filter: blur(40rpx);
|
||||
border-bottom: 1rpx solid rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.nav-content {
|
||||
@@ -32,7 +33,6 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: opacity 0.2s;
|
||||
}
|
||||
|
||||
.nav-back:active {
|
||||
@@ -45,16 +45,18 @@
|
||||
}
|
||||
|
||||
.nav-title {
|
||||
font-size: 34rpx;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
letter-spacing: 0.5rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 700;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
letter-spacing: 0.2em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 20rpx;
|
||||
padding: 24rpx 24rpx 200rpx;
|
||||
}
|
||||
|
||||
/* 加载 */
|
||||
.loading-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -66,8 +68,8 @@
|
||||
.loading-spinner {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
border: 4rpx solid rgba(0, 206, 209, 0.2);
|
||||
border-top-color: #00CED1;
|
||||
border: 4rpx solid rgba(20, 184, 166, 0.2);
|
||||
border-top-color: #14b8a6;
|
||||
border-radius: 50%;
|
||||
animation: spin 0.8s linear infinite;
|
||||
}
|
||||
@@ -82,28 +84,72 @@
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
/* 营销:章节标题+内容预览,与订单卡片统一风格 */
|
||||
.article-preview {
|
||||
background: linear-gradient(145deg, #1a1a1c 0%, #141416 100%);
|
||||
border-radius: 24rpx;
|
||||
/* 产品 Hero 卡片 */
|
||||
.hero-card {
|
||||
position: relative;
|
||||
margin-bottom: 32rpx;
|
||||
}
|
||||
|
||||
.hero-glow {
|
||||
position: absolute;
|
||||
inset: -4rpx;
|
||||
background: linear-gradient(180deg, rgba(20, 184, 166, 0.2) 0%, transparent 100%);
|
||||
border-radius: 40rpx;
|
||||
filter: blur(24rpx);
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.hero-inner {
|
||||
position: relative;
|
||||
background: rgba(24, 24, 27, 0.8);
|
||||
border: 1rpx solid rgba(255, 255, 255, 0.1);
|
||||
border-radius: 40rpx;
|
||||
padding: 48rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.hero-decor {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
padding: 24rpx;
|
||||
margin-bottom: 16rpx;
|
||||
border: 1rpx solid rgba(0, 206, 209, 0.1);
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.article-title {
|
||||
.hero-decor-img {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
}
|
||||
|
||||
.hero-badge {
|
||||
display: inline-block;
|
||||
font-size: 20rpx;
|
||||
font-weight: 900;
|
||||
letter-spacing: 0.2em;
|
||||
color: #14b8a6;
|
||||
background: rgba(20, 184, 166, 0.1);
|
||||
border: 1rpx solid rgba(20, 184, 166, 0.2);
|
||||
padding: 6rpx 24rpx;
|
||||
border-radius: 999rpx;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
|
||||
.hero-title {
|
||||
display: block;
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
font-size: 36rpx;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
line-height: 1.5;
|
||||
margin-bottom: 12rpx;
|
||||
line-height: 1.3;
|
||||
letter-spacing: -0.5rpx;
|
||||
margin: 0 0 16rpx;
|
||||
}
|
||||
|
||||
.article-content {
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
line-height: 1.65;
|
||||
.hero-desc {
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
line-height: 1.5;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
@@ -111,154 +157,325 @@
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
/* 订单卡片:与文章预览统一圆角、边距 */
|
||||
.card {
|
||||
background: linear-gradient(145deg, #1a1a1c 0%, #141416 100%);
|
||||
border-radius: 24rpx;
|
||||
overflow: hidden;
|
||||
margin-bottom: 24rpx;
|
||||
border: 1rpx solid rgba(0, 206, 209, 0.1);
|
||||
}
|
||||
|
||||
.card-header {
|
||||
padding: 24rpx;
|
||||
}
|
||||
|
||||
.card-badge {
|
||||
display: inline-block;
|
||||
font-size: 22rpx;
|
||||
color: rgba(0, 206, 209, 0.9);
|
||||
background: rgba(0, 206, 209, 0.08);
|
||||
padding: 6rpx 14rpx;
|
||||
border-radius: 8rpx;
|
||||
margin-bottom: 12rpx;
|
||||
letter-spacing: 0.5rpx;
|
||||
}
|
||||
|
||||
.initiator {
|
||||
display: block;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
line-height: 1.4;
|
||||
letter-spacing: 0.3rpx;
|
||||
}
|
||||
|
||||
.card-divider {
|
||||
height: 1rpx;
|
||||
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), transparent);
|
||||
margin: 0 24rpx;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: 20rpx 24rpx 24rpx;
|
||||
}
|
||||
|
||||
.row {
|
||||
.hero-footer {
|
||||
margin-top: 40rpx;
|
||||
padding-top: 32rpx;
|
||||
border-top: 1rpx solid rgba(255, 255, 255, 0.05);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.hero-amount-wrap {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8rpx;
|
||||
}
|
||||
|
||||
.hero-amount-label {
|
||||
font-size: 20rpx;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.2em;
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.hero-amount-row {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 4rpx;
|
||||
}
|
||||
|
||||
.hero-currency {
|
||||
font-size: 36rpx;
|
||||
font-weight: 700;
|
||||
color: #14b8a6;
|
||||
}
|
||||
|
||||
.hero-amount {
|
||||
font-size: 60rpx;
|
||||
font-weight: 700;
|
||||
font-family: 'JetBrains Mono', 'SF Mono', monospace;
|
||||
color: #fff;
|
||||
letter-spacing: -1rpx;
|
||||
}
|
||||
|
||||
.hero-arrow-wrap {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
border-radius: 32rpx;
|
||||
background: rgba(20, 184, 166, 0.1);
|
||||
border: 1rpx solid rgba(20, 184, 166, 0.2);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.hero-arrow {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
filter: invert(72%) sepia(45%) saturate(800%) hue-rotate(130deg);
|
||||
}
|
||||
|
||||
/* 发起人信息卡片 */
|
||||
.requester-card {
|
||||
background: rgba(24, 24, 27, 0.3);
|
||||
border: 1rpx solid rgba(255, 255, 255, 0.05);
|
||||
border-radius: 48rpx;
|
||||
padding: 24rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.row:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.label {
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
flex-shrink: 0;
|
||||
width: 80rpx;
|
||||
}
|
||||
|
||||
.product-row .value {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.95);
|
||||
line-height: 1.5;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.product-desc {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.amount-row {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.amount-row .amount {
|
||||
font-size: 44rpx;
|
||||
font-weight: 700;
|
||||
color: #00CED1;
|
||||
letter-spacing: 1rpx;
|
||||
text-shadow: 0 0 24rpx rgba(0, 206, 209, 0.3);
|
||||
}
|
||||
|
||||
/* 提示文案 */
|
||||
.tips {
|
||||
.requester-header {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 10rpx;
|
||||
padding: 0 4rpx 24rpx;
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
line-height: 1.5;
|
||||
align-items: center;
|
||||
gap: 32rpx;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
|
||||
.tips-icon {
|
||||
flex-shrink: 0;
|
||||
font-size: 28rpx;
|
||||
opacity: 0.8;
|
||||
.requester-header:active {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
/* 主按钮 */
|
||||
.pay-btn {
|
||||
width: 100%;
|
||||
.requester-avatar {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
line-height: 96rpx;
|
||||
background: linear-gradient(135deg, #00CED1 0%, #18a8a8 50%, #20B2AA 100%);
|
||||
color: #fff;
|
||||
font-size: 34rpx;
|
||||
font-weight: 600;
|
||||
border-radius: 50rpx;
|
||||
border: none;
|
||||
box-shadow: 0 8rpx 24rpx rgba(0, 206, 209, 0.35);
|
||||
transition: opacity 0.2s, transform 0.1s;
|
||||
border-radius: 50%;
|
||||
background: linear-gradient(180deg, #3f3f46 0%, #18181b 100%);
|
||||
border: 1rpx solid rgba(255, 255, 255, 0.1);
|
||||
overflow: hidden;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.pay-btn:active {
|
||||
opacity: 0.92;
|
||||
transform: scale(0.99);
|
||||
.avatar-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pay-btn[disabled] {
|
||||
opacity: 0.6;
|
||||
transform: none;
|
||||
.icon-avatar {
|
||||
padding: 24rpx;
|
||||
filter: brightness(0) invert(0.6);
|
||||
}
|
||||
|
||||
.share-btn {
|
||||
.requester-info {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.requester-name {
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
font-weight: 700;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
|
||||
.requester-label {
|
||||
font-size: 20rpx;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.2em;
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.requester-msg-wrap {
|
||||
position: relative;
|
||||
padding-left: 20rpx;
|
||||
}
|
||||
|
||||
.requester-msg-bar {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 4rpx;
|
||||
background: rgba(20, 184, 166, 0.3);
|
||||
border-radius: 2rpx;
|
||||
}
|
||||
|
||||
.requester-msg {
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
font-style: italic;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* 安全徽章 */
|
||||
.security-badge {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 16rpx;
|
||||
padding: 32rpx 0;
|
||||
}
|
||||
|
||||
.btn-icon-img {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
filter: brightness(0) invert(1);
|
||||
.security-icon {
|
||||
font-size: 32rpx;
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.security-text {
|
||||
font-size: 20rpx;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.2em;
|
||||
color: rgba(255, 255, 255, 0.35);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/* 空状态 */
|
||||
.empty {
|
||||
text-align: center;
|
||||
padding: 120rpx 0;
|
||||
font-size: 28rpx;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
/* 底部浮动操作栏 */
|
||||
.footer-bar {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 20;
|
||||
padding: 32rpx;
|
||||
}
|
||||
|
||||
.footer-bg {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: rgba(24, 24, 27, 0.9);
|
||||
backdrop-filter: blur(40rpx);
|
||||
-webkit-backdrop-filter: blur(40rpx);
|
||||
border-top: 1rpx solid rgba(255, 255, 255, 0.1);
|
||||
border-radius: 50rpx;
|
||||
box-shadow: 0 -20rpx 100rpx rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.footer-inner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 32rpx;
|
||||
padding: 24rpx 24rpx 24rpx 48rpx;
|
||||
}
|
||||
|
||||
.footer-summary {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.footer-label {
|
||||
display: block;
|
||||
font-size: 20rpx;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.2em;
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
|
||||
.footer-amount {
|
||||
font-size: 40rpx;
|
||||
font-weight: 700;
|
||||
font-family: 'JetBrains Mono', 'SF Mono', monospace;
|
||||
color: #fff;
|
||||
letter-spacing: -1rpx;
|
||||
}
|
||||
|
||||
.footer-currency {
|
||||
font-size: 28rpx;
|
||||
color: #14b8a6;
|
||||
margin-right: 4rpx;
|
||||
}
|
||||
|
||||
.footer-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 16rpx;
|
||||
padding: 32rpx 48rpx;
|
||||
border-radius: 36rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 900;
|
||||
letter-spacing: 0.1em;
|
||||
text-transform: uppercase;
|
||||
border: none;
|
||||
box-shadow: 0 16rpx 40rpx rgba(20, 184, 166, 0.3);
|
||||
}
|
||||
|
||||
.footer-btn::after {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.share-btn {
|
||||
background: #14b8a6;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.pay-btn {
|
||||
background: #14b8a6;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.pay-btn[disabled] {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.footer-btn:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.btn-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.share-btn .btn-icon,
|
||||
.pay-btn .btn-icon {
|
||||
filter: brightness(0);
|
||||
}
|
||||
|
||||
/* 背景光效 */
|
||||
.bg-effects {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
pointer-events: none;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.bg-glow {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
filter: blur(150rpx);
|
||||
}
|
||||
|
||||
.bg-glow-1 {
|
||||
top: -20%;
|
||||
left: -10%;
|
||||
width: 80%;
|
||||
height: 60%;
|
||||
background: rgba(20, 184, 166, 0.05);
|
||||
animation: pulse-slow 8s infinite;
|
||||
}
|
||||
|
||||
.bg-glow-2 {
|
||||
bottom: -10%;
|
||||
right: -10%;
|
||||
width: 60%;
|
||||
height: 50%;
|
||||
background: rgba(20, 184, 166, 0.05);
|
||||
}
|
||||
|
||||
@keyframes pulse-slow {
|
||||
0%, 100% { opacity: 0.3; }
|
||||
50% { opacity: 0.6; }
|
||||
}
|
||||
|
||||
.bg-dots {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: radial-gradient(rgba(255,255,255,0.02) 1rpx, transparent 1rpx);
|
||||
background-size: 64rpx 64rpx;
|
||||
}
|
||||
|
||||
@@ -24,19 +24,12 @@
|
||||
"miniprogram": {
|
||||
"list": [
|
||||
{
|
||||
"name": "pages/gift-pay/detail",
|
||||
"name": "代付",
|
||||
"pathName": "pages/gift-pay/detail",
|
||||
"query": "requestSn=GPRMP20260317114238341300",
|
||||
"query": "requestSn=GPRMP20260317145140501100",
|
||||
"scene": null,
|
||||
"launchMode": "default"
|
||||
},
|
||||
{
|
||||
"name": "pages/read/read",
|
||||
"pathName": "pages/read/read",
|
||||
"query": "mid=219",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "唤醒",
|
||||
"pathName": "pages/read/read",
|
||||
@@ -57,13 +50,6 @@
|
||||
"query": "mid=20",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "pages/read/read",
|
||||
"pathName": "pages/read/read",
|
||||
"query": "mid=1",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
210
miniprogram/yulan.html
Normal file
210
miniprogram/yulan.html
Normal file
@@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>代付页面预览 - Premium FriendPay</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<script src="https://unpkg.com/lucide@latest"></script>
|
||||
<script src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
|
||||
<script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
|
||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;900&family=JetBrains+Mono:wght@700&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Inter', sans-serif;
|
||||
background-color: #050505;
|
||||
color: white;
|
||||
margin: 0;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
.font-mono {
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
}
|
||||
@keyframes pulse-slow {
|
||||
0%, 100% { opacity: 0.3; }
|
||||
50% { opacity: 0.6; }
|
||||
}
|
||||
.animate-pulse-slow {
|
||||
animation: pulse-slow 8s infinite;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
<script type="text/babel">
|
||||
const { useState, useEffect } = React;
|
||||
|
||||
// Simple Icon component to wrap Lucide
|
||||
const Icon = ({ name, className }) => {
|
||||
useEffect(() => {
|
||||
lucide.createIcons();
|
||||
}, [name]);
|
||||
return <i data-lucide={name} className={className}></i>;
|
||||
};
|
||||
|
||||
function App() {
|
||||
const [viewMode, setViewMode] = useState('payer');
|
||||
|
||||
const content = {
|
||||
payer: {
|
||||
title: '帮他付款',
|
||||
productName: 'AI 提效实战课:从入门到精通',
|
||||
productDesc: '第 123 场直播回放 · 包含所有课件与实战案例',
|
||||
requesterName: '好**',
|
||||
requesterMsg: '“ 这门课对我很有帮助,希望能帮我代付一下,非常感谢! ”',
|
||||
amount: '199.00',
|
||||
buttonText: '立即帮他付款',
|
||||
buttonIcon: 'credit-card',
|
||||
},
|
||||
requester: {
|
||||
title: '找朋友代付',
|
||||
productName: '3000万流水如何跑出来 (退税模式解析)',
|
||||
productDesc: '深度解析企业退税合规与流水结构优化',
|
||||
requesterName: '你自己',
|
||||
requesterMsg: '分享给好友,好友打开后即可为你完成支付。',
|
||||
amount: '299.00',
|
||||
buttonText: '发送给好友',
|
||||
buttonIcon: 'share-2',
|
||||
}
|
||||
};
|
||||
|
||||
const current = content[viewMode];
|
||||
|
||||
return (
|
||||
<div className="min-h-screen flex flex-col relative overflow-x-hidden">
|
||||
{/* View Switcher */}
|
||||
<div className="fixed top-6 left-1/2 -translate-x-1/2 z-50 flex bg-zinc-900/80 backdrop-blur-xl rounded-full p-1 border border-white/5 shadow-2xl">
|
||||
<button
|
||||
onClick={() => setViewMode('payer')}
|
||||
className={`px-5 py-2 rounded-full text-xs font-bold tracking-wide transition-all duration-300 ${viewMode === 'payer' ? 'bg-[#14b8a6] text-black shadow-[0_0_15px_rgba(20,184,166,0.4)]' : 'text-zinc-500 hover:text-zinc-300'}`}
|
||||
>
|
||||
代付视角
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setViewMode('requester')}
|
||||
className={`px-5 py-2 rounded-full text-xs font-bold tracking-wide transition-all duration-300 ${viewMode === 'requester' ? 'bg-[#14b8a6] text-black shadow-[0_0_15px_rgba(20,184,166,0.4)]' : 'text-zinc-500 hover:text-zinc-300'}`}
|
||||
>
|
||||
发起视角
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div className="max-w-md mx-auto w-full min-h-screen flex flex-col relative">
|
||||
{/* Navigation */}
|
||||
<header className="px-6 py-8 flex items-center justify-between sticky top-0 bg-[#050505]/60 backdrop-blur-xl z-10">
|
||||
<button className="w-10 h-10 flex items-center justify-center bg-zinc-900/50 border border-white/5 rounded-full hover:bg-zinc-800 transition-colors">
|
||||
<Icon name="chevron-left" className="w-5 h-5" />
|
||||
</button>
|
||||
<h1 className="text-sm font-bold uppercase tracking-[0.2em] text-zinc-400">{current.title}</h1>
|
||||
<div className="flex items-center gap-2 bg-zinc-900/50 border border-white/5 rounded-full px-3 py-1.5">
|
||||
<Icon name="more-horizontal" className="w-4 h-4 text-zinc-500" />
|
||||
<div className="w-[1px] h-3 bg-white/10" />
|
||||
<Icon name="circle" className="w-3 h-3 fill-white text-white" />
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main className="flex-1 px-6 pb-40 space-y-8">
|
||||
{/* Product Hero Card */}
|
||||
<section className="relative group">
|
||||
<div className="absolute -inset-0.5 bg-gradient-to-b from-[#14b8a6]/20 to-transparent rounded-[2rem] blur-xl opacity-50"></div>
|
||||
<div className="relative bg-zinc-900/80 border border-white/10 rounded-[2rem] p-8 overflow-hidden transition-all duration-500 hover:border-[#14b8a6]/30">
|
||||
<div className="absolute top-0 right-0 p-6 opacity-10">
|
||||
<Icon name="info" className="w-12 h-12" />
|
||||
</div>
|
||||
|
||||
<div className="space-y-4">
|
||||
<div className="inline-block px-3 py-1 rounded-full bg-[#14b8a6]/10 border border-[#14b8a6]/20 text-[#14b8a6] text-[10px] font-black uppercase tracking-widest">
|
||||
订单详情
|
||||
</div>
|
||||
<h2 className="text-2xl font-bold leading-tight tracking-tight">
|
||||
{current.productName}
|
||||
</h2>
|
||||
<p className="text-zinc-400 text-sm font-medium">
|
||||
{current.productDesc}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="mt-10 pt-8 border-t border-white/5 flex items-center justify-between">
|
||||
<div className="space-y-1">
|
||||
<p className="text-[10px] uppercase tracking-widest text-zinc-500 font-bold">应付金额</p>
|
||||
<div className="flex items-baseline gap-1">
|
||||
<span className="text-[#14b8a6] text-lg font-bold">¥</span>
|
||||
<span className="text-3xl font-mono font-bold tracking-tighter">{current.amount}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-12 h-12 rounded-2xl bg-[#14b8a6]/10 border border-[#14b8a6]/20 flex items-center justify-center">
|
||||
<Icon name="arrow-right" className="w-5 h-5 text-[#14b8a6]" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Requester Info */}
|
||||
<section className="bg-zinc-900/30 border border-white/5 rounded-3xl p-6 space-y-4">
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="w-12 h-12 rounded-full bg-gradient-to-br from-zinc-700 to-zinc-900 border border-white/10 flex items-center justify-center shadow-inner">
|
||||
<Icon name="user" className="w-6 h-6 text-zinc-400" />
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="text-sm font-bold text-zinc-200">{current.requesterName}</h4>
|
||||
<p className="text-[10px] uppercase tracking-widest text-zinc-500 font-bold">发起代付请求</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="relative">
|
||||
<div className="absolute left-0 top-0 bottom-0 w-1 bg-[#14b8a6]/30 rounded-full" />
|
||||
<p className="pl-5 text-zinc-400 text-sm italic leading-relaxed">
|
||||
{current.requesterMsg}
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Security Badge */}
|
||||
<div className="flex items-center justify-center gap-2 py-4">
|
||||
<Icon name="shield-check" className="w-4 h-4 text-[#14b8a6]/60" />
|
||||
<span className="text-[10px] uppercase tracking-[0.2em] text-zinc-600 font-bold">
|
||||
安全支付保障 · 资金由平台托管
|
||||
</span>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
{/* Floating Action Bar */}
|
||||
<footer className="fixed bottom-0 left-0 right-0 p-8 z-20">
|
||||
<div className="max-w-md mx-auto relative">
|
||||
<div className="absolute inset-0 bg-zinc-900/80 backdrop-blur-2xl border border-white/10 rounded-[2.5rem] shadow-[0_20px_50px_rgba(0,0,0,0.5)]" />
|
||||
|
||||
<div className="relative p-3 flex items-center gap-4">
|
||||
<div className="flex-1 pl-6">
|
||||
<p className="text-[10px] uppercase tracking-widest text-zinc-500 font-bold mb-0.5">合计</p>
|
||||
<p className="text-xl font-mono font-bold tracking-tighter">
|
||||
<span className="text-[#14b8a6] text-sm mr-1">¥</span>
|
||||
{current.amount}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<button
|
||||
className="bg-[#14b8a6] hover:bg-[#0d9488] text-black font-black px-8 py-4 rounded-[1.8rem] flex items-center justify-center transition-all shadow-[0_8px_20px_rgba(20,184,166,0.3)] active:scale-95"
|
||||
>
|
||||
<Icon name={current.buttonIcon} className="w-5 h-5 mr-2" />
|
||||
<span className="text-sm uppercase tracking-wider">{current.buttonText}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{/* Ambient Background Effects */}
|
||||
<div className="fixed top-0 left-0 w-full h-full overflow-hidden pointer-events-none -z-10">
|
||||
<div className="absolute top-[-20%] left-[-10%] w-[80%] h-[60%] bg-[#14b8a6]/5 blur-[150px] rounded-full animate-pulse-slow" />
|
||||
<div className="absolute bottom-[-10%] right-[-10%] w-[60%] h-[50%] bg-[#14b8a6]/5 blur-[120px] rounded-full" />
|
||||
<div className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-full h-full opacity-[0.02] bg-[radial-gradient(#fff_1px,transparent_1px)] [background-size:32px_32px]" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
const root = ReactDOM.createRoot(document.getElementById('root'));
|
||||
root.render(<App />);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -199,15 +199,17 @@ func GiftPayDetail(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// 发起人昵称(脱敏)
|
||||
// 发起人昵称与头像(完整展示)
|
||||
var initiator model.User
|
||||
nickname := "好友"
|
||||
if err := db.Where("id = ?", gpr.InitiatorUserID).Select("nickname").First(&initiator).Error; err == nil && initiator.Nickname != nil {
|
||||
n := *initiator.Nickname
|
||||
if len(n) > 2 {
|
||||
n = string([]rune(n)[0]) + "**"
|
||||
initiatorAvatar := ""
|
||||
if err := db.Where("id = ?", gpr.InitiatorUserID).Select("nickname", "avatar").First(&initiator).Error; err == nil {
|
||||
if initiator.Nickname != nil && *initiator.Nickname != "" {
|
||||
nickname = *initiator.Nickname
|
||||
}
|
||||
if initiator.Avatar != nil && *initiator.Avatar != "" {
|
||||
initiatorAvatar = *initiator.Avatar
|
||||
}
|
||||
nickname = n
|
||||
}
|
||||
|
||||
// 营销:章节类型时返回标题和内容预览,吸引代付人
|
||||
@@ -224,17 +226,18 @@ func GiftPayDetail(c *gin.Context) {
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"success": true,
|
||||
"requestSn": gpr.RequestSN,
|
||||
"productType": gpr.ProductType,
|
||||
"productId": gpr.ProductID,
|
||||
"amount": gpr.Amount,
|
||||
"description": gpr.Description,
|
||||
"sectionTitle": sectionTitle,
|
||||
"contentPreview": contentPreview,
|
||||
"initiatorNickname": nickname,
|
||||
"initiatorUserId": gpr.InitiatorUserID,
|
||||
"expireAt": gpr.ExpireAt.Format(time.RFC3339),
|
||||
"success": true,
|
||||
"requestSn": gpr.RequestSN,
|
||||
"productType": gpr.ProductType,
|
||||
"productId": gpr.ProductID,
|
||||
"amount": gpr.Amount,
|
||||
"description": gpr.Description,
|
||||
"sectionTitle": sectionTitle,
|
||||
"contentPreview": contentPreview,
|
||||
"initiatorNickname": nickname,
|
||||
"initiatorAvatar": initiatorAvatar,
|
||||
"initiatorUserId": gpr.InitiatorUserID,
|
||||
"expireAt": gpr.ExpireAt.Format(time.RFC3339),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -307,12 +310,23 @@ func GiftPayPay(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 唤起微信支付,attach 中 userId=发起人,giftPayRequestSn=请求号
|
||||
// 注意:必须使用代付人(payer)的 openId,微信会在代付人手机上唤起支付
|
||||
attach := fmt.Sprintf(`{"productType":"%s","productId":"%s","userId":"%s","giftPayRequestSn":"%s"}`,
|
||||
gpr.ProductType, gpr.ProductID, gpr.InitiatorUserID, gpr.RequestSN)
|
||||
totalFee := int(gpr.Amount * 100)
|
||||
if totalFee < 1 {
|
||||
c.JSON(http.StatusOK, gin.H{"success": false, "error": "金额异常,无法发起支付"})
|
||||
return
|
||||
}
|
||||
ctx := c.Request.Context()
|
||||
prepayID, err := wechat.PayJSAPIOrder(ctx, req.OpenID, orderSn, totalFee, "代付-"+gpr.Description, attach)
|
||||
if err != nil {
|
||||
openIDMask := req.OpenID
|
||||
if len(openIDMask) > 8 {
|
||||
openIDMask = openIDMask[:4] + "***" + openIDMask[len(openIDMask)-4:]
|
||||
}
|
||||
fmt.Printf("[GiftPayPay] 微信统一下单失败: orderSn=%s openId=%s payerId=%s initiatorId=%s err=%v\n",
|
||||
orderSn, openIDMask, payer.ID, gpr.InitiatorUserID, err)
|
||||
c.JSON(http.StatusOK, gin.H{"success": false, "error": fmt.Sprintf("支付请求失败: %v", err)})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -37377,3 +37377,37 @@
|
||||
{"level":"debug","timestamp":"2026-03-16T20:40:41+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 250\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Mon, 16 Mar 2026 12:40:41 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 08C9F4DFCD06108C0618F9CD8C5820ACB71928858705-0\r\nServer: nginx\r\nWechatpay-Nonce: 0ea065e9db8e2ec176b8835f2d04d077\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: x2PLZYOk/TyQvPTkrvIVQ7kfCTkveZNJWwzmjTaNnDMOf/pN3hmE4DgCB0v8D+gi1kONfgXKs+CkSYwwDHcmp6g8L7svBwuh73r+KifbxHqtGUeGxlojFXp2f5V1k1O1Vw4oTx7H3ScD7xGU5LfD0oCxDuvxrWHokJTLTvn0202Xmo8kQK5Su743yWFzlHRhPth7wGbXFhUJN/Hf+XYZj1AfoQLbV9RQ19bwDQSLcU/D5FR20t2eoeN+zuke86ilRB9Iu2Fkg+Y6kaB1vUkWBOPdpM3RNSib9hGAPw8cQLgPtiB+9X8P2nudZRI1Z0xA97aIDPTOe4g/hd62A9EW0w==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773664841\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":1000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260316201604369600\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-16T20:45:41+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260316201604369600?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"MqKTL5iJVhTUOxerBJaZQKfjCwUBJvyP\",timestamp=\"1773665141\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"iC1c5SII/LZ+mtQwmealvkfpsl+OoJmuGMSBfaPXDKEyuQIfS5tRlkcgKwhbmhCrIkhg5yn/CWEMJS/SaoPoeFFjyAjHqZnP62c/6aintpAidSWotl6gBHaDMrZtGS6pjCWBS4a4WK4z9DmWUWQmD+2Y8UlW8vRWlb7Mw5h8gF89jODXmUZVULU+B3N5Obyh7QZxTe7kF4F2f4idLU0IG60Af22GXVQgBwcgDxAzS6LjA8J+b+nukGnocCShPW3E6wHuiVCEBTgdPsL9UzEsZZ18QDOnhaRrKr0M61fhu3zHl0us7hAm7gmvVx8u0jbLLY4HBeize/lYDHyuPy/PBQ==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-16T20:45:41+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 250\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Mon, 16 Mar 2026 12:45:41 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 08F5F6DFCD0610F00518EDCEC6AF0120D0CC0328F98203-0\r\nServer: nginx\r\nWechatpay-Nonce: d8eb54411d008bf5e8475a2cea097e5f\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: CMN50U/sTH8XZteWf/HWHcl3lLEofefrIMwF0K3PAIJi/to1UZnTAqNIH4IfTKFaaV1JPvQnXLAD3lTycMeZQbGZK6H90iIIRDhFDgFrZyjoOutXY6K64Tljgk70YU71fMq9uWPHsGQDr9gmkYA/GDbY0cvGXBmlHdAQJZ7xT5WsPABMwsTcgEV7mb4lT8M8y9HfxXdAQBH5P7Td8G3k5NgFSqWqv8fcHmDfbhMn4bb94C1uLKElOJ0OIBIRoex62hJoQv+hB9vubRwAdIQInwvczM0uHMfZkdJYDI/ktqZIEN4ICuoSQxfBa/+B8XaKTyANK4jbG8JiPG+wPS8E3g==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773665141\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":1000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260316201604369600\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:56+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317141918095736?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"eSkcUKvtVNVg1JS2wzI0pyZ3EOdOnD98\",timestamp=\"1773730075\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"SKHSogX4C6H/+cli0eqWmLtQGt22tIBLomOq7V4xFj3YA4GN3FM3m3kf2dhC9Oqb/Lj4xalMd9TgBA3dfzYKUp7bzmTz2XouE3Ec1wwzJsjXbLoUI0RHbVYxXujFES8z/lAl5o9FEAjwd2YOIkKyzYRL5YibXTktiCjbyslzqo78OjF2OBWj24nHZRErsDDTlzFdJq54xI8sviL61IZMIMdLz3gOjDqlK+4hUxwc97/KEmr7XAFGzIXbXJfwGKlSMZ4SNWNAyzOLWdyZolSnBmECmaUenwyEfQuxmlUm303cb3Tl9GyDU+9tUFL3ZNWg9xHazuEFd1dT7XC2340gcA==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:56+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 252\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 06:47:57 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 089DF2E3CD061096011894CDC05520F0930328FB8B02-0\r\nServer: nginx\r\nWechatpay-Nonce: c9d402241bed76375c22b89115573dd4\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: aV8ovudVySABjxMc+6AC0qWdVuEMT8DdHD0o14kTX9AY41ZS3Xn2WxrYRQnjQQTcffqWu8PfU9X2PKyTdDdDCAx0Ux5khConG3WqMAoqblrme0accGMXP8i69Xz9bX3gb2MpNgT5gF7v8d12EinRhMPjigGYTb6y810GzBFcRiuLqlL6OTpf7JoPJksWaffC+yigK/32LmnnYW5qbPdTbuEDRdSfzflNa5LLFonDGGvrTdeRxu6cypDip9zb/5MynDZQSxOaHa4LpadXKUx7rKLfJ79KGwvDVudUtodXBCrUXDnG/934YcxmwQZqphQ/ThldqShE1/lke5WVyNqEow==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773730077\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":198000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317141918095736\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:57+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317141927563975?mchid=1318592501 request header: { Authorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"XEbZZrYGyhwW6U0lGwbSScpgHCFF7hoU\",timestamp=\"1773730076\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"D110yx9T2AWNYl1mxb4CyEXmBRsMzhO43/IgQ0M2PPtW3i96+43aT1wWLL83KikmxTMS0baij4O20uCwVWrcq+uT/AJCfW/pMFMnuqjgI/oUSAQfigY8Le/a8f/JXTqnuLqRx4SfzUJjTVNf4mFmsKRrI4jJIRJjZ8uSmory8wMFTUAushy3ytiEpKiELx8aRBXWa5ZBQRPW6FSC5gwxiRj3WR94LinOX9ixKx13fu+UnriwkNcdZ3ryC7l+Q178dT9S6mNbSeloMmO5AUbRjA1NyJdqdurHAtjbVxXPlGupqni2Cad227gxe9QkOSdqYXQq+OHB8biZxAKlQATFoQ==\"Accept:*/*Content-Type:application/json} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:57+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 252\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 06:47:57 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 089DF2E3CD0610A70418C6CEC05520BCDB0528DDB701-0\r\nServer: nginx\r\nWechatpay-Nonce: b9cf062a32b1663bb63eb6b2c7daac82\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: hc7a8Bsd34E/jC4p4Qy0clJpwqcGNqXT+S37Ft1K38Rul9k1QNdoP0LFmFXvsuLjycQlqKSGc3sgzNds978LXxttBcachfS79fKlD7+y6/lVJjmd7dr5H2bT0lPfueSXS9KvDbOs9GG+ChGCCHIuE+iLIBvEocmDHVTraptmeTtLXgCLoRXWT0LZrTLo7vjwbmInAsxAThnsXcEsJD+2Vp+AcYLcNIjyl8NygINAmGmIkT7SyeTOt40i2URN+YPZN+LNLMhtKwP8WZVjzWC6RkqH/q+nzlJBJWtaH5hlXj7l7NI0hgNcPqRESO6OrdGxJWVI4W9k+l1eU1B7qo5Jeg==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773730077\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":198000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317141927563975\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:57+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317142043057925?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"s6Ul3OOWAj0jWqr7msNUa4rELYAOLePq\",timestamp=\"1773730077\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"1Hsm6QE9wvhmMBI1dWo9EfthV9LWMuKiqfuUXnD8qi+fbZYohEXkGVyAEPrphXICqNnc23ZbmbqOn+U3I2HdNT/WajOrPJzkvOoJHmc0fVBfLe1SMrgCeQunfazenhe3aVh1OVu9ssaT/rOOEc06Z9bYE/qQ7zPH2gfxjHdO8Lv4T/Oy/7vaV+jZh9Bb07l4CccsrVQ3tcfBLchcEG7GaJe53cCpq5kOVBl1LrL4/rD9fxKFfF0WCeb8qLcgtFMPWa4zM3AyNPzTpSnbNZOXjYEquhi3lFmt/zKPh8K0D5zLSL37mnJX146se2fmV4n35hXKX6ZmdzPsBeWf80+HCQ==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:57+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 252\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 06:47:58 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 089DF2E3CD061091071895CCC05520C2930628DEF903-0\r\nServer: nginx\r\nWechatpay-Nonce: 43baf852c87317c448ee51b35352ed33\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: xqTPPBvHLmMFYOnMKF4yik19yjrM12CCjf8QiQAXHyzk7p5coCqufw8j/aAcmF/qkk56sHsCLIYNcLh4udMXbVPDgoqZACIsP8sSmdqwQvD0+0+ziSE9BWPQ734wedfBWwbF+6SWXohMey3VyT+HxlNwtbm7Hsvnu1tOuh0MurgC6Tb6uM94KXW7ykZ4x/CbGsMrvOxW2R2e2tEhkjaKvDSXhHGa4EqFNnqigXh6NR/c0ysosTMeTWVRZfzv6sdQ2+aB2Nx0ACkVL6TY5yoYCKkFb3R4pHcc8yz8tyBhUKz5Ol38SGh5Y0r6ZUzOpdM7M6PWT+JKsqNwDOQfuYjFqQ==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773730077\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":198000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317142043057925\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:58+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317143039745576?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"wkSnuFuDK9dUaIkhKJ6DNgLRGURc8vHg\",timestamp=\"1773730077\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"KNaTHJ7IcDqt/9IhGX/R/Lq3cJ5mhcV/KBWRfK6JPedmwQFlqwBjLEnCwu53RHdy7PjDcRjKsY/KEJiQEVBEleldb5SjrjWYqPbkK0VwzvTxZbJ3Za2BU2bnM70uxYE9efoIqqhoO1Rzcve3g4bC6Keex3W3nPqx+W0Z9Gt8FAQTWB5e+kcgLtFS30xmag817RyXGemPvggJeIERKpClDJAT5jQuQNGNVe38ZB0UB8rUmjPWs1mxWXl3lqr2lpcnSGMbbWDIjvPMZSPB8d0s7adbAKQwT/xtWxBE0yZnf4d+7zoKw+aBpGQoW1Saz/M5nIfzI7RQZpqgfnmJ0ENZiA==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:47:58+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 252\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 06:47:58 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 089EF2E3CD0610B10218C6CAC05520B4CA0728F0B903-0\r\nServer: nginx\r\nWechatpay-Nonce: c81269920a16953d79d4f77b640fbe08\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: TR27ZPH6XPYABcmZcIe9KydewOtIhLA9Vty2Ez1aZnDule3+vFrXOd3bUFjspm7VNoqMTmLddWlUm7bVFornsqQwnZBgQJdnH9NoOe484eRUxr1hpTYLLM2ZjOOTCia5KtgYM+HuAOQ7oO1tWnCb7E+gkGyCOpW5/9793vUaqI1YVp8nqlpZQc5jav1BBVXpXn37hBZ6PNIEYhrUIpXtLdJGun24BJMhhPBDtnWiEYGV6wLpwAYp7RcSYMG8Vs+tIvalpctWU01UpKULynuHzJrUfJ2AMF5VhkmF6HkzwCUOY0KmAFoNqiwjnAUABjO1GyQtzj0Ax6oXuyR6KtnhZQ==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773730078\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":198000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317143039745576\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:52:56+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317143039745576?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"zso5b5jdBUudyF0kq48HfaLz1LlyRPwi\",timestamp=\"1773730373\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"C2TfV9oJkhNwd3D8hVi+yR7wWRC3OzclpmQiVgQta857rPJNTUqYB9QAFiptfU3xTleyHLu/nD0g7eF2a/4YeIfAZ3n5qoTOyzYfykQDQW4Ulnzb9tDLBM6Pd9cBGmdFk7nWY7eREjCH5JRGe8UtPqGSrfWMWH+tEAS5j+OCV3O2CGGP2C1g4ZBz3u4mUeNuwr0O/wr9pHRkuCkgeFTfqF7vbrtwnmrNK3JTVjorWB8crBMw1r8HG7HDVj/2Tyb9KYSARZfCN1N02N7vr2VX1h3COZlRwyOUNLzpMGLaANw4ojb1GzbDNXHK5ZfN2xwDZ9eotkeUbJQWJlGSTBaOpg==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:52:56+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 252\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 06:52:56 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 08C8F4E3CD0610EA051891D38C5820B4DB0728E17-0\r\nServer: nginx\r\nWechatpay-Nonce: b146ca0ab1773f6cbd82cc81b3842d13\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: PbpyIOvbUOQomJzSkepcrI8DfKQs1MlUWsxxOMfnHAf8ViUlcOcTiYVZDyYdst+uksV11axCjsA+oRZ/HvUxT3LHbDlKHpdJiQfjU1nOjFpeEHd4JOKxno0vqI9cxGVdSvY6grRZYWpkosx2hOO77MW9YwMCNOIcH0304haqhnwxtyxvXwFe2Qzo6HBz4Rf3aZdSwIFa0fVIp+SaKMBuH3s2/vYduvwK6MlrjU65cNBdI+1A2TDlnvmm4Af5eOyU8lwmoW+o32YrUKUOLZJ/9uZE0koA1tllMKiUdd21lrX+SjCU2qI2QNcm0UPoUGGJU+oKsOA0TVY5ImonnPn4wg==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773730376\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":198000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317143039745576\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:57:53+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317143039745576?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"6sCCEAdmmYyTfBJjW653de2JeFWWW6Uy\",timestamp=\"1773730673\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"faxQPJhV5ASs4YrCzCSg8X6n0N7UIXkJGPAeA3Go8X1U8uBGJSRz5b6er36Lu3klP6tBXj24gtsi5gCfZ2xreKATvFbqiBq+xoTy5E1TGuCltt4ntKCfi+2czGQLiLUlhuN4ezmnP01IBh7UVfS5ZeXJVYjKAG3Dyak3e+OWEd6T5wNhDJylepgtShWd6Qk05soQ8j9lATR5ri2wvOHPaBSMTG5Omyx1adcN5qz2Fr++RyteylM+vXeZacgUAWeN9BnJ4J8MOZZXbxYImt0ontynyo07YeZ09hTtTATrAoSWAdwtLJ4XdH9YY7l0J5C3BHEv8cxD0wllAE9pARpv8Q==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T14:57:53+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 252\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 06:57:53 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 08F1F6E3CD06109C0518BBCCC05520B8C50528F5CA05-0\r\nServer: nginx\r\nWechatpay-Nonce: 758bc196e33bfdfd42da028b0ca7c61f\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: RpxrUp3ns0+LdSxMmnh77GDW21wjVBdcUMLK42ZBPcQsGHPJsSs7NU7F2CaZmRzQqFaygYwLdszlSApeMlYZ59EAJUyH1Sxof6f6DJrnFVqIGSDb4yShy7gAQSo34r3HK9bNwpM0ZT8/Z9H5y2K0VXihb8v7KF4mnUlBeYVeYJGP75Bxuk3rDQFj53LPTf0b3yoRyq3Fyvzo7mGACVq6w5iYBe4v60eaRqIXO8upwhFCcL2nubg1qSEobm7/BDZvi6GogxUbp+Nf0yI2fyvPfNOB8l+F//WKOi1mZVk3eEr7xLifzBGhvIwwHk6NJ5jan73aPt2jrRfkaPlp3rPSew==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773730673\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":198000},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317143039745576\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:09:00+08:00","caller":"kernel/accessToken.go:381","content":"GET https://api.weixin.qq.com/cgi-bin/token?appid=wxb8bbb2b10dec74aa&grant_type=client_credential&neededText=&secret=3c1fb1f63e6e052222bbcead9d07fe0c request header: { Accept:*/*} "}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:09:00+08:00","caller":"kernel/accessToken.go:383","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 174\r\nConnection: keep-alive\r\nContent-Type: application/json; encoding=utf-8\r\nDate: Tue, 17 Mar 2026 07:09:00 GMT\r\n\r\n{\"access_token\":\"102_MFN_iXDUE6Y_1nmZqAauZyeFh2lqxOJ_waRwOEW9Pe818HGHFCGmqFGeFw9C7tusvB2X5r9J0NjWq6rrfpBkPLD7xcfr6iiBrFuVWoMu_xQlUvctvcsj_El_zxMNCWgACADSM\",\"expires_in\":7200}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:09:00+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.weixin.qq.com/sns/jscode2session?access_token=102_MFN_iXDUE6Y_1nmZqAauZyeFh2lqxOJ_waRwOEW9Pe818HGHFCGmqFGeFw9C7tusvB2X5r9J0NjWq6rrfpBkPLD7xcfr6iiBrFuVWoMu_xQlUvctvcsj_El_zxMNCWgACADSM&appid=wxb8bbb2b10dec74aa&grant_type=authorization_code&js_code=0a3WAaGa1ohSnL0zDnGa1DtgtZ0WAaGa&secret=3c1fb1f63e6e052222bbcead9d07fe0c request header: { Accept:*/*} "}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:09:00+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 82\r\nConnection: keep-alive\r\nContent-Type: text/plain\r\nDate: Tue, 17 Mar 2026 07:09:00 GMT\r\n\r\n{\"session_key\":\"pNs23gZmdItJE+RPYTuRrg==\",\"openid\":\"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:09:00+08:00","caller":"kernel/baseClient.go:457","content":"POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"xajkQxt3S8yOJU67dxlipOnloDepv4Sx\",timestamp=\"1773731340\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"I5H5nb7hE7nTAtPyFtyzCJ/ADxtShSS9obpW2M0nusC0Caxjl0tcxcilCSoeHIGfQrjdl344S2rkPVHUYThGbADrAcSLFeSjgyH3Ci3+X4h0B3Pvo7k9drJVTPZ2zjzBwN+W/uGBnqL5rlKQGBC2TL/FF/OhE+oS2oe4GQWLAWQwXn3R8ao49lOiebJCocXN/24aqWSYq51PatsBipvZOFE7De7s1EnNyHLlXz/saDHBqF38Ri84yhTWb9VB2Cp3R5moLWYrcp25bpey1XROp7US9JRnSLab1ZaQ4mp8QYyEO+5tRFe9gBJsvLqKxqDDgiFWcsL2hEDz0E6C23FIzg==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:09:00+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 400 Bad Request\r\nContent-Length: 204\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:09:01 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 088DFCE3CD0610810218C0BB8C5820E2E63B28A4B404-268435462\r\nServer: nginx\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"code\":\"PARAM_ERROR\",\"detail\":{\"location\":\"body\",\"value\":132},\"message\":\"输入源“/body/attach”映射到值字段“附加数据”字符串规则校验失败,字节数 132,大于最大值 128\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:10:15+08:00","caller":"kernel/baseClient.go:457","content":"POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"TEULcMJmgK476DrNyruFKk8seC1ym5XX\",timestamp=\"1773731415\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"0GgN5yhR1z2tlu058ymsRQcfbKWaPLg5OxxJM/i0KQIgw2RVWq9LjQylffRusN01fFju3d0/SeEvU3V3VLLxKzo3Xs3t0KCumC44ukgGqaK/dpsplsNvl+1bNeBRoD9JjDVoD84YF7wzk4zEPIfHkGF2+ni4bowxcpGLtfaAfXKqGB1A+880D5LkFVcrf6t/JJFKZLDzzX8SFEIJYkPTDEPMUBkUhAl7ynOLE3O5a7iNfBaaL1dEhNhU9vvy4WJoRknNStroL7O+LprF9pdc+91Ps7fpioC3hCaHwFJaddrShSQjJrosZB5lfJS1Vf2wMPBps1rsniVtLtBTPmlmIQ==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:10:15+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 400 Bad Request\r\nContent-Length: 204\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:10:15 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 08D7FCE3CD0610D605188FBDC05520BCD50328ADB904-268435462\r\nServer: nginx\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"code\":\"PARAM_ERROR\",\"detail\":{\"location\":\"body\",\"value\":132},\"message\":\"输入源“/body/attach”映射到值字段“附加数据”字符串规则校验失败,字节数 132,大于最大值 128\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:10:59+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317150900807700?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"l57GWTECCCf6qQnmmYQl51t4K2tAf51n\",timestamp=\"1773731458\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"dnS0dgTYBSHj8sajn/ctT/yXZcZlEsl4g+d4cbMfzaBQl/41AnTD+o2rJMAFMYEUTIj+R4WFUdj2deb5xDhntL7niUBI9D42rZq3cBXeriMslqyf/mjGbKxCmjWFFCPhAejFOnP43a9RlH6x9TLYJyg3L26YSS5GkS5IYIRD7PDe8iT7V8bJ3XH3Kpu+ru9aqktQATI0orvFuM3/ReaeyCQRwGw63TjCKICLhUJz7WzLOZxxugJtvwuKAgaGAxJXnS8k2adqCZySLUS0Cd6CnW3hlbm438dL3Sss6YHP2MX6VLxdlNOP9eAfzdlHwW1UwAYQ047g6hTQEQOrxcnw7g==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:10:59+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 404 Not Found\r\nContent-Length: 54\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:10:59 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 0883FDE3CD0610AF0418DCE6F8AF0120EEB80228AC46-268512771\r\nServer: nginx\r\nWechatpay-Nonce: a0d44ebf0abdaa6debf5e35b1324fc1a\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: KB3/0fn388IBG+x9e2ZtJWAz1m0N0ItRCsrQWb6DeSBA+FNTJGJewjA8cI7RWBzg2HPVoKPnLoQNLec5kkgs/TIqoBEKx64U/FM50r9st44b0/VaVxuofL1OCslJbeEwva7VQnOaozMGGyY3vqi8w/pyRoFX3vp7DRCMyWaRrBveSf14aRpCryjfx/RdQVsp6kzkKUOapwsbT7P0JpJMr0mEZw0+XGI8VjPontrcljcBFFsCTkHUfOPUlMfCy0oNnuBiY9ng5mBcbDgd0XA58cjYXFfyrR/bqQSJshxRnmTjvL7fLM06uHDqqo20/XhYQwaCYgqbU476Hm8hK0j1Jw==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773731459\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"code\":\"ORDER_NOT_EXIST\",\"message\":\"订单不存在\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:10:59+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317151015445600?mchid=1318592501 request header: { Authorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"P3S83WiVX3HTF6md82aSw0BvLn4Mt2Xi\",timestamp=\"1773731459\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"gMBnZdYqCTJtRbr00WhlYjgV2f2no3vj7xHJYGUP9ZBM/ANP3Z92EX7Kwq3SpcbYGIzu7p22LpS18yPpR7U+oVljLGLtGenD7mnWIYNntOfOcvZ5ysvNWaJ7IbR4ZTFgpJo0/UBKFss6duLKGPwFWJtwDsOsY5c61Y0dQ/8WRYRzeeNcWJwH3/fe9vUlHPszBIY1fe2VLcrgb4Z5S6oZVKgqrTmZhz7HQFFaJGRpJIBKwteTtGoLovK6iQJR1MSxbDKzsBgY3Sc60r2LpZ9BALu3nU072axiEIOedtrRECaJHYFV+xlS6pFHWNruCtddQX7w5MTXve2lvWIFljkfMw==\"Accept:*/*Content-Type:application/json} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:10:59+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 404 Not Found\r\nContent-Length: 54\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:11:00 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 0883FDE3CD061087071895C6C05520988B0328C0A402-268512771\r\nServer: nginx\r\nWechatpay-Nonce: 744d0a9e0a4c9f0fa9f0894215b3e08e\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: k4ZbK1oMXKAS84BEaduldSvMr9JSiWTHb2bN/XfLB63vPnGWW4mReUIewbi5XLk11icwExK9x2Qw3JLEDg+tgdBq4HonqYzdaZ3g0M9PKYGuDkLvW0ykfkVh/ZjYOM/G8XrJHo0rnWACwoujSY/ks8N7rJE1gck16+o47wp8yckm4p9vUL4mrKrCTf23fpP8zzNaVjzwoKk+dMcx9XphROti9JIbFIEo13LPdhFXUIDEo2HuWB7ngERE5uCNfoX/TvcYZnfjlezWMeD+OesanV1cWiWxZxAL7cooLR0fx7zSngz5fcUFnzgkEY+IfDXaVB/5x3Fr/6BpyAQCNXmcsA==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773731460\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"code\":\"ORDER_NOT_EXIST\",\"message\":\"订单不存在\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:03+08:00","caller":"kernel/accessToken.go:381","content":"GET https://api.weixin.qq.com/cgi-bin/token?appid=wxb8bbb2b10dec74aa&grant_type=client_credential&neededText=&secret=3c1fb1f63e6e052222bbcead9d07fe0c request header: { Accept:*/*} "}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:03+08:00","caller":"kernel/accessToken.go:383","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 174\r\nConnection: keep-alive\r\nContent-Type: application/json; encoding=utf-8\r\nDate: Tue, 17 Mar 2026 07:11:04 GMT\r\n\r\n{\"access_token\":\"102_gZr1v9Qc3Rw-x0sMtA_xPbRM2IDQK48YHBhNf5UkPYHmFlXkOUCR2mV1oh-FxMT9Z5aP71sQL7wpmnPzQ6Y10E6smg-vt6KQ8LpjWBxZ2ROBFZIjoT2CKDCKnSQCIAjAAAUAS\",\"expires_in\":7200}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:03+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.weixin.qq.com/sns/jscode2session?access_token=102_gZr1v9Qc3Rw-x0sMtA_xPbRM2IDQK48YHBhNf5UkPYHmFlXkOUCR2mV1oh-FxMT9Z5aP71sQL7wpmnPzQ6Y10E6smg-vt6KQ8LpjWBxZ2ROBFZIjoT2CKDCKnSQCIAjAAAUAS&appid=wxb8bbb2b10dec74aa&grant_type=authorization_code&js_code=0e3NOIGa1OgqoL0FZEJa18TimG3NOIG0&secret=3c1fb1f63e6e052222bbcead9d07fe0c request header: { Accept:*/*} "}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:03+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 82\r\nConnection: keep-alive\r\nContent-Type: text/plain\r\nDate: Tue, 17 Mar 2026 07:11:04 GMT\r\n\r\n{\"session_key\":\"x7D9cuDzVCxzCHO2/HSeHw==\",\"openid\":\"ogpTW5fmXRGNpoUbXB3UEqnVe5Tg\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:04+08:00","caller":"kernel/baseClient.go:457","content":"POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"IA6PqVn9UOhVxYmsLRCX1HxzDwl5fBP6\",timestamp=\"1773731464\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"5dLLbE9BkZNjLrv/LKjO0pv8xRXRmu5CFOYFJOAHpi+ux9XSlS0MInHmGPB2VaEIF2OFBbRKlMK+mSJveln+s/1HZ4CyskPDzABGw46BkVQrx5ghMatNYrycjfn+mxP60dWStlgHBFGC1Lqx7U/8GDVxtI3Xdg7s0WwMdmc5ndePZUO3kG7paPW67BvV3YgAYY/4mVMVPZM5hz1Qyul96+SQOPw8N317HVtb08ZrPuvUOcfLu17+6ppZGcwUY5Bm/xpPO8iyr9/L5c5E130f+y1of7nHKJ7u0x5HtJPHAFBS3i8Q7iIU+dLKkGHP06sZkNyThVbavlfmeOchJX6Qpg==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:04+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 400 Bad Request\r\nContent-Length: 204\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:11:04 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 0888FDE3CD0610E00618D2CD8C5820B4981E288BCC03-268435462\r\nServer: nginx\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"code\":\"PARAM_ERROR\",\"detail\":{\"location\":\"body\",\"value\":132},\"message\":\"输入源“/body/attach”映射到值字段“附加数据”字符串规则校验失败,字节数 132,大于最大值 128\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:49+08:00","caller":"kernel/baseClient.go:457","content":"POST https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"It7MEfTWg65exoJdDuBHwIEL0R6eLB4X\",timestamp=\"1773731509\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"Auo9j6vKgQ5XhggSsyq5cbesVTwrjnEXZsUtWXzizjN2xzV2qgItBWl3vcPP/AhMmaR15K3lHX7J9daQxEgXychq7Y49akN9+0pQRfsj6r1Nej9wVNIjS7W8oOnkFZaV0OUHIt0yxWAUFEs2ZrO/dFAHLIG5YNENcqc3xcp37oBIFPYALRB2EG6M3W5Ujo6I+VpyUB3EQ1ewf3bbBMeWuixYTH3JwwoO0vHrFfEvYxvOzQXGutUGfEnWULUeX76+1HkrGugOm5lspdJVOCX3r55YN1A9A3/QUUQul5t0pz/Ws1LxRx+6W7EbL1ynkNSf3BsGGRvG/guJXBoC2HXBKg==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:11:49+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 52\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:11:49 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 08B5FDE3CD0610B50418D8AAC05520C4ED0628CC8C03-0\r\nServer: nginx\r\nWechatpay-Nonce: 3c7de243555486019ee5407a5befc17e\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: E6BMV0sFgHY9cq/I15VUAgmiZJty5KXHl9aSVPEheYnbUcve6J9VN4bqLkYQt2lq6iilE1AifBmGxBjek/XAdixo2RbJ1yiCr9yM+Yxdi3RrgHXYMYURq9QK8gflbIH5GZS7eg+kYKueYPaAIRq1LHAD3aCfnzcD0fq49GlMGOi7bVQw1v6wW3cNy94cJZ5e32VsFmcXXjybe7CxYnLSo4s5kOsdjSRQJiJOSazplDyKHgeqHpflqFO6SkJvROAWOTFJQVYXgylR6Vr/ZEPDPZntiMGqRYpblFoY8wakewOGg+qZKzBW7DUTkmQUK7B8564oD6+E+mebdC0f8HhW3w==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773731509\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"prepay_id\":\"wx17151149756818d4257dcb4e2b83250001\"}"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:17:26+08:00","caller":"kernel/baseClient.go:457","content":"GET https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/MP20260317151148855100?mchid=1318592501 request header: { Content-Type:application/jsonAuthorization:WECHATPAY2-SHA256-RSA2048 mchid=\"1318592501\",nonce_str=\"iXHM3yIdYUhXvQC03FIKemHVDccXRE6r\",timestamp=\"1773731845\",serial_no=\"4A1DB62CD5C9BE0B6FC51C30621D6F99686E75C5\",signature=\"2KL23qFk/Gs8t0qsYz2Xuy5FemFByzUW5uvS39TBcRn6ziT1ANz1T2U2ZxUuiAXRt99ewXC8Pnsu/XZSf6UCP1vqwFFIcrZ3Wz+1FHjdvhPUL8ZIqD5ymCwRZANoZtaPSd3h7C8f4JT+ET+Inn16v7ezyUDY7TdaFCVvhhCy84/NDyvGIw41i2cF+jA4wySEJ15Lg0Tp7sgOglhYdR8tpngN2qIjUsCl1yToDAU3MvKUp3DhKh5HnMGAdSuENCyFEdL0RYU5mqbggtFnlV0WODsORJ+MKrbfvuA4Q0zVZZnF16OWwP2pfJ32RF6U4eFDb07ICI0hrVgKaHq+AAnOCw==\"Accept:*/*} request body:"}
|
||||
{"level":"debug","timestamp":"2026-03-17T15:17:26+08:00","caller":"kernel/baseClient.go:459","content":"------------------response content:HTTP/1.1 200 OK\r\nContent-Length: 249\r\nCache-Control: no-cache, must-revalidate\r\nConnection: keep-alive\r\nContent-Language: zh-CN\r\nContent-Type: application/json; charset=utf-8\r\nDate: Tue, 17 Mar 2026 07:17:26 GMT\r\nKeep-Alive: timeout=8\r\nRequest-Id: 088680E4CD0610FB0218DD9C85AB0120F8DE0528F19905-0\r\nServer: nginx\r\nWechatpay-Nonce: 1179b7f5d9c0211c6769de56735f874f\r\nWechatpay-Serial: 5F2543BF58239A4EB68FA4433DF1438A88B34B16\r\nWechatpay-Signature: VrORKkCkmK8WqBCTWhl0w9Y5rKzRfoDATiKJASSb6qwsctuJqhBdmRZ8IhAyAxM0t7hDCQOvxRxbklVYYlGsYk8Ozsf2VvoH3dBkXlMO8TYMKEkuB/dgQ6VO2fKswvG72dIv6bXfhU+GE8Eu6ENiAfD5eGTjjQAPbFXiJTctcvhggta/vKTPBBnsI47bFWeHzKSVMzkyE+uXpuo97o++TDu/s8C6l+Z+mG/01LE2k4OfvHkXifpARlIyDZr3MQFCGacDniWDr0vqj6Zlaf5PwIZhjEhjcpWbLoSHMSfb6Pt00wunMZLS20m+t/GKYJ3Qz9z3fC+A0Z1j/uS7UJlGVQ==\r\nWechatpay-Signature-Type: WECHATPAY2-SHA256-RSA2048\r\nWechatpay-Timestamp: 1773731846\r\nX-Content-Type-Options: nosniff\r\n\r\n{\"amount\":{\"payer_currency\":\"CNY\",\"total\":100},\"appid\":\"wxb8bbb2b10dec74aa\",\"mchid\":\"1318592501\",\"out_trade_no\":\"MP20260317151148855100\",\"promotion_detail\":[],\"scene_info\":{\"device_id\":\"\"},\"trade_state\":\"NOTPAY\",\"trade_state_desc\":\"订单未支付\"}"}
|
||||
|
||||
Reference in New Issue
Block a user