This commit is contained in:
Hamza-Ayed
2023-10-25 18:00:11 +03:00
parent c1b96c8c84
commit 10c92520b8
9 changed files with 79 additions and 10 deletions

View File

@@ -10,6 +10,7 @@ class AppCredintials {
static const String twilloRecoveryCode = 'TQF13XUVU2NJ3VFU8JWBWYBS'; static const String twilloRecoveryCode = 'TQF13XUVU2NJ3VFU8JWBWYBS';
static const String accountSIDTwillo = 'ACb4ad857efe0903bfd6238a763a2ce4d1'; static const String accountSIDTwillo = 'ACb4ad857efe0903bfd6238a763a2ce4d1';
static const String authTokenTwillo = '14f39ef4628bb8a4f18469f462f8af75'; static const String authTokenTwillo = '14f39ef4628bb8a4f18469f462f8af75';
static const String Publishablekey = '14f39ef4628bb8a4f18469f462f8af75';
String getBasicAuthCredentials() { String getBasicAuthCredentials() {
return base64Encode(utf8.encode(basicAuthCredentials)); return base64Encode(utf8.encode(basicAuthCredentials));
} }
@@ -18,6 +19,13 @@ class AppCredintials {
'Authorization:API_EMDJX6BHQ67DBGT6WV:DG2XPU7YEN02M0VJ2F'; 'Authorization:API_EMDJX6BHQ67DBGT6WV:DG2XPU7YEN02M0VJ2F';
} }
class StripeKey {
static const String publishableKey =
'pk_test_51O4WTODMEVrOCA5SN5e6b8pAvF5CPDC3c3Pif18q74NEQApU5AfmZZEN9X2WIayfIrUTjju1pUavmgoeLgb3FR5k00pn4oMHGO';
static const String secretKey =
'sk_test_51O4WTODMEVrOCA5SBgaoSS69nNFRyfZx2Tl5ODswYyjqLpc0RxBHW3hhcP38Tp78TZ1PQoZo7eHFllRiQd3rMHPN00Lr9WD3n2';
}
class MyClass { class MyClass {
static const String mapAPIKEY = 'AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0'; static const String mapAPIKEY = 'AIzaSyCyfwRXTwSTLOFQSQgN5p7QZgGJVZnEKq0';
static const String twilloRecoveryCode = 'TQF13XUVU2NJ3VFU8JWBWYBS'; static const String twilloRecoveryCode = 'TQF13XUVU2NJ3VFU8JWBWYBS';
@@ -51,4 +59,4 @@ class MyClass {
} }
} }
// Modified API Key: AIzaSyCyfwRXTwSTLOFc57cb9e210a21def772cad3cd9ef83247e70bed77da89a64c9a5e91e7f3348dbQSQgN5p7QZgGJVZnEKq0 // Modified API Key: AIzaSyCyfwRXTwSTLOFc57cb9e210a21def772cad3cd9ef83247e70bed77da89a64c9a5e91e7f3348dbQSQgN5p7QZgGJVZnEKq0
// I/flutter ( 5490): Final API Key: AIzaSyCyfwRXTwSTLOFc57cb9e210a21def772cad3cd9ef83247e70bed77da89a64c9a5e91e7f3348dbQSQgN5p7QZgGJVZnEKq0 // I/flutter ( 5490): Final API Key: AIzaSyCyfwRXTwSTLOFc57cb9e210a21def772cad3cd9ef83247e70bed77da89a64c9a5e91e7f3348dbQSQgN5p7QZgGJVZnEKq0

View File

