There is no action to retrieve the product from a charge.succeeded, nor is there any data in the charge.succeeded event that can lead you back to the source product.
The metadata in this case isn't the metadata associated with the product, but rather with the charge.succeeded event.
Update June 2022
I've since contributed Stripe actions in Pipedream to do these two calls, so there's no need to code custom API calls.
Pre June 2022
To do what I wanted I had to:
- change the trigger to look for checkout.session.completed, which occurs when a checkout has finished.
- grab the checkout session ID and use that to call the stripe API and get the line items:
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
stripe: {
type: "app",
app: "stripe",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.stripe.com/v1/checkout/sessions/${steps.trigger.event.data.object.id}/line_items?limit=5`,
auth: {
username: `${this.stripe.$auth.api_key}`,
password: ``,
},
})
},
})
- The line items contain a price which in turn references a product, so use the output of the checkout session line items request to grab the product id:
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
stripe: {
type: "app",
app: "stripe",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://api.stripe.com/v1/products/${steps.stripe.$return_value.data[0].price.product}`,
auth: {
username: `${this.stripe.$auth.api_key}`,
password: ``,
},
})
},
})
- Use the output of that to get the metadata and use it in the mailerlite _subscribe_to_group action.