BOC-3: use relay_integration.load_card_from_erpnext() for proper card matching
This commit is contained in:
parent
6ca835b1b4
commit
ad41de817c
1 changed files with 22 additions and 37 deletions
|
|
@ -64,20 +64,13 @@ PW_CARD_EXP_YEAR = os.environ.get("PW_CARD_EXP_YEAR", "")
|
|||
def _load_matching_card(order_number: str) -> dict:
|
||||
"""Load PW company card matching the customer's payment method.
|
||||
|
||||
We have 3 company cards tied to payment processors:
|
||||
- PW-STRIPE → used when customer paid via card or Klarna
|
||||
- PW-PAYPAL → used when customer paid via PayPal
|
||||
- PW-CRYPTO → used when customer paid via crypto
|
||||
Uses relay_integration.load_card_from_erpnext() which maps:
|
||||
- card/ach/klarna → Stripe Issuing virtual card (SID-0002)
|
||||
- paypal → PayPal Mastercard (SID-0001)
|
||||
- crypto → crypto filing card
|
||||
|
||||
Cards stored in ERPNext Sensitive ID documents.
|
||||
Falls back to env vars if ERPNext lookup fails.
|
||||
"""
|
||||
card = {
|
||||
"first_name": PW_CARD_FIRST, "last_name": PW_CARD_LAST,
|
||||
"number": PW_CARD_NUMBER, "cvc": PW_CARD_CVC,
|
||||
"exp_month": PW_CARD_EXP_MONTH, "exp_year": PW_CARD_EXP_YEAR,
|
||||
}
|
||||
|
||||
try:
|
||||
import psycopg2
|
||||
conn = psycopg2.connect(os.environ.get("DATABASE_URL", ""))
|
||||
|
|
@ -90,35 +83,27 @@ def _load_matching_card(order_number: str) -> dict:
|
|||
conn.close()
|
||||
payment_method = (row[0] or "card") if row else "card"
|
||||
|
||||
# Map customer payment method → our company card
|
||||
card_map = {
|
||||
"card": "PW-STRIPE",
|
||||
"klarna": "PW-STRIPE",
|
||||
"ach": "PW-STRIPE",
|
||||
"paypal": "PW-PAYPAL",
|
||||
"crypto": "PW-CRYPTO",
|
||||
}
|
||||
card_name = card_map.get(payment_method, "PW-STRIPE")
|
||||
|
||||
from scripts.workers.erpnext_client import ERPNextClient
|
||||
erp = ERPNextClient()
|
||||
doc = erp.get_resource("Sensitive ID", card_name)
|
||||
|
||||
card = {
|
||||
"first_name": doc.get("custom_first_name", PW_CARD_FIRST),
|
||||
"last_name": doc.get("custom_last_name", PW_CARD_LAST),
|
||||
"number": doc.get("custom_card_number", ""),
|
||||
"cvc": doc.get("custom_cvc", ""),
|
||||
"exp_month": doc.get("custom_exp_month", ""),
|
||||
"exp_year": doc.get("custom_exp_year", ""),
|
||||
}
|
||||
LOG.info("[boc3] Using %s for order %s (customer paid via %s)",
|
||||
card_name, order_number, payment_method)
|
||||
|
||||
from scripts.workers.relay_integration import load_card_from_erpnext
|
||||
card_details = load_card_from_erpnext(payment_method)
|
||||
if card_details:
|
||||
LOG.info("[boc3] Using %s card for order %s (customer paid via %s)",
|
||||
card_details.masked(), order_number, payment_method)
|
||||
return {
|
||||
"first_name": card_details.cardholder_name.split()[0] if card_details.cardholder_name else PW_CARD_FIRST,
|
||||
"last_name": " ".join(card_details.cardholder_name.split()[1:]) if card_details.cardholder_name else PW_CARD_LAST,
|
||||
"number": card_details.card_number,
|
||||
"cvc": card_details.cvv,
|
||||
"exp_month": card_details.exp_month,
|
||||
"exp_year": card_details.exp_year,
|
||||
}
|
||||
except Exception as exc:
|
||||
LOG.warning("[boc3] Card lookup failed for %s: %s (using env fallback)", order_number, exc)
|
||||
|
||||
return card
|
||||
return {
|
||||
"first_name": PW_CARD_FIRST, "last_name": PW_CARD_LAST,
|
||||
"number": PW_CARD_NUMBER, "cvc": PW_CARD_CVC,
|
||||
"exp_month": PW_CARD_EXP_MONTH, "exp_year": PW_CARD_EXP_YEAR,
|
||||
}
|
||||
|
||||
# Account password for carriers on processagent.com
|
||||
# We create a unique account per carrier with a standard password
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue