Get subscription payment method
gkrteam opened this issue · comments
Hi,
I tried to get the payment method of a user for a subscription. I searched in the Paddle docs and it seems that payment methods are linked on transactions and not on subscriptions.
So I added the following code in the subscription class (based on what had been done for Cashier Paddle V1):
/**
* Get the payment method details from the subscription.
*
* @return array
*/
public function paymentMethodDetails()
{
$paymentAttempts = $this->transactions()->orderByDesc('billed_at')->first()->asPaddleTransaction()['payments'];
$paymentMethodDetails = collect($paymentAttempts)->whereIn('status', ['captured', 'authorized'])->first()['method_details'] ?? '';
return $paymentMethodDetails;
}
/**
* Get the payment method type from the subscription.
*
* @return string
*/
public function paymentMethod()
{
return $this->paymentMethodDetails()['type'] ?? '';
}
/**
* Get the card type from the subscription.
*
* @return string
*/
public function cardType()
{
return $this->paymentMethodDetails()['card']['type'] ?? '';
}
/**
* Get the last four digits from the subscription if it's a credit card.
*
* @return string
*/
public function cardLastFour()
{
return $this->paymentMethodDetails()['card']['last4'] ?? '';
}
/**
* Get the card expiry month.
*
* @return string
*/
public function cardExpiryMonth()
{
return $this->paymentMethodDetails()['card']['expiry_month'] ?? '';
}
/**
* Get the card expiry year.
*
* @return string
*/
public function cardExpiryYear()
{
return $this->paymentMethodDetails()['card']['expiry_year'] ?? '';
}
/**
* Get the cardholder's name.
*
* @return string
*/
public function cardholderName()
{
return $this->paymentMethodDetails()['card']['cardholder_name'] ?? '';
}
In the paymentMethodDetails
function, I filtered by captured
and authorized
statuses because I noticed that the authorized status was returned when a transaction was made to update the payment method.
I don't know if this is the way to go, I'd like to get some feedback on this. Thanks!
Unfortunately it's not possible to retrieve the payment method for subscriptions in Paddle Billing. If you'd like this feature, I suggest you contact Paddle to add this to their API's so we can retrieve it.