Skip to content

Commit

Permalink
Merge pull request #375 from krokedil/develop-update-payment-method
Browse files Browse the repository at this point in the history
Explicitly set the payment method
  • Loading branch information
MichaelBengtsson committed Mar 12, 2024
2 parents 9daa815 + 6e1aa9a commit dab2dfb
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 29 deletions.
20 changes: 1 addition & 19 deletions classes/class-kp-subscriptions.php
Expand Up @@ -82,7 +82,7 @@ public function process_scheduled_payment( $amount_to_charge, $renewal_order ) {
if ( ! is_wp_error( $response ) ) {
$klarna_order_id = $response['order_id'];
$renewal_order->add_order_note( sprintf( __( 'Subscription payment made with Klarna. Klarna order id: %s', 'klarna-payments-for-woocommerce' ), $klarna_order_id ) );
self::save_order_meta_data( $renewal_order, $response );
kp_save_order_meta_data( $renewal_order, $response );
} else {
$error_message = $response->get_error_message();
// Translators: Error message.
Expand Down Expand Up @@ -328,25 +328,7 @@ public static function is_change_payment_method() {
return isset( $_GET['change_payment_method'] );
}

/**
* Process the response from a Klarna request to store meta data about an order.
*
* @param WC_Order $renewal_order The WooCommerce order.
* @param array $response Response from Klarna request that contain order details.
*
* @return void
*/
public static function save_order_meta_data( $order, $response ) {
$environment = 'yes' === get_option( 'woocommerce_klarna_payments_settings' )['testmode'] ? 'test' : 'live';

$order->update_meta_data( '_wc_klarna_environment', $environment );
$order->update_meta_data( '_wc_klarna_country', kp_get_klarna_country( $order ) );
$order->update_meta_data( '_wc_klarna_order_id', $response['order_id'], true );
$order->set_transaction_id( $response['order_id'] );
$order->set_payment_method_title( 'Klarna' );

$order->save();
}

/**
* Check if an order contains a subscription.
Expand Down
22 changes: 12 additions & 10 deletions includes/kp-functions.php
Expand Up @@ -65,40 +65,42 @@ function kp_get_klarna_country( $order = false ) {
}

/**
* Process authorization or callback response for accepted or pending Klarna orders.
* Process the response from a Klarna request to store meta data about an order.
*
* @param WC_Order $order WooCommerce order.
* @param array $decoded Klarna authorization or callback response.
* Also used for processing authorization or callback response for accepted or pending Klarna orders.
*
* @param WC_Order $order The WooCommerce order.
* @param array $response Response from Klarna request that contain order details.
*
* @return void
*/
function kp_process_auth_or_callback( $order, $response ) {

function kp_save_order_meta_data( $order, $response ) {
$environment = 'yes' === get_option( 'woocommerce_klarna_payments_settings' )['testmode'] ? 'test' : 'live';

$order->update_meta_data( '_wc_klarna_environment', $environment );
$order->update_meta_data( '_wc_klarna_country', kp_get_klarna_country( $order ) );
$order->update_meta_data( '_wc_klarna_order_id', $response['order_id'], true );
$order->set_transaction_id( $response['order_id'] );
$order->set_payment_method_title( 'Klarna' );
$order->set_payment_method( 'klarna_payments' );

$order->save();
}

/**
* Process accepted Klarna Payments order.
*
* @param WC_Order $order WooCommerce order.
* @param array $decoded Klarna order.
* @param string|bool $recurring_token Recurring token.
* @param WC_Order $order WooCommerce order.
* @param array $decoded Klarna order.
* @param string|bool $recurring_token Recurring token.
*
* @return array $result Payment result.
*/
function kp_process_accepted( $order, $decoded, $recurring_token = false ) {
$kp_gateway = new WC_Gateway_Klarna_Payments();
$order->payment_complete( $decoded['order_id'] );
$order->add_order_note( 'Payment via Klarna Payments, order ID: ' . $decoded['order_id'] );
kp_process_auth_or_callback( $order, $decoded );
kp_save_order_meta_data( $order, $decoded );

if ( $recurring_token ) {
KP_Subscription::save_recurring_token( $order->get_id(), $recurring_token );
Expand All @@ -124,7 +126,7 @@ function kp_process_accepted( $order, $decoded, $recurring_token = false ) {
function kp_process_pending( $order, $decoded ) {
$kp_gateway = new WC_Gateway_Klarna_Payments();
$order->update_status( 'on-hold', 'Klarna order is under review, order ID: ' . $decoded['order_id'] );
kp_process_auth_or_callback( $order, $decoded );
kp_save_order_meta_data( $order, $decoded );
do_action( 'wc_klarna_payments_pending', $order->get_id(), $decoded );
do_action( 'wc_klarna_pending', $order->get_id(), $decoded );
return array(
Expand Down

0 comments on commit dab2dfb

Please sign in to comment.