Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
glaubersilva committed May 31, 2024
1 parent e8f9f03 commit 80373dd
Show file tree
Hide file tree
Showing 10 changed files with 191 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ public static function fromArray(array $data): OffSiteGatewayPayment
$self = new self();

$self->id = $data['id'] ?? '';
$self->checkoutUrl = $data['checkoutUrl'] ?? '';
$self->checkoutUrl = add_query_arg('off-site-gateway-simulation', true, home_url());

//$data['checkoutUrl'] ?? '';

return $self;
}
Expand Down
35 changes: 34 additions & 1 deletion src/OffSiteGateway/Gateway/OffSiteGateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Give\Framework\PaymentGateways\Commands\RedirectOffsite;
use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException;
use Give\Framework\PaymentGateways\PaymentGateway;
use Give\Framework\Support\Facades\Scripts\ScriptAsset;
use GiveAddon\OffSiteGateway\DataTransferObjects\OffSiteGatewayPayment;

/**
Expand Down Expand Up @@ -73,11 +74,43 @@ public function getPaymentMethodLabel(): string
}

/**
* Add support to v2 forms
*
* @unreleased
*/
public function getLegacyFormFieldMarkup(int $formId, array $args): string
{
return '<p>The Off-Site Gateway Logo Goes Here...</p>';
return sprintf(
'<div style="text-align: center;"><img src="%s" alt="OffSite Gateway Logo" /><p>%s</p></div>',
ADDON_CONSTANT_URL . 'src/OffSiteGateway/Gateway/resources/logo.svg',
__('You will be redirected to an Off-Site Gateway simulation where will be possible to complete the payment and trigger webhook notifications for test purposes.',
'ADDON_TEXTDOMAIN')
);
}

/**
* Add support to v3 forms
*
* @unreleased
*/
public function enqueueScript(int $formId)
{
$assets = ScriptAsset::get(trailingslashit(ADDON_CONSTANT_DIR) . '/build/GiveAddonOffSiteGateway.asset.php');

wp_enqueue_script(
self::id(),
trailingslashit(ADDON_CONSTANT_URL) . 'build/GiveAddonOffSiteGateway.js',
$assets['dependencies'],
$assets['version'],
true
);

wp_enqueue_style(
self::id(),
trailingslashit(ADDON_CONSTANT_URL) . 'build/GiveAddonOffSiteGateway.css',
[],
$assets['version']
);
}

/**
Expand Down
24 changes: 24 additions & 0 deletions src/OffSiteGateway/Gateway/OffSiteSimulation.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace GiveAddon\OffSiteGateway\Gateway;

class OffSiteSimulation
{
public function __invoke()
{
if ( ! isset($_GET['off-site-gateway-simulation'])) {
return;
}

$referrer = $_SERVER['HTTP_REFERER'];

//V2 referrer: https://givewp.local/give/v2-tests?giveDonationFormInIframe=1

//V3 referrer: https://givewp.local/?givewp-route=donation-form-view&form-id=1350


echo 'Off-site Gateway Simulation';

exit();
}
}
24 changes: 24 additions & 0 deletions src/OffSiteGateway/Gateway/resources/OffSiteGateway.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import OffSiteGatewayLogo from './OffSiteGatewayLogo';
import {Gateway} from './types';
import {__} from '@wordpress/i18n';

import './styles.scss';

const mollieGateway: Gateway = {
id: 'ADDON_ID-off-site-gateway',
Fields() {
return (
<div style={{textAlign: 'center'}}>
<OffSiteGatewayLogo />
<p>
{__(
'You will be redirected to an Off-Site Gateway simulation where will be possible to complete the payment and trigger webhook notifications for test purposes.',
'ADDON_TEXTDOMAIN'
)}
</p>
</div>
);
},
};

window.givewp.gateways.register(mollieGateway);
5 changes: 5 additions & 0 deletions src/OffSiteGateway/Gateway/resources/OffSiteGatewayLogo.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import logo from './logo.svg';

export default function MollieLogo() {
return <img src={logo} alt="OffSite Gateway Logo" />;
}
26 changes: 26 additions & 0 deletions src/OffSiteGateway/Gateway/resources/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions src/OffSiteGateway/Gateway/resources/styles.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.givewp-fields-gateways__gateway--ADDON_ID-off-site-gateway {
.givewp-fields-gateways__gateway__icon::before {
content: '\f4be';
}
}
65 changes: 65 additions & 0 deletions src/OffSiteGateway/Gateway/resources/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import {FC} from 'react';

export interface GatewaySettings {
label: string;
}

export interface RegisteredGateway {
/**
* The gateway ID. Must be the same as the back-end
*/
id: string;

/**
* The gateway label
*/
label?: string;

/**
* Settings for the gateway as sent from the back-end
*/
settings?: GatewaySettings;

/**
* Whether the gateway supports recurring donations
*/
supportsSubscriptions?: boolean;
}

export interface Gateway extends RegisteredGateway {
/**
* Initialize function for the gateway. The settings are passed to the gateway
* from the server. This is called once before the form is rendered.
*/
initialize?(): void;

/**
* The component to render when the gateway is selected
*/
Fields: FC;

/**
* A hook before the form is submitted.
*/
beforeCreatePayment?(values: FormData): Promise<object> | Error;

/**
* A hook after the form is submitted.
*/
afterCreatePayment?(response: FormResponse): Promise<void> | Error;
}

interface FormResponse {
type: string;
data: any;
}

declare global {
interface Window {
givewp: {
gateways: {
register: (gateway: Gateway) => void;
};
};
}
}
4 changes: 4 additions & 0 deletions src/OffSiteGateway/OffSiteGatewayServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@

use Exception;
use Give\Framework\PaymentGateways\PaymentGatewayRegister;
use Give\Helpers\Hooks;
use Give\ServiceProviders\ServiceProvider;
use GiveAddon\OffSiteGateway\Gateway\OffSiteGateway;
use GiveAddon\OffSiteGateway\Gateway\OffSiteSimulation;

/**
* @unreleased
Expand Down Expand Up @@ -33,5 +35,7 @@ function (PaymentGatewayRegister $registrar) {
$registrar->registerGateway(OffSiteGateway::class);
}
);

Hooks::addAction('init', OffSiteSimulation::class);
}
}
1 change: 1 addition & 0 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ module.exports = {
entry: {
GiveAddonFormBuilderExtension: srcPath('FormExtension/FormBuilder/resources/js/index.tsx'),
GiveAddonFormBuilderExtensionGlobalStyle: srcPath('FormExtension/FormBuilder/resources/css/index.scss'),
GiveAddonOffSiteGateway: srcPath('OffSiteGateway/Gateway/resources/OffSiteGateway.tsx'),
},
};

Expand Down

0 comments on commit 80373dd

Please sign in to comment.