泥潭日报 uscardforum · 每日精选

云闪付活动取消报名脚本

内容摘要

云闪付活动报名后无法取消,用户分享油猴脚本绕过限制一键取消报名,新回复反馈脚本在不同浏览器下生效情况不一。

1. 关键信息

  • 问题描述: 云闪付活动报名后,取消报名的按钮被前端移除,但后端接口仍在。
  • 用户需求: 隔壁9折活动买满次数后,需要取消当前卡片报名,以便更换新卡绑定。
  • 解决方案: 用户编写了一个油猴脚本,通过调用后端接口 procType: "43"(取消)来实现一键取消当前活动所有卡片的报名。
  • 脚本原理: 脚本监听页面,创建悬浮按钮,点击后获取URL中的 pmtCodecouponType,并携带 sessionStorage 中的信息向 https://marketing.unionpayintl.com/h5Promote/v1/coupon/registFromUplan 发送取消请求。
  • 新用户反馈: 用户Ayanami_7尝试使用脚本后,表示未看到取消报名的按钮,怀疑脚本未生效,且在Chrome和Edge浏览器均无效。
  • 脚本作者反馈: 用户rzjsbbbb表示自己使用的是Chrome浏览器,脚本也出现了问题,表示不理解。
  • 后续尝试: 用户Ayanami_7暂时更换了手机号报名,并计划之后在另一台电脑上再次尝试脚本。

2. 羊毛/优惠信息

  • 无(帖子内容为工具分享,非优惠信息)

3. 最新动态

  • 云闪付已移除活动页面的取消报名按钮(前端限制)。
  • 用户反馈油猴脚本在部分情况下可能未按预期生效,尤其是在Chrome和Edge浏览器上。
  • 脚本作者本人也遇到了脚本失效的问题。

4. 争议或不同意见

  • 楼下用户提问“为啥要取消”,楼主解释是为了更换手机号绑定的卡片,以便继续参与活动。
  • 用户Ayanami_7反馈脚本未生效,rzjsbbbb也表示自己的Chrome浏览器脚本也未生效,显示脚本的普遍性问题。

5. 行动建议

  • 遇到云闪付活动无法取消报名的情况,可以尝试使用该油猴脚本(需确保浏览器已安装油猴插件并匹配正确的脚本地址)。
  • 脚本依赖于获取URL中的 couponnocouponType 参数,以及 sessionStorage 中的 insCodechannelId 等信息。
  • 注意: 目前用户反馈该脚本在Chrome和Edge浏览器上可能失效,脚本作者本人也遇到了问题。如果遇到失效情况,可以考虑更换电脑或浏览器环境尝试,但成功率未知。
原始内容
--- 第 1 楼来自 rzjsbbbb 的回复 (2026-02-08 20:34:15 PST) ---

现在所有活动的取消报名按钮全部都删除了。研究了一下,只是把取消报名的按钮从前端拿掉了,后端接口还在。隔壁9折买mo买满次数后不能取消活动对我来说会很麻烦。。。写了一个油猴脚本,一键取消当前活动的所有卡片的报名。

脚本
// ==UserScript==
// @name UnionPay 一键取消报名
// @namespace http://tampermonkey.net/
// @version 5.0
// @description
// @match https://marketing.unionpayintl.com/offer-promote/*
// @grant none
// ==/UserScript==

(function () {
'use strict';

const API_URL = 'https://marketing.unionpayintl.com/h5Promote/v1/coupon/registFromUplan';

// 1. 解析 URL Hash 中的参数 (处理 #/receiveRecord?couponno=... )
function getUrlParams() {
const hash = window.location.hash;
const queryIndex = hash.indexOf('?');

if (queryIndex !== -1) {
const searchStr = hash.substring(queryIndex + 1);
const params = new URLSearchParams(searchStr);
return {
pmtCode: params.get('couponno'),
couponType: params.get('couponType')
};
}
return { pmtCode: null, couponType: null };
}

// 2. 取消报名逻辑
function cancelEnroll() {
const btn = document.getElementById('upi-cancel-auto-btn');

// 获取并校验参数
const { pmtCode, couponType } = getUrlParams();

if (!pmtCode || !couponType) {
alert(`❌ 无法从当前页面获取参数!\n请确保当前正在活动详情页/卡片管理页面!`);
return;
}

if(btn) {
btn.innerText = "处理中...";
btn.disabled = true;
}

const payload = {
insCode: sessionStorage.getItem("insCode") || "",
pmtCode: pmtCode, // 动态来自 URL
couponType: couponType, // 动态来自 URL
procType: "43", // 43 = 取消
language: sessionStorage.getItem("language") || "zh",
channelId: sessionStorage.getItem("channelId") || ""
};

console.log("🚀 [Payload]:", payload);

fetch(API_URL, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify(payload)
})
.then(res => res.json())
.then(data => {
console.log("响应结果:", data);

// ✅ 成功判断逻辑
if (data.responseCode === "00") {
// 弹窗提示,用户点确定后刷新
location.reload();
} else {
alert("当前活动无卡可取消报名。");
if(btn) {
btn.innerText = "一键取消报名";
btn.disabled = false;
}
}
})
.catch(err => {
console.error(err);
alert("❌ 请求网络错误:" + err);
if(btn) {
btn.innerText = "一键取消报名";
btn.disabled = false;
}
});
}

// 3. 创建悬浮按钮
function createFloatingButton() {
// 避免重复创建
if (document.getElementById('upi-cancel-auto-btn')) return;

const btn = document.createElement('button');
btn.id = 'upi-cancel-auto-btn';
btn.innerText = '一键取消报名';

// 样式:紫色渐变
Object.assign(btn.style, {
position: 'fixed',
bottom: '100px',
right: '20px',
zIndex: '99999',
padding: '12px 20px',
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', // 紫色系
color: '#fff',
border: 'none',
borderRadius: '50px',
boxShadow: '0 4px 15px rgba(0,0,0,0.3)',
cursor: 'pointer',
fontSize: '14px',
fontWeight: 'bold',
transition: 'transform 0.2s'
});

btn.onmouseover = () => { btn.style.transform = 'scale(1.05)'; };
btn.onmouseout = () => { btn.style.transform = 'scale(1)'; };
btn.onclick = cancelEnroll;

document.body.appendChild(btn);
}

// 4. 启动与监听
setTimeout(createFloatingButton, 1000);

// 监听 URL 变化 (兼容 SPA 页面切换)
window.addEventListener('popstate', () => setTimeout(createFloatingButton, 500));
window.addEventListener('hashchange', () => setTimeout(createFloatingButton, 500));

})();```

理论上来说适应所有活动,直到银联彻底关闭换卡功能。

--- 第 2 楼来自 jnnksn 的回复 (2026-02-08 20:40:48 PST) ---

为啥要取消

--- 第 3 楼来自 rzjsbbbb 的回复 (2026-02-08 20:43:23 PST) ---

手机号码有限 这张卡刷满了就取消换另一张卡绑上

--- 第 4 楼来自 Ayanami_7 的回复 (2026-03-27 21:15:24 PDT) ---

image302×347 15.8 KB

e0004f8c43dd0f03c1ded184cfbb7ee0505×1266 65.5 KB

好像没看见如何执行这个脚本 看样子是会生成一个取消报名的按钮 但是我刷新了好几次也没看见

--- 第 5 楼来自 rzjsbbbb 的回复 (2026-03-27 21:17:59 PDT) ---

image768×352 30.7 KB

换个浏览器试试?

--- 第 6 楼来自 Ayanami_7 的回复 (2026-03-27 23:48:40 PDT) ---

不知道为啥chrome和edge都不行 你用的是哪个浏览器

--- 第 7 楼来自 rzjsbbbb 的回复 (2026-03-28 00:07:15 PDT) ---

用的就是chrome。。。我不懂了耶

--- 第 8 楼来自 Ayanami_7 的回复 (2026-03-28 00:09:39 PDT) ---

暂且又找个了手机号报名 等之后换台电脑再试试