战斗包子
记一次帮哥们搭自动api续费网站的经历

记一次帮哥们搭自动api续费网站的经历

先贴仓库 github: jiujiu_server 还是哥们有生意头脑,能想到转卖海外的一些工具,打一个信息差。但是人工处理大量订单很累,就琢磨我能不能搞一个自动化的东西出来。

zfb开通支付权限

产品中心互联网平台直付通

先贴仓库 github: jiujiu_server 还是哥们有生意头脑,能想到转卖海外的一些工具,打一个信息差。但是人工处理大量订单很累,就琢磨我能不能搞一个自动化的东西出来。

zfb开通支付权限

产品中心互联网平台直付通 a 这个需要商户权限,好麻烦,交给哥们去注册资质了

wordpress所需插件

Pasted_image_20240926001357.png

使用WooCommerce插件启用商场功能

使用Wenprise Alipay Payment Gateway For WooCommerce插件启用支付宝

为了避免购物车,使用插件WooCommerce Direct Checkout跳过购物车功能 Pasted_image_20240926002512.png

为了实现页面处输入key的功能,使用插件Checkout Field Editor for WooCommerce

要让用户在 WooCommerce 购买商品时输入 Key 码,并在交易完成后将 Key 码传递给后端 Flask 服务器完成续费,您可以按以下步骤操作。

步骤 1:添加 Key 码输入框到结账页面

首先,需要在 WooCommerce 结账页面添加一个自定义的输入字段用于输入 Key 码。通过修改 WordPress 的 functions.php 文件来实现这个输入框。

代码步骤:

  1. 在 WordPress 后台,进入 外观 -> 主题文件编辑器
  2. 打开 functions.php 文件。
  3. 添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 在 WooCommerce 结账页面添加 Key 码输入框
add_action( 'woocommerce_after_order_notes', 'add_key_code_field_to_checkout' );
function add_key_code_field_to_checkout( $checkout ) {
echo '<div id="key_code_field"><h3>' . __('请输入您的 Key 码') . '</h3>';
woocommerce_form_field( 'key_code', array(
'type' => 'text',
'class' => array('key-code form-row-wide'),
'label' => __('Key 码'),
'placeholder' => __('请输入您的 Key 码'),
'required' => true,
), $checkout->get_value( 'key_code' ));
echo '</div>';
}

// 验证 Key 码字段是否为空
add_action( 'woocommerce_checkout_process', 'validate_key_code' );
function validate_key_code() {
if ( ! $_POST['key_code'] ) {
wc_add_notice( __( '请填写 Key 码以完成购买.' ), 'error' );
}
}

// 保存 Key 码到订单元数据
add_action( 'woocommerce_checkout_update_order_meta', 'save_key_code_to_order_meta' );
function save_key_code_to_order_meta( $order_id ) {
if ( ! empty( $_POST['key_code'] ) ) {
update_post_meta( $order_id, 'key_code', sanitize_text_field( $_POST['key_code'] ) );
}
}

// 在后台订单页面显示 Key 码
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_key_code_in_admin_order_meta', 10, 1 );
function display_key_code_in_admin_order_meta( $order ) {
$key_code = get_post_meta( $order->get_id(), 'key_code', true );
if ( $key_code ) {
echo '<p><strong>' . __('Key 码') . ':</strong> ' . $key_code . '</p>';
}
}

去除不必要的按键

外观-> 自定义 -> 额外CSS

1
2
3
4
5
6
7
8
9
10
.ct-woo-card-actions {
display: none !important;
}

.single_add_to_cart_button[name="add-to-cart"] {
display: none !important;
}
.quantity[data-type="type-2"] {
display: none; /* 隐藏这个 div */
}

订单完成后向后端服务器发起请求,执行一些自动化操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

// 订单完成后将 Key 码发送到 Flask API
add_action( 'woocommerce_order_status_completed', 'send_api_key_to_flask' );
function send_api_key_to_flask( $order_id ) {
$order = wc_get_order( $order_id );

// 从订单元数据中获取 API key(假设使用插件存储在订单元数据中)
$api_key = get_post_meta( $order_id, 'api_key', true ); // 替换为实际的 API key 存储的 meta key

if ( $api_key ) {
// Flask API 的 URL
$api_url = 'http://1.94.120.213/api/query'; // 替换为 Flask 服务器的实际地址

// 设置 POST 请求参数
$body = json_encode(array(
'key' => $api_key,
'order_id' => $order_id,
));

// 发送 POST 请求到 Flask API
$response = wp_remote_post( $api_url, array(
'method' => 'POST',
'body' => $body,
'headers' => array(
'Content-Type' => 'application/json',
),
));

// 检查请求是否成功
if ( is_wp_error( $response ) ) {
error_log( 'Flask API 请求失败: ' . $response->get_error_message() );
} else {
$response_code = wp_remote_retrieve_response_code( $response );
$response_body = wp_remote_retrieve_body( $response );

if ( $response_code == 200 ) {
error_log( 'API key 续费成功: ' . $api_key );
} else {
error_log( 'Flask API 响应错误: ' . $response_body );
}
}
}
}

