Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Implement WeChat Pay V3 subscription billing functionality (预约扣费功能/连续包月功能) #3688

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
Copilot wants to merge 3 commits into develop
base: develop
Choose a base branch
Loading
from copilot/fix-3593

Conversation

Copy link
Contributor

@Copilot Copilot AI commented Aug 31, 2025
edited
Loading

This PR implements the WeChat Pay V3 subscription billing functionality (预约扣费功能/连续包月功能) as requested by the community. The subscription billing feature enables merchants to automatically charge users on a recurring basis for services like monthly subscriptions, with proper user authorization.

What's Added

Service Interface

  • SubscriptionBillingService - Main service interface providing subscription billing operations

Bean Classes

Complete request/response model classes following WeChat Pay V3 API specification:

  • SubscriptionScheduleRequest/Result - Schedule future billing
  • SubscriptionQueryResult - Query subscription status
  • SubscriptionCancelRequest/Result - Cancel subscriptions
  • SubscriptionInstantBillingRequest/Result - Execute immediate billing
  • SubscriptionTransactionQueryRequest/Result - Query billing history
  • SubscriptionAmount - Amount and currency information
  • BillingPlan - Billing plan configuration (monthly/weekly/daily/yearly)

Service Implementation

  • SubscriptionBillingServiceImpl - Complete implementation following existing V3 API patterns
  • Integrated into WxPayService interface and BaseWxPayServiceImpl
  • Proper error handling and exception management

Features Supported

  1. Schedule Subscription Billing - Create advance billing schedules for recurring payments
  2. Query Subscription Status - Check subscription details and current status
  3. Cancel Subscriptions - Cancel existing subscription schedules
  4. Instant Billing - Execute immediate charges (useful for makeup payments)
  5. Query Transaction Records - Retrieve billing history with pagination

Usage Example

// Get the subscription billing service
SubscriptionBillingService service = wxPayService.getSubscriptionBillingService();
// Create a monthly subscription
SubscriptionScheduleRequest request = new SubscriptionScheduleRequest();
request.setOutTradeNo("monthly_vip_" + System.currentTimeMillis());
request.setOpenid("user_openid");
request.setDescription("VIP会员 - 连续包月");
request.setScheduleTime("2024-09-01T10:00:00+08:00");
// Set amount
SubscriptionAmount amount = new SubscriptionAmount();
amount.setTotal(3000); // 30 RMB in cents
amount.setCurrency("CNY");
request.setAmount(amount);
// Configure monthly billing plan
BillingPlan plan = new BillingPlan();
plan.setPlanType("MONTHLY");
plan.setPeriod(1);
plan.setTotalCount(12); // 12 months
request.setBillingPlan(plan);
// Execute the subscription
SubscriptionScheduleResult result = service.scheduleSubscription(request);

Implementation Details

The implementation follows WeChat Pay V3 API documentation: https://pay.weixin.qq.com/doc/v3/merchant/4012161105

  • API Endpoints: All 5 core subscription billing endpoints are supported
  • Authentication: Uses existing V3 signature and certificate handling
  • Error Handling: Leverages existing WxPayException framework
  • Code Style: Passes all checkstyle validations and follows project patterns
  • Testing: Includes basic test structure (disabled by default due to credential requirements)
  • Documentation: Comprehensive usage guide with examples provided

Code Quality

✅ Builds successfully with existing codebase
✅ Passes all checkstyle validations
✅ Follows established architectural patterns
✅ Comprehensive JavaDoc documentation
✅ Proper exception handling

This implementation provides production-ready support for WeChat's subscription billing capabilities while maintaining full compatibility with the existing WxJava architecture.

Fixes #3593.


💬 Share your feedback on Copilot coding agent for the chance to win a 200ドル gift card! Click here to start the survey.

Copilot AI and others added 2 commits August 31, 2025 15:03
Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
...onality
Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
@Copilot Copilot AI changed the title (削除) [WIP] 功能询问-预约扣费功能 (削除ここまで) (追記) Implement WeChat Pay V3 subscription billing functionality (预约扣费功能/连续包月功能) (追記ここまで) Aug 31, 2025
Copilot finished work on behalf of binarywang August 31, 2025 15:05
@Copilot Copilot AI requested a review from binarywang August 31, 2025 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Reviewers

@binarywang binarywang Awaiting requested review from binarywang

Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

功能询问-预约扣费功能

AltStyle によって変換されたページ (->オリジナル) /