Square enhancements
This commit is contained in:
@@ -35,7 +35,8 @@ class SquareService:
|
||||
idempotency_key: Optional[str] = None,
|
||||
customer_id: Optional[str] = None,
|
||||
reference_id: Optional[str] = None,
|
||||
note: Optional[str] = None
|
||||
note: Optional[str] = None,
|
||||
billing_details: Optional[Dict] = None
|
||||
) -> Dict:
|
||||
"""
|
||||
Create a payment using Square
|
||||
@@ -47,6 +48,7 @@ class SquareService:
|
||||
customer_id: Optional Square customer ID
|
||||
reference_id: Optional reference ID for internal tracking
|
||||
note: Optional note about the payment
|
||||
billing_details: Optional billing address and cardholder name for AVS
|
||||
|
||||
Returns:
|
||||
Dict with payment result including payment_id, status, and details
|
||||
@@ -60,19 +62,49 @@ class SquareService:
|
||||
# For GBP, this is pence
|
||||
amount_in_pence = int(amount_money * 100)
|
||||
|
||||
# Create payment - pass parameters directly as keyword arguments
|
||||
result = self.client.payments.create(
|
||||
source_id=source_id,
|
||||
idempotency_key=idempotency_key,
|
||||
amount_money={
|
||||
# Build payment parameters
|
||||
payment_params = {
|
||||
'source_id': source_id,
|
||||
'idempotency_key': idempotency_key,
|
||||
'amount_money': {
|
||||
'amount': amount_in_pence,
|
||||
'currency': 'GBP'
|
||||
},
|
||||
location_id=self.location_id,
|
||||
customer_id=customer_id if customer_id else None,
|
||||
reference_id=reference_id if reference_id else None,
|
||||
note=note if note else None
|
||||
)
|
||||
'location_id': self.location_id
|
||||
}
|
||||
|
||||
# Add billing address for AVS if provided
|
||||
if billing_details:
|
||||
# Add buyer email if available
|
||||
if billing_details.get('email'):
|
||||
payment_params['buyer_email_address'] = billing_details.get('email')
|
||||
|
||||
# Build billing address for AVS
|
||||
billing_address = {}
|
||||
if billing_details.get('address_line_1'):
|
||||
billing_address['address_line_1'] = billing_details.get('address_line_1')
|
||||
if billing_details.get('address_line_2'):
|
||||
billing_address['address_line_2'] = billing_details.get('address_line_2')
|
||||
if billing_details.get('city'):
|
||||
billing_address['locality'] = billing_details.get('city')
|
||||
if billing_details.get('postal_code'):
|
||||
billing_address['postal_code'] = billing_details.get('postal_code')
|
||||
if billing_details.get('country'):
|
||||
billing_address['country'] = billing_details.get('country')
|
||||
|
||||
if billing_address:
|
||||
payment_params['billing_address'] = billing_address
|
||||
|
||||
# Add optional parameters
|
||||
if customer_id:
|
||||
payment_params['customer_id'] = customer_id
|
||||
if reference_id:
|
||||
payment_params['reference_id'] = reference_id
|
||||
if note:
|
||||
payment_params['note'] = note
|
||||
|
||||
# Create payment - pass parameters directly as keyword arguments
|
||||
result = self.client.payments.create(**payment_params)
|
||||
|
||||
if result.errors:
|
||||
# Payment failed - extract user-friendly error messages
|
||||
|
||||
Reference in New Issue
Block a user