白名单设置

1
2
3
4
5
6
7
8
# 定义白名单,包含允许访问的 IP 地址 
WHITELIST_IPS = ['192.168.1.100', '203.0.113.1']
# 替换为你允许的 IP 地址
@app.before_request
def limit_remote_addr():
client_ip = request.remote_addr
if client_ip not in WHITELIST_IPS: # 如果 IP 不在白名单中,则返回 403 Forbidden
abort(403)

后端自动化操作

因为我完全没写过网络相关的东西,只是简单用python flask做了一个简易后端,详见github: jiujiu_server 然后用无头chrome通过selenium自动化操作去目标网站点点点,实现自动化操作。

最后

其实大部分代码可能都不是我写的,而是我告诉AI需求,让他给我实现 虽然经常不work,但是只需凭借最基本的编程知识就可以定位和debug,然后交给AI修改。 虽然总的还是搞了累计可能得有10个小时 但是如果没有AI的话我大概一开始就会放弃吧哈哈哈哈哈哈 这个需要商户权限,好麻烦,交给哥们去注册资质了

wordpress所需插件

先贴仓库 github: jiujiu_server 还是哥们有生意头脑,能想到转卖海外的一些工具,打一个信息差。但是人工处理大量订单很累,就琢磨我能不能搞一个自动化的东西出来。

zfb开通支付权限

产品中心互联网平台直付通 a 这个需要商户权限,好麻烦,交给哥们去注册资质了

wordpress所需插件

Pasted_image_20240926001357.png

使用WooCommerce插件启用商场功能

使用Wenprise Alipay Payment Gateway For WooCommerce插件启用支付宝

为了避免购物车,使用插件WooCommerce Direct Checkout跳过购物车功能 Pasted_image_20240926002512.png

为了实现页面处输入key的功能,使用插件Checkout Field Editor for WooCommerce

要让用户在 WooCommerce 购买商品时输入 Key 码,并在交易完成后将 Key 码传递给后端 Flask 服务器完成续费,您可以按以下步骤操作。

步骤 1:添加 Key 码输入框到结账页面

首先,需要在 WooCommerce 结账页面添加一个自定义的输入字段用于输入 Key 码。通过修改 WordPress 的 functions.php 文件来实现这个输入框。

代码步骤:

  1. 在 WordPress 后台,进入 外观 -> 主题文件编辑器
  2. 打开 functions.php 文件。
  3. 添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 在 WooCommerce 结账页面添加 Key 码输入框
add_action( 'woocommerce_after_order_notes', 'add_key_code_field_to_checkout' );
function add_key_code_field_to_checkout( $checkout ) {
echo '<div id="key_code_field"><h3>' . __('请输入您的 Key 码') . '</h3>';
woocommerce_form_field( 'key_code', array(
'type' => 'text',
'class' => array('key-code form-row-wide'),
'label' => __('Key 码'),
'placeholder' => __('请输入您的 Key 码'),
'required' => true,
), $checkout->get_value( 'key_code' ));
echo '</div>';
}

// 验证 Key 码字段是否为空
add_action( 'woocommerce_checkout_process', 'validate_key_code' );
function validate_key_code() {
if ( ! $_POST['key_code'] ) {
wc_add_notice( __( '请填写 Key 码以完成购买.' ), 'error' );
}
}

// 保存 Key 码到订单元数据
add_action( 'woocommerce_checkout_update_order_meta', 'save_key_code_to_order_meta' );
function save_key_code_to_order_meta( $order_id ) {
if ( ! empty( $_POST['key_code'] ) ) {
update_post_meta( $order_id, 'key_code', sanitize_text_field( $_POST['key_code'] ) );
}
}

// 在后台订单页面显示 Key 码
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_key_code_in_admin_order_meta', 10, 1 );
function display_key_code_in_admin_order_meta( $order ) {
$key_code = get_post_meta( $order->get_id(), 'key_code', true );
if ( $key_code ) {
echo '<p><strong>' . __('Key 码') . ':</strong> ' . $key_code . '</p>';
}
}

去除不必要的按键

外观-> 自定义 -> 额外CSS

1
2
3
4
5
6
7
8
9
10
.ct-woo-card-actions {
display: none !important;
}

.single_add_to_cart_button[name="add-to-cart"] {
display: none !important;
}
.quantity[data-type="type-2"] {
display: none; /* 隐藏这个 div */
}

订单完成后向后端服务器发起请求,执行一些自动化操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

// 订单完成后将 Key 码发送到 Flask API
add_action( 'woocommerce_order_status_completed', 'send_api_key_to_flask' );
function send_api_key_to_flask( $order_id ) {
$order = wc_get_order( $order_id );

// 从订单元数据中获取 API key(假设使用插件存储在订单元数据中)
$api_key = get_post_meta( $order_id, 'api_key', true ); // 替换为实际的 API key 存储的 meta key

if ( $api_key ) {
// Flask API 的 URL
$api_url = 'http://1.94.120.213/api/query'; // 替换为 Flask 服务器的实际地址

// 设置 POST 请求参数
$body = json_encode(array(
'key' => $api_key,
'order_id' => $order_id,
));

// 发送 POST 请求到 Flask API
$response = wp_remote_post( $api_url, array(
'method' => 'POST',
'body' => $body,
'headers' => array(
'Content-Type' => 'application/json',
),
));

// 检查请求是否成功
if ( is_wp_error( $response ) ) {
error_log( 'Flask API 请求失败: ' . $response->get_error_message() );
} else {
$response_code = wp_remote_retrieve_response_code( $response );
$response_body = wp_remote_retrieve_body( $response );

if ( $response_code == 200 ) {
error_log( 'API key 续费成功: ' . $api_key );
} else {
error_log( 'Flask API 响应错误: ' . $response_body );
}
}
}
}

白名单设置

1
2
3
4
5
6
7
8
# 定义白名单,包含允许访问的 IP 地址 
WHITELIST_IPS = ['192.168.1.100', '203.0.113.1']
# 替换为你允许的 IP 地址
@app.before_request
def limit_remote_addr():
client_ip = request.remote_addr
if client_ip not in WHITELIST_IPS: # 如果 IP 不在白名单中,则返回 403 Forbidden
abort(403)

后端自动化操作

因为我完全没写过网络相关的东西,只是简单用python flask做了一个简易后端,详见github: jiujiu_server 然后用无头chrome通过selenium自动化操作去目标网站点点点,实现自动化操作。

最后

其实大部分代码可能都不是我写的,而是我告诉AI需求,让他给我实现 虽然经常不work,但是只需凭借最基本的编程知识就可以定位和debug,然后交给AI修改。 虽然总的还是搞了累计可能得有10个小时 但是如果没有AI的话我大概一开始就会放弃吧哈哈哈哈哈哈

使用WooCommerce插件启用商场功能

使用Wenprise Alipay Payment Gateway For WooCommerce插件启用支付宝

为了避免购物车,使用插件WooCommerce Direct Checkout跳过购物车功能

先贴仓库 github: jiujiu_server 还是哥们有生意头脑,能想到转卖海外的一些工具,打一个信息差。但是人工处理大量订单很累,就琢磨我能不能搞一个自动化的东西出来。

zfb开通支付权限

产品中心互联网平台直付通 a 这个需要商户权限,好麻烦,交给哥们去注册资质了

wordpress所需插件

Pasted_image_20240926001357.png

使用WooCommerce插件启用商场功能

使用Wenprise Alipay Payment Gateway For WooCommerce插件启用支付宝

为了避免购物车,使用插件WooCommerce Direct Checkout跳过购物车功能 Pasted_image_20240926002512.png

为了实现页面处输入key的功能,使用插件Checkout Field Editor for WooCommerce

要让用户在 WooCommerce 购买商品时输入 Key 码,并在交易完成后将 Key 码传递给后端 Flask 服务器完成续费,您可以按以下步骤操作。

步骤 1:添加 Key 码输入框到结账页面

首先,需要在 WooCommerce 结账页面添加一个自定义的输入字段用于输入 Key 码。通过修改 WordPress 的 functions.php 文件来实现这个输入框。

代码步骤:

  1. 在 WordPress 后台,进入 外观 -> 主题文件编辑器
  2. 打开 functions.php 文件。
  3. 添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 在 WooCommerce 结账页面添加 Key 码输入框
add_action( 'woocommerce_after_order_notes', 'add_key_code_field_to_checkout' );
function add_key_code_field_to_checkout( $checkout ) {
echo '<div id="key_code_field"><h3>' . __('请输入您的 Key 码') . '</h3>';
woocommerce_form_field( 'key_code', array(
'type' => 'text',
'class' => array('key-code form-row-wide'),
'label' => __('Key 码'),
'placeholder' => __('请输入您的 Key 码'),
'required' => true,
), $checkout->get_value( 'key_code' ));
echo '</div>';
}

// 验证 Key 码字段是否为空
add_action( 'woocommerce_checkout_process', 'validate_key_code' );
function validate_key_code() {
if ( ! $_POST['key_code'] ) {
wc_add_notice( __( '请填写 Key 码以完成购买.' ), 'error' );
}
}

// 保存 Key 码到订单元数据
add_action( 'woocommerce_checkout_update_order_meta', 'save_key_code_to_order_meta' );
function save_key_code_to_order_meta( $order_id ) {
if ( ! empty( $_POST['key_code'] ) ) {
update_post_meta( $order_id, 'key_code', sanitize_text_field( $_POST['key_code'] ) );
}
}

// 在后台订单页面显示 Key 码
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_key_code_in_admin_order_meta', 10, 1 );
function display_key_code_in_admin_order_meta( $order ) {
$key_code = get_post_meta( $order->get_id(), 'key_code', true );
if ( $key_code ) {
echo '<p><strong>' . __('Key 码') . ':</strong> ' . $key_code . '</p>';
}
}

去除不必要的按键

外观-> 自定义 -> 额外CSS

1
2
3
4
5
6
7
8
9
10
.ct-woo-card-actions {
display: none !important;
}

.single_add_to_cart_button[name="add-to-cart"] {
display: none !important;
}
.quantity[data-type="type-2"] {
display: none; /* 隐藏这个 div */
}

订单完成后向后端服务器发起请求,执行一些自动化操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

// 订单完成后将 Key 码发送到 Flask API
add_action( 'woocommerce_order_status_completed', 'send_api_key_to_flask' );
function send_api_key_to_flask( $order_id ) {
$order = wc_get_order( $order_id );

// 从订单元数据中获取 API key(假设使用插件存储在订单元数据中)
$api_key = get_post_meta( $order_id, 'api_key', true ); // 替换为实际的 API key 存储的 meta key

if ( $api_key ) {
// Flask API 的 URL
$api_url = 'http://1.94.120.213/api/query'; // 替换为 Flask 服务器的实际地址

// 设置 POST 请求参数
$body = json_encode(array(
'key' => $api_key,
'order_id' => $order_id,
));

// 发送 POST 请求到 Flask API
$response = wp_remote_post( $api_url, array(
'method' => 'POST',
'body' => $body,
'headers' => array(
'Content-Type' => 'application/json',
),
));

// 检查请求是否成功
if ( is_wp_error( $response ) ) {
error_log( 'Flask API 请求失败: ' . $response->get_error_message() );
} else {
$response_code = wp_remote_retrieve_response_code( $response );
$response_body = wp_remote_retrieve_body( $response );

if ( $response_code == 200 ) {
error_log( 'API key 续费成功: ' . $api_key );
} else {
error_log( 'Flask API 响应错误: ' . $response_body );
}
}
}
}

白名单设置

1
2
3
4
5
6
7
8
# 定义白名单,包含允许访问的 IP 地址 
WHITELIST_IPS = ['192.168.1.100', '203.0.113.1']
# 替换为你允许的 IP 地址
@app.before_request
def limit_remote_addr():
client_ip = request.remote_addr
if client_ip not in WHITELIST_IPS: # 如果 IP 不在白名单中,则返回 403 Forbidden
abort(403)

后端自动化操作

因为我完全没写过网络相关的东西,只是简单用python flask做了一个简易后端,详见github: jiujiu_server 然后用无头chrome通过selenium自动化操作去目标网站点点点,实现自动化操作。

最后

其实大部分代码可能都不是我写的,而是我告诉AI需求,让他给我实现 虽然经常不work,但是只需凭借最基本的编程知识就可以定位和debug,然后交给AI修改。 虽然总的还是搞了累计可能得有10个小时 但是如果没有AI的话我大概一开始就会放弃吧哈哈哈哈哈哈

为了实现页面处输入key的功能,使用插件Checkout Field Editor for WooCommerce

要让用户在 WooCommerce 购买商品时输入 Key 码,并在交易完成后将 Key 码传递给后端 Flask 服务器完成续费,您可以按以下步骤操作。

步骤 1:添加 Key 码输入框到结账页面

首先,需要在 WooCommerce 结账页面添加一个自定义的输入字段用于输入 Key 码。通过修改 WordPress 的 functions.php 文件来实现这个输入框。

代码步骤:

  1. 在 WordPress 后台,进入 外观 -> 主题文件编辑器
  2. 打开 functions.php 文件。
  3. 添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 在 WooCommerce 结账页面添加 Key 码输入框
add_action( 'woocommerce_after_order_notes', 'add_key_code_field_to_checkout' );
function add_key_code_field_to_checkout( $checkout ) {
echo '<div id="key_code_field"><h3>' . __('请输入您的 Key 码') . '</h3>';
woocommerce_form_field( 'key_code', array(
'type' => 'text',
'class' => array('key-code form-row-wide'),
'label' => __('Key 码'),
'placeholder' => __('请输入您的 Key 码'),
'required' => true,
), $checkout->get_value( 'key_code' ));
echo '</div>';
}

// 验证 Key 码字段是否为空
add_action( 'woocommerce_checkout_process', 'validate_key_code' );
function validate_key_code() {
if ( ! $_POST['key_code'] ) {
wc_add_notice( __( '请填写 Key 码以完成购买.' ), 'error' );
}
}

// 保存 Key 码到订单元数据
add_action( 'woocommerce_checkout_update_order_meta', 'save_key_code_to_order_meta' );
function save_key_code_to_order_meta( $order_id ) {
if ( ! empty( $_POST['key_code'] ) ) {
update_post_meta( $order_id, 'key_code', sanitize_text_field( $_POST['key_code'] ) );
}
}

// 在后台订单页面显示 Key 码
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_key_code_in_admin_order_meta', 10, 1 );
function display_key_code_in_admin_order_meta( $order ) {
$key_code = get_post_meta( $order->get_id(), 'key_code', true );
if ( $key_code ) {
echo '<p><strong>' . __('Key 码') . ':</strong> ' . $key_code . '</p>';
}
}

去除不必要的按键

外观-> 自定义 -> 额外CSS

1
2
3
4
5
6
7
8
9
10
.ct-woo-card-actions {
display: none !important;
}

.single_add_to_cart_button[name="add-to-cart"] {
display: none !important;
}
.quantity[data-type="type-2"] {
display: none; /* 隐藏这个 div */
}

订单完成后向后端服务器发起请求,执行一些自动化操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

// 订单完成后将 Key 码发送到 Flask API
add_action( 'woocommerce_order_status_completed', 'send_api_key_to_flask' );
function send_api_key_to_flask( $order_id ) {
$order = wc_get_order( $order_id );

// 从订单元数据中获取 API key(假设使用插件存储在订单元数据中)
$api_key = get_post_meta( $order_id, 'api_key', true ); // 替换为实际的 API key 存储的 meta key

if ( $api_key ) {
// Flask API 的 URL
$api_url = 'http://1.94.120.213/api/query'; // 替换为 Flask 服务器的实际地址

// 设置 POST 请求参数
$body = json_encode(array(
'key' => $api_key,
'order_id' => $order_id,
));

// 发送 POST 请求到 Flask API
$response = wp_remote_post( $api_url, array(
'method' => 'POST',
'body' => $body,
'headers' => array(
'Content-Type' => 'application/json',
),
));

// 检查请求是否成功
if ( is_wp_error( $response ) ) {
error_log( 'Flask API 请求失败: ' . $response->get_error_message() );
} else {
$response_code = wp_remote_retrieve_response_code( $response );
$response_body = wp_remote_retrieve_body( $response );

if ( $response_code == 200 ) {
error_log( 'API key 续费成功: ' . $api_key );
} else {
error_log( 'Flask API 响应错误: ' . $response_body );
}
}
}
}

白名单设置

1
2
3
4
5
6
7
8
# 定义白名单,包含允许访问的 IP 地址 
WHITELIST_IPS = ['192.168.1.100', '203.0.113.1']
# 替换为你允许的 IP 地址
@app.before_request
def limit_remote_addr():
client_ip = request.remote_addr
if client_ip not in WHITELIST_IPS: # 如果 IP 不在白名单中,则返回 403 Forbidden
abort(403)

后端自动化操作

因为我完全没写过网络相关的东西,只是简单用python flask做了一个简易后端,详见github: jiujiu_server 然后用无头chrome通过selenium自动化操作去目标网站点点点,实现自动化操作。

最后

其实大部分代码可能都不是我写的,而是我告诉AI需求,让他给我实现 虽然经常不work,但是只需凭借最基本的编程知识就可以定位和debug,然后交给AI修改。 虽然总的还是搞了累计可能得有10个小时 但是如果没有AI的话我大概一开始就会放弃吧哈哈哈哈哈哈

本文作者:战斗包子
本文链接:https://paipai121.github.io/2024/09/26/日常记录/记一次帮哥们搭自动api续费网站的经历/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可