Merge pull request #1427 from woocommerce/feat/PCP-1709_soft_descriptor

Include soft descriptor for card's activity
This commit is contained in:
Emili Castells 2023-07-18 15:40:04 +02:00 committed by GitHub
commit 75f73ea090
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 5 deletions

View file

@ -298,6 +298,7 @@ return array(
$shipping_factory = $container->get( 'api.factory.shipping' ); $shipping_factory = $container->get( 'api.factory.shipping' );
$payments_factory = $container->get( 'api.factory.payments' ); $payments_factory = $container->get( 'api.factory.payments' );
$prefix = $container->get( 'api.prefix' ); $prefix = $container->get( 'api.prefix' );
$soft_descriptor = $container->get( 'wcgateway.soft-descriptor' );
return new PurchaseUnitFactory( return new PurchaseUnitFactory(
$amount_factory, $amount_factory,
@ -306,7 +307,8 @@ return array(
$item_factory, $item_factory,
$shipping_factory, $shipping_factory,
$payments_factory, $payments_factory,
$prefix $prefix,
$soft_descriptor
); );
}, },
'api.factory.patch-collection-factory' => static function ( ContainerInterface $container ): PatchCollectionFactory { 'api.factory.patch-collection-factory' => static function ( ContainerInterface $container ): PatchCollectionFactory {

View file

@ -70,6 +70,13 @@ class PurchaseUnitFactory {
*/ */
private $prefix; private $prefix;
/**
* The Soft Descriptor.
*
* @var string
*/
private $soft_descriptor;
/** /**
* PurchaseUnitFactory constructor. * PurchaseUnitFactory constructor.
* *
@ -80,6 +87,7 @@ class PurchaseUnitFactory {
* @param ShippingFactory $shipping_factory The shipping factory. * @param ShippingFactory $shipping_factory The shipping factory.
* @param PaymentsFactory $payments_factory The payments factory. * @param PaymentsFactory $payments_factory The payments factory.
* @param string $prefix The prefix. * @param string $prefix The prefix.
* @param string $soft_descriptor The soft descriptor.
*/ */
public function __construct( public function __construct(
AmountFactory $amount_factory, AmountFactory $amount_factory,
@ -88,7 +96,8 @@ class PurchaseUnitFactory {
ItemFactory $item_factory, ItemFactory $item_factory,
ShippingFactory $shipping_factory, ShippingFactory $shipping_factory,
PaymentsFactory $payments_factory, PaymentsFactory $payments_factory,
string $prefix = 'WC-' string $prefix = 'WC-',
string $soft_descriptor = ''
) { ) {
$this->amount_factory = $amount_factory; $this->amount_factory = $amount_factory;
@ -98,6 +107,7 @@ class PurchaseUnitFactory {
$this->shipping_factory = $shipping_factory; $this->shipping_factory = $shipping_factory;
$this->payments_factory = $payments_factory; $this->payments_factory = $payments_factory;
$this->prefix = $prefix; $this->prefix = $prefix;
$this->soft_descriptor = $soft_descriptor;
} }
/** /**
@ -128,7 +138,7 @@ class PurchaseUnitFactory {
$payee = $this->payee_repository->payee(); $payee = $this->payee_repository->payee();
$custom_id = (string) $order->get_id(); $custom_id = (string) $order->get_id();
$invoice_id = $this->prefix . $order->get_order_number(); $invoice_id = $this->prefix . $order->get_order_number();
$soft_descriptor = ''; $soft_descriptor = $this->soft_descriptor;
$purchase_unit = new PurchaseUnit( $purchase_unit = new PurchaseUnit(
$amount, $amount,
@ -198,7 +208,7 @@ class PurchaseUnitFactory {
} }
} }
$invoice_id = ''; $invoice_id = '';
$soft_descriptor = ''; $soft_descriptor = $this->soft_descriptor;
$purchase_unit = new PurchaseUnit( $purchase_unit = new PurchaseUnit(
$amount, $amount,
$items, $items,
@ -233,7 +243,7 @@ class PurchaseUnitFactory {
$description = ( isset( $data->description ) ) ? $data->description : ''; $description = ( isset( $data->description ) ) ? $data->description : '';
$custom_id = ( isset( $data->custom_id ) ) ? $data->custom_id : ''; $custom_id = ( isset( $data->custom_id ) ) ? $data->custom_id : '';
$invoice_id = ( isset( $data->invoice_id ) ) ? $data->invoice_id : ''; $invoice_id = ( isset( $data->invoice_id ) ) ? $data->invoice_id : '';
$soft_descriptor = ( isset( $data->soft_descriptor ) ) ? $data->soft_descriptor : ''; $soft_descriptor = ( isset( $data->soft_descriptor ) ) ? $data->soft_descriptor : $this->soft_descriptor;
$items = array(); $items = array();
if ( isset( $data->items ) && is_array( $data->items ) ) { if ( isset( $data->items ) && is_array( $data->items ) ) {
$items = array_map( $items = array_map(

View file

@ -971,6 +971,15 @@ return array(
return 'https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s'; return 'https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s';
}, },
'wcgateway.soft-descriptor' => static function ( ContainerInterface $container ): string {
$settings = $container->get( 'wcgateway.settings' );
assert( $settings instanceof Settings );
if ( $settings->has( 'soft_descriptor' ) ) {
return $settings->get( 'soft_descriptor' );
}
return '';
},
'wcgateway.transaction-url-provider' => static function ( ContainerInterface $container ): TransactionUrlProvider { 'wcgateway.transaction-url-provider' => static function ( ContainerInterface $container ): TransactionUrlProvider {
$sandbox_url_base = $container->get( 'wcgateway.transaction-url-sandbox' ); $sandbox_url_base = $container->get( 'wcgateway.transaction-url-sandbox' );
$live_url_base = $container->get( 'wcgateway.transaction-url-live' ); $live_url_base = $container->get( 'wcgateway.transaction-url-live' );

View file

@ -423,6 +423,20 @@ return function ( ContainerInterface $container, array $fields ): array {
'</a>' '</a>'
), ),
), ),
'soft_descriptor' => array(
'title' => __( 'Soft Descriptor', 'woocommerce-paypal-payments' ),
'type' => 'text',
'desc_tip' => true,
'description' => __( 'The soft descriptor is the dynamic text used to construct the statement descriptor that appears on a payer\'s card statement. Text field, max value of 22 characters.', 'woocommerce-paypal-payments' ),
'maxlength' => 22,
'default' => '',
'screens' => array(
State::STATE_START,
State::STATE_ONBOARDED,
),
'requirements' => array(),
'gateway' => Settings::CONNECTION_TAB_ID,
),
'prefix' => array( 'prefix' => array(
'title' => __( 'Invoice prefix', 'woocommerce-paypal-payments' ), 'title' => __( 'Invoice prefix', 'woocommerce-paypal-payments' ),
'type' => 'text', 'type' => 'text',