@@ -1,4 +1,4 @@
class AppInfo { class AppInformation {
static const String companyName = 'Mobile-App'; static const String companyName = 'Mobile-App';
static const String appName = 'SEFER'; static const String appName = 'SEFER';
static const String phoneNumber = '962798583052'; static const String phoneNumber = '962798583052';

View File

@@ -33,6 +33,25 @@ class CRUD {
} }
} }
Future<dynamic> postStripe({
required String link,
Map<String, dynamic>? payload,
}) async {
var url = Uri.parse(
link,
);
var response = await http.post(
url,
body: payload,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
'Authorization': 'Bearer ${StripeKey.secretKey}',
},
);
return response.body;
}
Future<dynamic> post({ Future<dynamic> post({
required String link, required String link,
Map<String, dynamic>? payload, Map<String, dynamic>? payload,

View File

@@ -1,7 +1,9 @@
import 'dart:convert'; import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:ride/constant/credential.dart';
import 'package:ride/controller/home/map_passenger_controller.dart'; import 'package:ride/controller/home/map_passenger_controller.dart';
import '../../constant/box_name.dart'; import '../../constant/box_name.dart';
@@ -58,7 +60,7 @@ class PaymentController extends GetxController {
update(); update();
} }
void applyPromoCodetoPassenger() async { void applyPromoCodeToPassenger() async {
//TAWJIHI //TAWJIHI
CRUD().get(link: AppLink.getPassengersPromo, payload: { CRUD().get(link: AppLink.getPassengersPromo, payload: {
'promo_code': promo.text, 'promo_code': promo.text,
@@ -77,6 +79,35 @@ class PaymentController extends GetxController {
}); });
} }
Future<void> makePayment(int amount, String currency) async {
try {
String clientSecret =
await _getClientSecret((amount).toString(), currency);
await initializePaymentSheet(clientSecret);
await Stripe.instance.presentPaymentSheet();
} catch (e) {
throw Exception(e.toString());
}
}
Future<void> initializePaymentSheet(String clientSecret) async {
Stripe.instance.initPaymentSheet(
paymentSheetParameters: SetupPaymentSheetParameters(
paymentIntentClientSecret: clientSecret,
merchantDisplayName: 'Sefer',
),
);
}
Future<String> _getClientSecret(String amount, currency) async {
var res = await CRUD().postStripe(
link: 'https://api.stripe.com/v1/payment_intents',
payload: {'amount': amount, 'currency': currency},
);
final jsonResponse = jsonDecode(res);
return jsonResponse['client_secret'];
}
@override @override
void onInit() { void onInit() {
getPassengerWallet(); getPassengerWallet();

View File

View File

@@ -3,8 +3,10 @@ import 'dart:io';
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_stripe/flutter_stripe.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart'; import 'package:get_storage/get_storage.dart';
import 'package:ride/constant/credential.dart';
import 'package:ride/constant/info.dart'; import 'package:ride/constant/info.dart';
import 'package:ride/views/auth/captin/login_captin.dart'; import 'package:ride/views/auth/captin/login_captin.dart';
import 'package:ride/views/auth/login_page.dart'; import 'package:ride/views/auth/login_page.dart';
@@ -31,7 +33,7 @@ Future<void> backgroundMessageHandler(RemoteMessage message) async {
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await GetStorage.init(); await GetStorage.init();
Stripe.publishableKey = StripeKey.publishableKey;
if (Platform.isAndroid || Platform.isIOS) { if (Platform.isAndroid || Platform.isIOS) {
await Firebase.initializeApp( await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform, options: DefaultFirebaseOptions.currentPlatform,
@@ -64,7 +66,7 @@ class MyApp extends StatelessWidget {
LocaleController controller = Get.put(LocaleController()); LocaleController controller = Get.put(LocaleController());
return GetMaterialApp( return GetMaterialApp(
title: AppInfo.appName, title: AppInformation.appName,
translations: MyTranslation(), translations: MyTranslation(),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
locale: controller.language, locale: controller.language,

View File

@@ -49,7 +49,7 @@ class BarChartWidget extends StatelessWidget {
: Column( : Column(
children: [ children: [
Text( Text(
'Average of Hours of ${AppInfo.appName} is ON for this month' 'Average of Hours of ${AppInformation.appName} is ON for this month'
.tr, .tr,
style: AppStyle.title, style: AppStyle.title,
), ),

View File

@@ -5,6 +5,7 @@ import 'package:ride/constant/style.dart';
import 'package:ride/constant/table_names.dart'; import 'package:ride/constant/table_names.dart';
import 'package:ride/controller/home/captin/home_captain_controller.dart'; import 'package:ride/controller/home/captin/home_captain_controller.dart';
import 'package:ride/controller/home/captin/order_request_controller.dart'; import 'package:ride/controller/home/captin/order_request_controller.dart';
import 'package:ride/controller/payment/payment_controller.dart';
import 'package:ride/main.dart'; import 'package:ride/main.dart';
import 'package:ride/views/Rate/ride_calculate_driver.dart'; import 'package:ride/views/Rate/ride_calculate_driver.dart';
import 'package:ride/views/home/Captin/text_scanner.dart'; import 'package:ride/views/home/Captin/text_scanner.dart';
@@ -192,6 +193,14 @@ class HomeCaptain extends StatelessWidget {
"Text FlutterMLGoogle", "Text FlutterMLGoogle",
), ),
), ),
TextButton(
onPressed: () {
PaymentController().makePayment(18, 'JOD');
},
child: const Text(
"Pay 18 dollar",
),
),
], ],
), ),
), ),

View File

@@ -63,13 +63,13 @@ class PassengerWallet extends StatelessWidget {
box.read(BoxName.passengerWalletTotal) == null box.read(BoxName.passengerWalletTotal) == null
? Text( ? Text(
'You Dont Have Any amount in'.tr + 'You Dont Have Any amount in'.tr +
' ${AppInfo.appName}' + ' ${AppInformation.appName}' +
'Wallet!'.tr, 'Wallet!'.tr,
style: AppStyle.title, style: AppStyle.title,
) )
: Text( : Text(
'You Have'.tr + 'You Have'.tr +
' ${box.read(BoxName.passengerWalletTotal).toString()} JD in ${AppInfo.appName} Wallet', ' ${box.read(BoxName.passengerWalletTotal).toString()} JD in ${AppInformation.appName} Wallet',
style: AppStyle.title, style: AppStyle.title,
), ),
), ),
@@ -357,7 +357,7 @@ class PassengerWallet extends StatelessWidget {
"items": [ "items": [
{ {
"name": "name":
"${AppInfo.appName} Wallet ", "${AppInformation.appName} Wallet ",
"quantity": 1, "quantity": 1,
"price": "price":
'${controller.selectedAmount}', '${controller.selectedAmount}',
@@ -368,7 +368,7 @@ class PassengerWallet extends StatelessWidget {
// shipping address is not required though // shipping address is not required though
"shipping_address": const { "shipping_address": const {
"recipient_name": "recipient_name":
"${AppInfo.appName} Wallet", "${AppInformation.appName} Wallet",
"line1": "Shafa Badran", "line1": "Shafa Badran",
"line2": "", "line2": "",
"city": "Amman", "city": "Amman",