From dcc2d3c86c449b27da65ea3645b687bf85203dd9 Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 00:01:05 +0100 Subject: [PATCH 1/7] Create payment_intent.cairo payment intent --- src/payment_intent.cairo | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/payment_intent.cairo diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/payment_intent.cairo @@ -0,0 +1 @@ + From a12a6c3fe59caff9834ab80eaa02ac2053515a1c Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 14:29:57 +0100 Subject: [PATCH 2/7] Update payment_intent.cairo --- src/payment_intent.cairo | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo index 8b13789..5ca1b70 100644 --- a/src/payment_intent.cairo +++ b/src/payment_intent.cairo @@ -1 +1,55 @@ +use starknet::contract; +use starknet::ContractAddress; +use starknet::storage::{Storage, storage_map}; +use core::bool; +use core::integer::u256; +use core::string::string; +use core::array::ArrayTrait; +use core::felt252; +#[derive(Copy, Drop, Serde)] +struct PaymentIntentData { + amount: u256, + currency: felt252, + customer: ContractAddress, + recipient: ContractAddress, + status: felt252 } + +#[contract] +mod PaymentIntent { + use super::*; + + #[storage] + struct Storage { + intent_counter: felt252, + intents: LegacyMap, + } + + #[external] + fn create_intent( + ref self: ContractState, + amount: u256, + currency: felt252, + customer: ContractAddress, + recipient: ContractAddress, + ) { + let id = self.intent_counter.read(); + let new_id = id + 1; + self.intent_counter.write(new_id); + + let intent = PaymentIntentData { + amount, + currency, + customer, + recipient, + status: 'created' + }; + + self.intents.write(new_id, intent); + } + + #[view] + fn get_intent(self: @ContractState, intent_id: felt252) -> PaymentIntentData { + self.intents.read(intent_id) + } +} From 684c2c7c7b1b9b2d0dc840320b37d2275d8669c0 Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 14:46:11 +0100 Subject: [PATCH 3/7] Update payment_intent.cairo --- src/payment_intent.cairo | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo index 5ca1b70..9277c34 100644 --- a/src/payment_intent.cairo +++ b/src/payment_intent.cairo @@ -1,19 +1,24 @@ -use starknet::contract; -use starknet::ContractAddress; -use starknet::storage::{Storage, storage_map}; -use core::bool; +%lang starknet + +use core::array::ArrayTrait; use core::integer::u256; use core::string::string; -use core::array::ArrayTrait; -use core::felt252; +use core::{bool, felt252}; + +use starknet::storage::{Storage, storage_map}; +use starknet::{ContractAddress, contract}; +use starknet::short_string::short_string; + #[derive(Copy, Drop, Serde)] struct PaymentIntentData { amount: u256, - currency: felt252, + currency: felt252, customer: ContractAddress, recipient: ContractAddress, - status: felt252 } + status: felt252, +} + #[contract] mod PaymentIntent { @@ -25,6 +30,7 @@ mod PaymentIntent { intents: LegacyMap, } + #[external] fn create_intent( ref self: ContractState, @@ -37,17 +43,20 @@ mod PaymentIntent { let new_id = id + 1; self.intent_counter.write(new_id); + let status = short_string!("created"); // Convert "created" to felt252 + let intent = PaymentIntentData { amount, currency, customer, recipient, - status: 'created' + status, }; self.intents.write(new_id, intent); } + #[view] fn get_intent(self: @ContractState, intent_id: felt252) -> PaymentIntentData { self.intents.read(intent_id) From 1da12779b4a1582bea3c0b6215317883a3503f75 Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 14:52:36 +0100 Subject: [PATCH 4/7] Update payment_intent.cairo --- src/payment_intent.cairo | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo index 9277c34..0da1278 100644 --- a/src/payment_intent.cairo +++ b/src/payment_intent.cairo @@ -1,5 +1,3 @@ -%lang starknet - use core::array::ArrayTrait; use core::integer::u256; use core::string::string; From 871822119c4b771428165a25aecbae31d399d523 Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 15:25:42 +0100 Subject: [PATCH 5/7] Update payment_intent.cairo --- src/payment_intent.cairo | 111 ++++++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 49 deletions(-) diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo index 0da1278..42781a9 100644 --- a/src/payment_intent.cairo +++ b/src/payment_intent.cairo @@ -1,62 +1,75 @@ -use core::array::ArrayTrait; -use core::integer::u256; -use core::string::string; -use core::{bool, felt252}; - -use starknet::storage::{Storage, storage_map}; -use starknet::{ContractAddress, contract}; -use starknet::short_string::short_string; - - -#[derive(Copy, Drop, Serde)] -struct PaymentIntentData { - amount: u256, - currency: felt252, - customer: ContractAddress, - recipient: ContractAddress, - status: felt252, -} - - -#[contract] +#[starknet::contract] mod PaymentIntent { - use super::*; + use starknet::ContractAddress; + use starknet::get_caller_address; + + #[derive(Drop, starknet::Store, Serde)] + struct PaymentIntentData { + amount: u256, + currency: felt252, + customer: ContractAddress, + recipient: ContractAddress, + status: felt252 + } #[storage] struct Storage { - intent_counter: felt252, intents: LegacyMap, + next_intent_id: u128 } - - #[external] - fn create_intent( - ref self: ContractState, - amount: u256, - currency: felt252, + #[event] + #[derive(Drop, starknet::Event)] + enum Event { + IntentCreated: IntentCreated + } + + #[derive(Drop, starknet::Event, Serde)] + struct IntentCreated { + intent_id: felt252, customer: ContractAddress, recipient: ContractAddress, - ) { - let id = self.intent_counter.read(); - let new_id = id + 1; - self.intent_counter.write(new_id); - - let status = short_string!("created"); // Convert "created" to felt252 - - let intent = PaymentIntentData { - amount, - currency, - customer, - recipient, - status, - }; - - self.intents.write(new_id, intent); + amount: u256, + currency: felt252 } - - #[view] - fn get_intent(self: @ContractState, intent_id: felt252) -> PaymentIntentData { - self.intents.read(intent_id) + #[external(v0)] + impl PaymentIntentImpl of super::PaymentIntentInterface { + fn create_intent( + ref self: ContractState, + amount: u256, + currency: felt252, + customer: ContractAddress, + recipient: ContractAddress + ) -> felt252 { + let mut storage = self.storage(); + let intent_id = storage.next_intent_id.read(); + + let payment_intent = PaymentIntentData { + amount, + currency, + customer, + recipient, + status: 'created' + }; + + storage.intents.write(intent_id.into(), payment_intent); + storage.next_intent_id.write(intent_id + 1); + + self.emit(IntentCreated { + intent_id: intent_id.into(), + customer, + recipient, + amount, + currency + }); + + intent_id.into() + } + + #[view] + fn get_intent(self: @ContractState, intent_id: felt252) -> PaymentIntentData { + self.storage().intents.read(intent_id) + } } } From 5f4d9031924f278ba25e86b7e70c5d02fbc8f771 Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 15:34:25 +0100 Subject: [PATCH 6/7] Update payment_intent.cairo --- src/payment_intent.cairo | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo index 42781a9..9982b6f 100644 --- a/src/payment_intent.cairo +++ b/src/payment_intent.cairo @@ -1,27 +1,26 @@ #[starknet::contract] mod PaymentIntent { - use starknet::ContractAddress; - use starknet::get_caller_address; - + use starknet::{ContractAddress, get_caller_address}; + #[derive(Drop, starknet::Store, Serde)] struct PaymentIntentData { amount: u256, currency: felt252, customer: ContractAddress, recipient: ContractAddress, - status: felt252 + status: felt252, } #[storage] struct Storage { intents: LegacyMap, - next_intent_id: u128 + next_intent_id: u128, } #[event] #[derive(Drop, starknet::Event)] enum Event { - IntentCreated: IntentCreated + IntentCreated: IntentCreated, } #[derive(Drop, starknet::Event, Serde)] @@ -30,7 +29,7 @@ mod PaymentIntent { customer: ContractAddress, recipient: ContractAddress, amount: u256, - currency: felt252 + currency: felt252, } #[external(v0)] @@ -40,7 +39,7 @@ mod PaymentIntent { amount: u256, currency: felt252, customer: ContractAddress, - recipient: ContractAddress + recipient: ContractAddress, ) -> felt252 { let mut storage = self.storage(); let intent_id = storage.next_intent_id.read(); @@ -50,19 +49,22 @@ mod PaymentIntent { currency, customer, recipient, - status: 'created' + status: 'created', }; storage.intents.write(intent_id.into(), payment_intent); storage.next_intent_id.write(intent_id + 1); - self.emit(IntentCreated { - intent_id: intent_id.into(), - customer, - recipient, - amount, - currency - }); + self + .emit( + IntentCreated { + intent_id: intent_id.into(), + customer, + recipient, + amount, + currency, + }, + ); intent_id.into() } From 47be5ebee46cca2a2f37ccce46e78f64d401d41d Mon Sep 17 00:00:00 2001 From: Assad Isah Date: Mon, 9 Jun 2025 23:11:24 +0100 Subject: [PATCH 7/7] Update payment_intent.cairo --- src/payment_intent.cairo | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/payment_intent.cairo b/src/payment_intent.cairo index 9982b6f..a553606 100644 --- a/src/payment_intent.cairo +++ b/src/payment_intent.cairo @@ -55,16 +55,15 @@ mod PaymentIntent { storage.intents.write(intent_id.into(), payment_intent); storage.next_intent_id.write(intent_id + 1); - self - .emit( - IntentCreated { - intent_id: intent_id.into(), - customer, - recipient, - amount, - currency, - }, - ); + self.emit( + IntentCreated { + intent_id: intent_id.into(), + customer, + recipient, + amount, + currency, + }, + ); intent_id.into() }