Skip to content

Alipay Mini-Program Platform ​

Alipay Mini-Program is a lightweight application platform developed by Ant Group, allowing users to access services directly within the Alipay app without downloading separate applications. It provides a comprehensive ecosystem for developers to create financial and lifestyle applications.

Platform Overview ​

What is Alipay Mini-Program? ​

Alipay Mini-Program is a sub-application that runs within the Alipay ecosystem. It focuses on providing convenient services, especially in areas like payments, financial services, lifestyle, and business applications.

Key Features ​

  • Instant Access: No download required, accessible through Alipay
  • Payment Integration: Native Alipay payment capabilities
  • Rich APIs: Comprehensive APIs for various business scenarios
  • Security: Enterprise-grade security and compliance
  • Cross-Platform: Runs on iOS and Android devices
  • Business Focus: Optimized for business and service applications
  • Ant Chain Integration: Blockchain technology integration

Development Environment ​

Developer Tools ​

Alipay Mini-Program Studio is the official IDE:

  • Code Editor: Advanced code editing with IntelliSense
  • Real-time Preview: Instant preview and debugging
  • Simulator: Multi-device simulation
  • Performance Tools: Performance analysis and optimization
  • Cloud Services: Integrated cloud development tools

System Requirements ​

  • Operating System: Windows 7+, macOS 10.12+
  • Alipay Version: Latest version recommended
  • Developer Account: Alipay Mini-Program developer account required

Getting Started ​

Registration Process ​

  1. Create Developer Account

  2. Create Mini-Program

    • Login to developer console
    • Create new mini-program application
    • Configure application information
    • Get AppID for development

Development Setup ​

bash
# Download Alipay Mini-Program Studio
# Visit: https://opendocs.alipay.com/mini/ide/download

# Create new project in IDE
# Enter AppID and project details
# Choose template or start from scratch

Project Structure ​

alipay-miniprogram/
├── pages/              # Page files
│   ├── index/
│   │   ├── index.js    # Page logic
│   │   ├── index.json  # Page configuration
│   │   ├── index.axml  # Page structure
│   │   └── index.acss  # Page styles
├── components/         # Custom components
├── utils/              # Utility functions
├── app.js             # App logic
├── app.json           # App configuration
├── app.acss           # Global styles
└── mini.project.json  # Project configuration

Core Technologies ​

AXML (Alipay XML) ​

AXML is Alipay's markup language for building user interfaces:

xml
<!-- Basic structure -->
<view class="container">
  <text class="title">{{title}}</text>
  <button onTap="handleClick">Click Me</button>
</view>

<!-- Conditional rendering -->
<view a:if="{{condition}}">
  <text>Condition is true</text>
</view>
<view a:else>
  <text>Condition is false</text>
</view>

<!-- List rendering -->
<view a:for="{{items}}" a:key="{{item.id}}">
  <text>{{item.name}}</text>
</view>

<!-- Template usage -->
<template name="item-template">
  <view class="item">
    <text>{{name}}</text>
    <text>{{price}}</text>
  </view>
</template>

<template is="item-template" data="{{name: 'Product', price: '¥99'}}"/>

ACSS (Alipay Cascading Style Sheets) ​

ACSS is Alipay's styling language with additional features:

css
/* Global styles */
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 20rpx;
  background-color: #f5f5f5;
}

/* Responsive units */
.title {
  font-size: 32rpx;  /* rpx: responsive pixel */
  color: #333;
  margin-bottom: 20rpx;
  font-weight: bold;
}

/* Import styles */
@import "common.acss";

/* Animation */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.fade-in {
  animation: fadeIn 0.3s ease-in;
}

JavaScript Logic ​

javascript
// app.js - Application logic
App({
  onLaunch(options) {
    console.log('App launched', options)
    // Initialize app
    this.initializeApp()
  },
  
  onShow(options) {
    console.log('App shown', options)
  },
  
  onHide() {
    console.log('App hidden')
  },
  
  initializeApp() {
    // App initialization logic
    my.getSystemInfo({
      success: (res) => {
        console.log('System info:', res)
        this.globalData.systemInfo = res
      }
    })
  },
  
  globalData: {
    userInfo: null,
    systemInfo: null
  }
})

// page.js - Page logic
Page({
  data: {
    title: 'Hello Alipay',
    items: [],
    loading: false
  },
  
  onLoad(query) {
    console.log('Page loaded with query:', query)
    this.loadData()
  },
  
  onShow() {
    console.log('Page shown')
  },
  
  onReady() {
    console.log('Page ready')
  },
  
  loadData() {
    this.setData({ loading: true })
    
    my.request({
      url: 'https://api.example.com/data',
      method: 'GET',
      success: (res) => {
        this.setData({
          items: res.data,
          loading: false
        })
      },
      fail: (err) => {
        console.error('Request failed:', err)
        this.setData({ loading: false })
      }
    })
  },
  
  handleClick(e) {
    console.log('Button clicked', e)
    my.showToast({
      content: 'Success!',
      type: 'success',
      duration: 2000
    })
  }
})

API Categories ​

Basic APIs ​

Interface APIs ​

javascript
// Show toast
my.showToast({
  content: 'Operation successful',
  type: 'success',
  duration: 3000
})

// Show modal
my.confirm({
  title: 'Confirm',
  content: 'Are you sure to proceed?',
  success: (result) => {
    if (result.confirm) {
      console.log('User confirmed')
    }
  }
})

// Show loading
my.showLoading({
  content: 'Loading...'
})

my.hideLoading()

// Show action sheet
my.showActionSheet({
  items: ['Option 1', 'Option 2', 'Option 3'],
  success: (res) => {
    console.log('Selected index:', res.index)
  }
})
javascript
// Navigate to page
my.navigateTo({
  url: '/pages/detail/detail?id=123'
})

// Redirect to page
my.redirectTo({
  url: '/pages/login/login'
})

// Switch tab
my.switchTab({
  url: '/pages/home/home'
})

// Go back
my.navigateBack({
  delta: 1
})

// Relaunch app
my.reLaunch({
  url: '/pages/index/index'
})

Network APIs ​

javascript
// HTTP request
my.request({
  url: 'https://api.example.com/users',
  method: 'POST',
  data: {
    name: 'John',
    email: 'john@example.com'
  },
  headers: {
    'Content-Type': 'application/json'
  },
  success: (res) => {
    console.log('Request success:', res.data)
  },
  fail: (err) => {
    console.error('Request failed:', err)
  },
  complete: () => {
    console.log('Request completed')
  }
})

// Upload file
my.uploadFile({
  url: 'https://api.example.com/upload',
  filePath: tempFilePath,
  fileName: 'image.jpg',
  fileType: 'image',
  formData: {
    user: 'test'
  },
  success: (res) => {
    console.log('Upload success:', res)
  }
})

// Download file
my.downloadFile({
  url: 'https://example.com/file.pdf',
  success: (res) => {
    console.log('Download success:', res.tempFilePath)
  }
})

Storage APIs ​

javascript
// Synchronous storage
my.setStorageSync({
  key: 'userToken',
  data: 'abc123'
})

const token = my.getStorageSync({
  key: 'userToken'
}).data

my.removeStorageSync({
  key: 'userToken'
})

my.clearStorageSync()

// Asynchronous storage
my.setStorage({
  key: 'userInfo',
  data: {
    name: 'John',
    age: 25,
    preferences: ['music', 'sports']
  },
  success: () => {
    console.log('Storage set successfully')
  }
})

my.getStorage({
  key: 'userInfo',
  success: (res) => {
    console.log('User info:', res.data)
  }
})

Device APIs ​

javascript
// Get system info
my.getSystemInfo({
  success: (res) => {
    console.log('System info:', res)
    console.log('Platform:', res.platform)
    console.log('Version:', res.version)
    console.log('Screen:', res.screenWidth, res.screenHeight)
  }
})

// Get location
my.getLocation({
  type: 1, // 0: wgs84, 1: gcj02
  success: (res) => {
    console.log('Location:', res.latitude, res.longitude)
    console.log('Accuracy:', res.accuracy)
  }
})

// Vibrate
my.vibrate({
  success: () => {
    console.log('Vibration triggered')
  }
})

// Set clipboard
my.setClipboard({
  text: 'Hello Alipay',
  success: () => {
    console.log('Copied to clipboard')
  }
})

// Get clipboard
my.getClipboard({
  success: (res) => {
    console.log('Clipboard content:', res.text)
  }
})

Component Development ​

Custom Components ​

javascript
// components/my-component/my-component.js
Component({
  mixins: [],
  data: {
    count: 0
  },
  props: {
    title: 'Default Title',
    items: []
  },
  didMount() {
    console.log('Component mounted')
  },
  didUpdate() {
    console.log('Component updated')
  },
  didUnmount() {
    console.log('Component unmounted')
  },
  methods: {
    handleTap() {
      this.setData({
        count: this.data.count + 1
      })
      
      // Trigger custom event
      this.props.onCustomEvent && this.props.onCustomEvent({
        count: this.data.count
      })
    },
    
    reset() {
      this.setData({
        count: 0
      })
    }
  }
})
xml
<!-- components/my-component/my-component.axml -->
<view class="my-component">
  <text class="title">{{title}}</text>
  <view class="content">
    <text class="count">Count: {{count}}</text>
    <button onTap="handleTap" class="increment-btn">
      Increment
    </button>
    <button onTap="reset" class="reset-btn">
      Reset
    </button>
  </view>
  <slot></slot>
</view>
json
{
  "component": true,
  "usingComponents": {}
}

Using Custom Components ​

json
{
  "usingComponents": {
    "my-component": "/components/my-component/my-component"
  }
}
xml
<my-component 
  title="Custom Component" 
  items="{{itemList}}"
  onCustomEvent="handleCustomEvent">
  <text>This is slot content</text>
</my-component>

Advanced Features ​

