feat: apple
This commit is contained in:
parent
26e3b4d0c9
commit
483a5e0bea
@ -8,7 +8,7 @@ import ProRights from '@/components/owner/rights/proRights';
|
||||
import { createOrder, createPayment, getPAy, isOrderExpired, payFailure, payProcessing, paySuccess } from '@/components/owner/rights/utils';
|
||||
import { ThemedText } from '@/components/ThemedText';
|
||||
import { CreateOrder } from '@/types/personal-info';
|
||||
import { ErrorCode, getAvailablePurchases, getPurchaseHistories, ProductPurchase, useIAP } from 'expo-iap';
|
||||
import { ErrorCode, getPurchaseHistories, useIAP } from 'expo-iap';
|
||||
import { useLocalSearchParams, useRouter } from "expo-router";
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
@ -21,14 +21,8 @@ export default function Rights() {
|
||||
const { t } = useTranslation();
|
||||
const {
|
||||
connected,
|
||||
products,
|
||||
subscriptions,
|
||||
currentPurchase,
|
||||
currentPurchaseError,
|
||||
requestProducts,
|
||||
requestPurchase,
|
||||
finishTransaction,
|
||||
validateReceipt,
|
||||
} = useIAP();
|
||||
// 用户勾选协议
|
||||
const [agree, setAgree] = useState<boolean>(false);
|
||||
@ -66,19 +60,19 @@ export default function Rights() {
|
||||
};
|
||||
|
||||
// 恢复购买
|
||||
const restorePurchases = async () => {
|
||||
try {
|
||||
const purchases = await getAvailablePurchases();
|
||||
console.log('Available purchases:', purchases);
|
||||
// Process and validate restored purchases
|
||||
for (const purchase of purchases) {
|
||||
await validateAndGrantPurchase(purchase);
|
||||
}
|
||||
alert(t('personal:rights.restoreSuccess'));
|
||||
} catch (error) {
|
||||
console.error('Restore failed:', error);
|
||||
}
|
||||
};
|
||||
// const restorePurchases = async () => {
|
||||
// try {
|
||||
// const purchases = await getAvailablePurchases();
|
||||
// console.log('Available purchases:', purchases);
|
||||
// // Process and validate restored purchases
|
||||
// for (const purchase of purchases) {
|
||||
// await validateAndGrantPurchase(purchase);
|
||||
// }
|
||||
// alert(t('personal:rights.restoreSuccess'));
|
||||
// } catch (error) {
|
||||
// console.error('Restore failed:', error);
|
||||
// }
|
||||
// };
|
||||
|
||||
// 处理购买
|
||||
const handlePurchase = async (sku: string, transaction_id: string) => {
|
||||
@ -88,15 +82,13 @@ export default function Rights() {
|
||||
const res = await requestPurchase({
|
||||
request: {
|
||||
ios: {
|
||||
sku: payType,
|
||||
sku: sku,
|
||||
andDangerouslyFinishTransactionAutomaticallyIOS: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
console.log('Purchase success:', res);
|
||||
|
||||
// 支付成功
|
||||
await paySuccess(transaction_id, res?.transactionId || "")
|
||||
await paySuccess(res?.transaction_id || "", "2000000971679717")
|
||||
} catch (error: any) {
|
||||
console.log('Purchase failed:', error);
|
||||
// 支付失败
|
||||
@ -248,7 +240,7 @@ export default function Rights() {
|
||||
{/* 普通权益 */}
|
||||
<Normal setUserType={setUserType} style={{ display: userType === 'normal' ? "flex" : "none" }} />
|
||||
{/* 会员权益 */}
|
||||
<Premium restorePurchases={restorePurchases} setPayType={setPayType} setShowTerms={setShowTerms} payType={payType} premiumPay={premiumPay} loading={loading} style={{ display: userType === 'normal' ? "none" : "flex" }} />
|
||||
<Premium setPayType={setPayType} setShowTerms={setShowTerms} payType={payType} premiumPay={premiumPay} loading={loading} style={{ display: userType === 'normal' ? "none" : "flex" }} />
|
||||
</View>
|
||||
{/* 支付方式 */}
|
||||
{/* <PayTypeModal setConfirmPay={setConfirmPay} modalVisible={showPayType} setModalVisible={setShowPayType} payChoice={payChoice} setPayChoice={setPayChoice} /> */}
|
||||
@ -306,7 +298,7 @@ export default function Rights() {
|
||||
|
||||
</View>
|
||||
{/* 协议弹窗 */}
|
||||
<PrivacyModal modalVisible={showTerms} setModalVisible={setShowTerms} type={"member"} />
|
||||
<PrivacyModal modalVisible={showTerms} setModalVisible={setShowTerms} type={"membership"} />
|
||||
</View>
|
||||
);
|
||||
}
|
||||
@ -455,6 +447,3 @@ const styles = StyleSheet.create({
|
||||
lineHeight: 32
|
||||
}
|
||||
});
|
||||
function validateAndGrantPurchase(purchase: ProductPurchase) {
|
||||
throw new Error('Function not implemented.');
|
||||
}
|
||||
|
||||
@ -11,7 +11,6 @@ interface Props {
|
||||
premiumPay: any;
|
||||
loading: boolean;
|
||||
setShowTerms: (visible: boolean) => void;
|
||||
restorePurchases: () => void;
|
||||
}
|
||||
|
||||
export interface PayItem {
|
||||
@ -31,7 +30,7 @@ export interface PayItem {
|
||||
|
||||
}
|
||||
const Premium = (props: Props) => {
|
||||
const { style, payType, setPayType, premiumPay, loading, setShowTerms, restorePurchases } = props;
|
||||
const { style, payType, setPayType, premiumPay, loading } = props;
|
||||
const bestValue = maxDiscountProduct(premiumPay)?.product_code
|
||||
const { t } = useTranslation();
|
||||
|
||||
@ -80,7 +79,7 @@ const Premium = (props: Props) => {
|
||||
})
|
||||
}
|
||||
</ScrollView>
|
||||
<View style={{ flexDirection: 'row', gap: 8, marginLeft: 4, marginTop: 8 }}>
|
||||
{/* <View style={{ flexDirection: 'row', gap: 8, marginLeft: 4, marginTop: 8 }}>
|
||||
<ThemedText style={{ color: '#AC7E35', fontSize: 10 }}>
|
||||
{t('personal:rights.restorePurchase')}
|
||||
</ThemedText>
|
||||
@ -89,7 +88,7 @@ const Premium = (props: Props) => {
|
||||
{t('personal:rights.restore')}
|
||||
</ThemedText>
|
||||
</TouchableOpacity>
|
||||
</View>
|
||||
</View> */}
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user