expo-alipay-sdk
Version:
Alipay SDK for Expo and React Native - Payment integration. Official Alipay payment solution with iOS & Android support. 支付宝支付功能集成
54 lines (46 loc) • 1.96 kB
JavaScript
// Expo 配置插件 - 支付宝 SDK
const { withInfoPlist, withAndroidManifest, withDangerousMod } = require('@expo/config-plugins');
const fs = require('fs');
const path = require('path');
// ProGuard 混淆规则
const PROGUARD_RULES = '# 支付宝 SDK 混淆规则\n-keep class com.alipay.** {\n *;\n}\n\n-dontwarn com.alipay.**\n';
// 插件主函数
const withExpoAlipay = (config, props = {}) => {
config = withInfoPlist(config, (config) => {
return config;
});
config = withAndroidManifest(config, (config) => {
const packageName = config.android?.package || config.android?.packageName;
if (packageName && config.modResults.manifest) {
const manifest = config.modResults.manifest;
if (!manifest.application) {
manifest.application = [{}];
}
const mainApplication = manifest.application[0];
if (!mainApplication.activity) {
mainApplication.activity = [];
}
}
return config;
});
config = withDangerousMod(config, [
'android',
async (config) => {
const platformProjectRoot = config.modRequest.platformProjectRoot;
if (platformProjectRoot) {
const proguardRulesPath = path.join(platformProjectRoot, 'app', 'proguard-rules.pro');
let proguardContent = '';
if (fs.existsSync(proguardRulesPath)) {
proguardContent = fs.readFileSync(proguardRulesPath, 'utf-8');
}
if (!proguardContent.includes('com.alipay')) {
proguardContent += '\n' + PROGUARD_RULES;
fs.writeFileSync(proguardRulesPath, proguardContent, 'utf-8');
}
}
return config;
}
]);
return config;
};
module.exports = withExpoAlipay;