CyberSource / CyberSource/cybersource-rest-samples-python
PostCustomerRequest not honoring buyer_information.merchant_customer_id
オープン
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 29
- フォーク
- 34
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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 = "user@example.com"
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":"user@example.com"},"clientReferenceInformation":{"code":"TC50171_3"},"metadata":{"creator":"creator_id_here"}}
API RESPONSE DATA : {'buyer_information': {'email': 'user@example.com',
'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
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
console/create_customer.py から始め、例の値を使って CustomerApi 経由で PostCustomerRequest を再現します。シリアライズされたリクエストと返された buyer_information を比較します。merchant_customer_id が送信され、API レスポンスに保持されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- api
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100