2.4 KiB
2.4 KiB
title, description, url
| title | description | url |
|---|---|---|
| Billing | Get started with billing in TurboStarter. | /docs/mobile/billing |
Billing
For now, billing has a limited functionalities on mobile, we're mostly relying on the [web app](/docs/web/billing/overview) to handle billing.We are working on a fully-featured mobile billing to help you monetize your mobile app easier. Stay tuned for updates.
Fetching customer data
When your user purchased a plan from your landing page or web app, you can easily fetch their data using the API.
To do so, just call the /api/billing/customer endpoint:
import { api } from "~/lib/api";
export default function CustomerScreen() {
const { data: customer, isLoading } = useQuery({
queryKey: ["customer"],
queryFn: handle(api.billing.customer.$get),
});
if (isLoading) return <Text>Loading...</Text>;
return <Text>{customer?.plan}</Text>;
}
You may also want to ensure that user is logged in before fetching their billing data to avoid unnecessary API calls.
import { api } from "~/lib/api";
import { authClient } from "~/lib/auth";
export default function CustomerScreen() {
const {
data: { user },
} = authClient.useSession();
const { data: customer } = useQuery({
queryKey: ["customer"],
queryFn: handle(api.billing.customer.$get),
enabled: !!user, // [!code highlight]
});
if (!user || !customer) {
return null;
}
return (
<View>
<Text>{user.email}</Text>
<Text>{customer.plan}</Text>
</View>
);
}
We are currently working on a fully native payments system that will make it easier to comply with Apple's guidelines - stay tuned for updates!