mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-07 19:54:15 +08:00
Set transaction id after manual capture
This commit is contained in:
parent
58cb230867
commit
94c3356c82
3 changed files with 42 additions and 10 deletions
|
@ -55,6 +55,7 @@ return array(
|
|||
$subscription_helper = $container->get( 'subscription.helper' );
|
||||
$page_id = $container->get( 'wcgateway.current-ppcp-settings-page-id' );
|
||||
$environment = $container->get( 'onboarding.environment' );
|
||||
$logger = $container->get( 'woocommerce.logger.woocommerce' );
|
||||
return new PayPalGateway(
|
||||
$settings_renderer,
|
||||
$order_processor,
|
||||
|
@ -67,7 +68,8 @@ return array(
|
|||
$transaction_url_provider,
|
||||
$subscription_helper,
|
||||
$page_id,
|
||||
$environment
|
||||
$environment,
|
||||
$logger
|
||||
);
|
||||
},
|
||||
'wcgateway.credit-card-gateway' => static function ( ContainerInterface $container ): CreditCardGateway {
|
||||
|
|
|
@ -9,6 +9,7 @@ declare(strict_types=1);
|
|||
|
||||
namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
||||
use WooCommerce\PayPalCommerce\Onboarding\Environment;
|
||||
use WooCommerce\PayPalCommerce\Onboarding\State;
|
||||
|
@ -120,6 +121,13 @@ class PayPalGateway extends \WC_Payment_Gateway {
|
|||
*/
|
||||
protected $environment;
|
||||
|
||||
/**
|
||||
* The logger.
|
||||
*
|
||||
* @var LoggerInterface
|
||||
*/
|
||||
private $logger;
|
||||
|
||||
/**
|
||||
* PayPalGateway constructor.
|
||||
*
|
||||
|
@ -135,6 +143,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
|
|||
* @param SubscriptionHelper $subscription_helper The subscription helper.
|
||||
* @param string $page_id ID of the current PPCP gateway settings page, or empty if it is not such page.
|
||||
* @param Environment $environment The environment.
|
||||
* @param LoggerInterface $logger The logger.
|
||||
*/
|
||||
public function __construct(
|
||||
SettingsRenderer $settings_renderer,
|
||||
|
@ -148,7 +157,8 @@ class PayPalGateway extends \WC_Payment_Gateway {
|
|||
TransactionUrlProvider $transaction_url_provider,
|
||||
SubscriptionHelper $subscription_helper,
|
||||
string $page_id,
|
||||
Environment $environment
|
||||
Environment $environment,
|
||||
LoggerInterface $logger
|
||||
) {
|
||||
|
||||
$this->id = self::ID;
|
||||
|
@ -162,6 +172,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
|
|||
$this->transaction_url_provider = $transaction_url_provider;
|
||||
$this->page_id = $page_id;
|
||||
$this->environment = $environment;
|
||||
$this->logger = $logger;
|
||||
$this->onboarded = $state->current_state() === State::STATE_ONBOARDED;
|
||||
|
||||
if ( $this->onboarded ) {
|
||||
|
@ -274,6 +285,8 @@ class PayPalGateway extends \WC_Payment_Gateway {
|
|||
|
||||
$capture = end( $captures );
|
||||
|
||||
$this->update_transaction_id( $capture->id(), $wc_order, $this->logger );
|
||||
|
||||
$this->handle_capture_status( $capture, $wc_order );
|
||||
|
||||
if ( AuthorizedPaymentsProcessor::SUCCESSFUL === $result_status ) {
|
||||
|
|
|
@ -5,6 +5,7 @@ namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
|
|||
|
||||
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Psr\Log\NullLogger;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Capture;
|
||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
||||
use WooCommerce\PayPalCommerce\Onboarding\Environment;
|
||||
|
@ -80,7 +81,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
expect('wc_get_order')
|
||||
|
@ -130,7 +132,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
expect('wc_get_order')
|
||||
|
@ -197,7 +200,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
expect('wc_get_order')
|
||||
|
@ -224,6 +228,8 @@ class WcGatewayTest extends TestCase
|
|||
public function testCaptureAuthorizedPayment() {
|
||||
expect('is_admin')->andReturn(false);
|
||||
|
||||
$transactionId = 'abcd1234';
|
||||
|
||||
$wcOrder = Mockery::mock(\WC_Order::class);
|
||||
$wcOrder
|
||||
->expects('add_order_note');
|
||||
|
@ -233,13 +239,20 @@ class WcGatewayTest extends TestCase
|
|||
$wcOrder
|
||||
->expects('payment_complete');
|
||||
$wcOrder
|
||||
->expects('save');
|
||||
->expects('set_transaction_id')
|
||||
->with($transactionId);
|
||||
$wcOrder
|
||||
->shouldReceive('save')
|
||||
->atLeast()->once();
|
||||
$settingsRenderer = Mockery::mock(SettingsRenderer::class);
|
||||
$orderProcessor = Mockery::mock(OrderProcessor::class);
|
||||
$capture = Mockery::mock(Capture::class);
|
||||
$capture
|
||||
->shouldReceive('status')
|
||||
->andReturn(new CaptureStatus(CaptureStatus::COMPLETED));
|
||||
$capture
|
||||
->shouldReceive('id')
|
||||
->andReturn($transactionId);
|
||||
$authorizedPaymentsProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
|
||||
$authorizedPaymentsProcessor
|
||||
->expects('process')
|
||||
|
@ -276,7 +289,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
$this->assertTrue($testee->capture_authorized_payment($wcOrder));
|
||||
|
@ -332,7 +346,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
$this->assertTrue($testee->capture_authorized_payment($wcOrder));
|
||||
|
@ -385,7 +400,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
$this->assertFalse($testee->capture_authorized_payment($wcOrder));
|
||||
|
@ -426,7 +442,8 @@ class WcGatewayTest extends TestCase
|
|||
$transactionUrlProvider,
|
||||
$subscriptionHelper,
|
||||
PayPalGateway::ID,
|
||||
$this->environment
|
||||
$this->environment,
|
||||
new NullLogger()
|
||||
);
|
||||
|
||||
$this->assertSame($needSetup, $testee->needs_setup());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue