记一次帮哥们搭自动api续费网站的经历
先贴仓库
github: jiujiu_server
还是哥们有生意头脑,能想到转卖海外的一些工具,打一个信息差。但是人工处理大量订单很累,就琢磨我能不能搞一个自动化的东西出来。
zfb开通支付权限
产品中心
如互联网平台直付通
这个需要商户权限,好麻烦,交给哥们去注册资质了
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 文件来实现这个输入框。
代码步骤:
- 在 WordPress 后台,进入 外观 -> 主题文件编辑器。
- 打开
functions.php 文件。
- 添加
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
| 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>'; }
add_action( 'woocommerce_checkout_process', 'validate_key_code' ); function validate_key_code() { if ( ! $\_POST['key\_code'] ) \{ wc\_add\_notice( \_\_( '请填写 Key 码以完成购买.' ), 'error' ); \} \}
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'] ) ); \} \}
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; }
|
订单完成后向后端服务器发起请求,执行一些自动化操作
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
|
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 = get_post_meta( $order\_id, 'api\_key', true );
if ( $api_key ) { $api\_url = 'http://1.94.120.213/api/query'; $body = json_encode(array( 'key' => $api\_key, 'order\_id' => $order_id, ));
$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
| WHITELIST_IPS = ['192.168.1.100', '203.0.113.1']
@app.before_request def limit_remote_addr(): client_ip = request.remote_addr if client_ip not in WHITELIST_IPS: abort(403)
|
后端自动化操作
因为我完全没写过网络相关的东西,只是简单用python flask做了一个简易后端,详见github: jiujiu_server
然后用无头chrome通过selenium自动化操作去目标网站点点点,实现自动化操作。
最后
其实大部分代码可能都不是我写的,而是我告诉AI需求,让他给我实现
虽然经常不work,但是只需凭借最基本的编程知识就可以定位和debug,然后交给AI修改。
虽然总的还是搞了累计可能得有10个小时
但是如果没有AI的话我大概一开始就会放弃吧哈哈哈哈哈哈