Skip to content

PostCustomerRequest not honoring buyer_information.merchant_customer_id #83

@ishbr-wayleadr

Description

@ishbr-wayleadr

When I submit a PostCustomerRequest through CustomerApi the return_data shows the merchant_customer_id as None instead of the value I assigned to it.

Here's the code I'm using to test it:

# ENV_NAME=production python3 console/create_customer.py

import json
import os
import sys
from pathlib import Path

from CyberSource import (
    CustomerApi,
    PostCustomerRequest,
    Tmsv2customersBuyerInformation,
    Tmsv2customersClientReferenceInformation,
    Tmsv2customersMerchantDefinedInformation,
)

from config.cybersource_configuration import (
    CybersourceConfiguration,
)

# Environment (sandbox or production)
ENV_NAME = os.environ.get("ENV_NAME", "sandbox")
dir_path = os.path.dirname(os.path.realpath(__file__))


def del_none(d):
    """
    Delete None values in Input Request Json body
    """
    for key, value in list(d.items()):
        if value is None:
            del d[key]
        elif isinstance(value, dict):
            del_none(value)
    return d


def write_log_audit(status):
    print(f"[Sample Code Testing] [{Path(__file__).stem}] {status}")


buyer_information_merchant_customer_id = "user-1234567890"
buyer_information_email = "[email protected]"
buyer_information = Tmsv2customersBuyerInformation(
    merchant_customer_id=buyer_information_merchant_customer_id,
    email=buyer_information_email,
)

clientReferenceInformationCode = "TC50171_3"
clientReferenceInformation = Tmsv2customersClientReferenceInformation(
    code=clientReferenceInformationCode
)

requestObj = PostCustomerRequest(
    buyer_information=buyer_information.__dict__,
    client_reference_information=clientReferenceInformation.__dict__,
)


requestObj = del_none(requestObj.__dict__)
requestObj = json.dumps(requestObj)

print(requestObj)

try:
    configuration = CybersourceConfiguration()
    client_config = configuration.get_configuration()
    api_instance = CustomerApi(client_config)
    return_data, status, body = api_instance.post_customer(requestObj)

    print("\nAPI RESPONSE CODE : ", status)
    print("\nAPI RESPONSE BODY : ", body)
    print("\nAPI RESPONSE DATA : ", return_data)

    write_log_audit(status)

except Exception as e:
    write_log_audit(str(e))
    print(f"\nException when calling CustomerApi->post_customer: {e}\n")

And here's the response I get back:

❯ python -m console.create_customer

API RESPONSE CODE :  201

API RESPONSE BODY :  {"_links":{"self":{"href":"/tms/v2/customers/41ADA55F0277F548E063AF598E0AFAD3"},"paymentInstruments":{"href":"/tms/v2/customers/41ADA55F0277F548E063AF598E0AFAD3/payment-instruments"},"shippingAddresses":{"href":"/tms/v2/customers/41ADA55F0277F548E063AF598E0AFAD3/shipping-addresses"}},"id":"41ADA55F0277F548E063AF598E0AFAD3","buyerInformation":{"email":"[email protected]"},"clientReferenceInformation":{"code":"TC50171_3"},"metadata":{"creator":"creator_id_here"}}

API RESPONSE DATA :  {'buyer_information': {'email': '[email protected]',
                       'merchant_customer_id': None},
 'client_reference_information': {'code': 'TC50171_3'},
 'default_payment_instrument': None,
 'default_shipping_address': None,
 'embedded': None,
 'id': '41ADA55F0277F548E063AF598E0AFAD3',
 'links': {'_self': {'href': '/tms/v2/customers/41ADA55F0277F548E063AF598E0AFAD3'},
           'payment_instruments': {'href': '/tms/v2/customers/41ADA55F0277F548E063AF598E0AFAD3/payment-instruments'},
           'shipping_address': None},
 'merchant_defined_information': None,
 'metadata': {'creator': 'creator_id_here'},
 'object_information': None}
[Sample Code Testing] [create_customer] 201

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions