3

Shopifyトランザクションデータ(python apiクライアントから)にSagePayを含むトランザクションを照会すると、クライアントが返されたxmlを解析しようとすると、エラーが発生します。

Error(Error('Unable to parse xml data: not well-formed (invalid token): line 24, column 7',),)

これは、3Dセキュアステータスを示す無効なxmlタグ名を含むトランザクション/レシート要素の内容が原因であると思われます。

例えば:

<?xml version="1.0" encoding="UTF-8"?>
<transactions type="array">
  <transaction>
    <order-id type="integer">123456789</order-id>
    <amount type="decimal">123.45</amount>
    <status>success</status>
    <kind>sale</kind>
    <authorization>{-REDACTED-}</authorization>
    <created-at type="datetime">2012-01-01T01:01:01+00:00</created-at>
    <gateway>sage_pay_form</gateway>
    <id type="integer">123456789</id>
    <test type="boolean">false</test>
    <receipt>
      <VendorTxCode>123456789</VendorTxCode>
      <VPSTxId>{-REDACTED-}</VPSTxId>
      <Status>OK</Status>
      <StatusDetail>0000 : The Authorisation was Successful.</StatusDetail>
      <TxAuthNo>123456789</TxAuthNo>
      <AVSCV2>SECURITY CODE MATCH ONLY</AVSCV2>
      <AddressResult>NOTMATCHED</AddressResult>
      <PostCodeResult>NOTMATCHED</PostCodeResult>
      <CV2Result>MATCHED</CV2Result>
      <GiftAid>0</GiftAid>
      <3DSecureStatus>OK</3DSecureStatus>
      <CAVV>-REDACTED-</CAVV>
      <CardType>MC</CardType>
      <Last4Digits>1234</Last4Digits>
      <Amount>123.45</Amount>
    </receipt>
  </transaction>
</transactions>

As '3DSecureStatus' is not a valid xml element name, xml parsing fails.

json apipython apiクライアントがサポートしていないため、現在、を使用することはできません。

4

1 に答える 1

0

無効なXML要素名を送信しないようにShopifyを修正する必要があります。たとえば、要素名の前にアンダースコアを付けることができます。それが終わったら、ここで更新します。

shopify python APIでのJSONサポートの欠如は、実際にはpyactiveresourceでのサポートの欠如が原因です。使用できるactiveresourceのアップストリームにJSONサポートパッチを送信しました。上流の活動がないため、無視されたようです。

更新:Shopifyは、無効な要素名を持つXMLを返さないように修正されました。代わりに、要素名に無効な開始文字の前にアンダースコアを付けます。

于 2012-11-15T16:22:13.087 に答える