chargebee-typescript icon indicating copy to clipboard operation
chargebee-typescript copied to clipboard

portal_session.create returning invalid response

Open ankero opened this issue 1 year ago • 2 comments

Hi,

The client.portal_session.create().request() is returning an invalid response. It is only including the responseHeaders to the response. The server is returning the portal session, but the library has a bug in core.js responseHandler on line response = new result_1.Result(response, responseHeaders); that causes the response to be dropped and only the responseHeaders get returned.

Reproduce just by calling that API with this library.

Here's the request I made to produce this issue:

const response = await chargebeeClient.portal_session.create({
        customer: {
          id: customerId,
        },
      }).request()

Workaround can be done with direct API call, for example:

  private async createPortalSession(
    customerId: string,
  ): Promise<PortalSession> {
    try {
      /**
       * this.chargebeeClient.portal_session.create().request() is
       * broken. So we'll use axios until its fixed.
       */
      const { data } = await axios.post(
        `https://${this.apiAuth?.site}.chargebee.com/api/v2/portal_sessions?customer[id]=${customerId}`,
        {},
        {
          headers: {
            Authorization: `Basic ${Buffer.from(
              `${this.apiAuth?.api_key}:`,
            ).toString("base64")}`,
            "Content-Type": "application/json",
          },
        },
      );
      // @ts-ignore response
      return data.portal_session as PortalSession;
    } catch (error) {
      console.error("Failed to create portal session", error);
      throw error;
    }
  }

ankero avatar Mar 22 '24 11:03 ankero

Hi @ankero, I'm sorry about the delay in responding to this. I'm able to see this working correctly using the SDK. Sharing the code snipped that works for me:

const response = await chargebee.portal_session
      .create({
        customer: {
          id: "customer_id"
        }
      })
      .request();
console.log(response.portal_session);

Could you give this a try and let us know if it works for you? Please share the error details if you see any.

cb-sriramthiagarajan avatar Apr 23 '24 09:04 cb-sriramthiagarajan

Hi @ankero, did you get a chance to try this out? Let me know if you're still facing any issues.

cb-sriramthiagarajan avatar May 14 '24 07:05 cb-sriramthiagarajan