Alipay Payment Integration ​

javascript
// Request payment
my.tradePay({
  orderStr: 'your_order_string', // From server
  success: (res) => {
    console.log('Payment success:', res)
    // Handle successful payment
  },
  fail: (res) => {
    console.log('Payment failed:', res)
    // Handle payment failure
  }
})

// Check payment result
my.getPaymentResult({
  success: (res) => {
    console.log('Payment result:', res)
  }
})

User Authentication ​

javascript
// Get auth code
my.getAuthCode({
  scopes: ['auth_user'],
  success: (res) => {
    console.log('Auth code:', res.authCode)
    // Send auth code to server for user info
  }
})

// Get user info (requires server-side processing)
my.getOpenUserInfo({
  success: (res) => {
    console.log('User info:', res)
  },
  fail: (res) => {
    console.log('Failed to get user info:', res)
  }
})

Biometric Authentication ​

javascript
// Check biometric support
my.canIUse('startAPVerify', (res) => {
  if (res) {
    // Biometric authentication is supported
    my.startAPVerify({
      businessId: 'your_business_id',
      success: (res) => {
        console.log('Biometric verification success:', res)
      },
      fail: (res) => {
        console.log('Biometric verification failed:', res)
      }
    })
  }
})

Ant Chain (Blockchain) Integration ​

javascript
// Upload data to blockchain
my.uploadDataToBlockchain({
  data: {
    timestamp: Date.now(),
    content: 'Important data',
    hash: 'data_hash'
  },
  success: (res) => {
    console.log('Data uploaded to blockchain:', res)
  }
})

Performance Optimization ​

Best Practices ​

  1. Data Management
    • Use specific data paths in setData
    • Avoid large data objects
    • Implement data pagination
javascript
// Good practice
this.setData({
  'user.name': 'John',
  'list[0].status': 'active'
})

// Avoid
this.setData({
  user: this.data.user,
  list: this.data.list
})
  1. Image Optimization

    • Use appropriate image formats (WebP when supported)
    • Implement lazy loading
    • Compress images before upload
  2. Memory Management

    • Clean up timers and listeners
    • Remove unused data
    • Optimize component lifecycle

Performance Monitoring ​

javascript
// Performance tracking
my.getPerformance({
  success: (res) => {
    console.log('Performance data:', res)
  }
})

// Monitor network performance
my.onNetworkStatusChange((res) => {
  console.log('Network status:', res.isConnected, res.networkType)
})

Testing and Debugging ​

Debugging Tools ​

  1. Console Debugging

    • Use console methods for logging
    • Inspect network requests
    • Monitor performance metrics
  2. Remote Debugging

    • Enable remote debugging in IDE
    • Test on real devices
    • Debug different Alipay versions

Testing Strategies ​

javascript
// Mock data for testing
const mockData = {
  users: [
    { id: 1, name: 'John', status: 'active' },
    { id: 2, name: 'Jane', status: 'inactive' }
  ]
}

// Test function
function testUserFilter() {
  const activeUsers = mockData.users.filter(user => user.status === 'active')
  console.assert(activeUsers.length === 1, 'Should have 1 active user')
  console.log('Test passed: User filter works correctly')
}

Deployment and Publishing ​

Preparation Checklist ​

  1. Code Quality

    • Code review and optimization
    • Performance testing
    • Security audit
  2. Configuration

    • Production environment setup
    • Domain whitelist configuration
    • Version information update

Publishing Process ​

  1. Upload and Submit

    • Upload code using IDE
    • Fill in version information
    • Submit for review
  2. Review Process

    • Alipay team reviews submission
    • Address feedback if any
    • Wait for approval
  3. Release Management

    • Publish approved version
    • Monitor user feedback
    • Plan future updates

Platform Guidelines ​

Design Principles ​

  1. User Experience

    • Follow Alipay design guidelines
    • Maintain visual consistency
    • Optimize for mobile interaction
  2. Business Focus

    • Provide clear value proposition
    • Optimize for business scenarios
    • Ensure transaction security

Content Guidelines ​

  1. Compliance

    • Follow financial regulations
    • Respect user privacy
    • Avoid prohibited content
  2. Quality Standards

    • Provide stable functionality
    • Handle errors gracefully
    • Maintain high performance

Resources and Support ​

Official Resources ​

Community Resources ​

Learning Materials ​

  • Official tutorials and documentation
  • Video courses and workshops
  • Developer conferences and events
  • Community blog posts and articles

Conclusion ​

Alipay Mini-Program platform provides a robust ecosystem for developing business-focused applications with strong payment and financial service integration. Its comprehensive API set, security features, and business-oriented tools make it an excellent choice for developers creating commercial and service applications.

The platform's focus on financial services, combined with its integration with Ant Group's ecosystem, offers unique opportunities for developers to create innovative solutions in fintech, e-commerce, and lifestyle services. By leveraging the platform's strengths and following best practices, developers can build successful applications that serve millions of Alipay users.

Connecting Multiple Platforms, Empowering Innovation