Skip to content

Commit e973d7f

Browse files
committed
feat: log withdraw in doken when a transaction is maked as delievered and a user has an automatic payout
1 parent 22de1d1 commit e973d7f

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

helpers/class-tradesafeapiclient.php

+30
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,36 @@ public function getTransaction( $id ) {
536536
'state',
537537
)
538538
),
539+
( new Query( 'parties' ) )
540+
->setSelectionSet(
541+
array(
542+
'id',
543+
'role',
544+
( new Query( 'details' ) )
545+
->setSelectionSet(
546+
array(
547+
'tokenId',
548+
)
549+
),
550+
( new Query( 'calculation' ) )
551+
->setSelectionSet(
552+
array(
553+
'payout',
554+
)
555+
),
556+
( new Query( 'settings' ) )
557+
->setSelectionSet(
558+
array(
559+
( new Query( 'payout' ) )
560+
->setSelectionSet(
561+
array(
562+
'interval',
563+
)
564+
),
565+
)
566+
),
567+
)
568+
),
539569
)
540570
);
541571

src/class-tradesafe.php

+33
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,39 @@ public static function parse_request( $wp ) {
314314
} else {
315315
$order->add_order_note( __( 'Hooray! Your customer has accepted the goods or services. TradeSafe will release the funds.', 'tradesafe-payment-gateway' ) );
316316
}
317+
318+
if ( tradesafe_has_dokan() ) {
319+
$client = new \TradeSafe\Helpers\TradeSafeApiClient();
320+
$transaction = $client->getTransaction( $order->get_meta( 'tradesafe_transaction_id', true ) );
321+
322+
foreach ( $transaction['parties'] as $party ) {
323+
if ( 'BENEFICIARY_MERCHANT' === $party['role'] && ! in_array( $party['settings']['payout']['interval'], array( 'ACCOUNT', 'WALLET' ), true ) ) {
324+
325+
$user = get_users(
326+
array(
327+
'meta_key' => tradesafe_token_meta_key(),
328+
'meta_value' => $party['details']['tokenId'],
329+
'number' => 1,
330+
)
331+
);
332+
333+
$vendor = reset( $user );
334+
335+
$withdraw = new \WeDevs\Dokan\Withdraw\Withdraw();
336+
337+
$withdraw
338+
->set_user_id( $vendor->ID )
339+
->set_amount( $party['calculation']['payout'] )
340+
->set_date( dokan_current_datetime()->format( 'Y-m-d H:i:s' ) )
341+
->set_status( dokan()->withdraw->get_status_code( 'completed' ) )
342+
->set_method( 'tradesafe' )
343+
->set_ip( dokan_get_client_ip() )
344+
->set_note( 'Completed transaction: ' . $transaction['id'] );
345+
346+
$result = $withdraw->save();
347+
}
348+
}
349+
}
317350
exit;
318351
}
319352

0 commit comments

Comments
 (0)