Payfast разделенные платежи - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно добавить «что-то» в плагин Woocommerce Payfast, чтобы он мог обрабатывать сплит-платежи, в соответствии с веб-сайтом Payfast это будет выглядеть так:

{ "split_payment" : { "merchant_id":10000105, "percentage":10, "amount":500, "min":100, "max":100000 } }

ион отправляется в форме, подобной этой:

<input type="hidden" name="setup" value='{ "split_payment" : {
"merchant_id":10000105,
"percentage":10,
"min":100,
"max":100000}}' > 

Я посмотрел на файл class-wc-gateway-payfast.php и не могу увидеть, где это можно было бы "ввести", и я искал HTML-форму и не могу найти ее либо.... Моя интуиция говорит мне, что это просто, но я не могу обдумать это:

Ссылка Payfast, дающая мне инструкции, может быть найдена здесь (в случае, если я не читаю это должным образом): https://developers.payfast.co.za/documentation/?html#direct-request-method

Не ошибаюсь ли я в своем мышлении, что оно должно идти сюда:

/**
 * Generate the PayFast button link.
 *
 * @since 1.0.0
 */
public function generate_payfast_form( $order_id ) {
    $order         = wc_get_order( $order_id );
    // Construct variables for post
    $this->data_to_send = array(
        // Merchant details
        'merchant_id'      => $this->merchant_id,
        'merchant_key'     => $this->merchant_key,
        'return_url'       => $this->get_return_url( $order ),
        'cancel_url'       => $order->get_cancel_order_url(),
        'notify_url'       => $this->response_url,

        // Billing details
        'name_first'       => self::get_order_prop( $order, 'billing_first_name' ),
        'name_last'        => self::get_order_prop( $order, 'billing_last_name' ),
        'email_address'    => self::get_order_prop( $order, 'billing_email' ),

        // Item details
        'm_payment_id'     => ltrim( $order->get_order_number(), _x( '#', 'hash before order number', 'woocommerce-gateway-payfast' ) ),
        'amount'           => $order->get_total(),
        'item_name'        => get_bloginfo( 'name' ) . ' - ' . $order->get_order_number(),
        /* translators: 1: blog info name */
        'item_description' => sprintf( __( 'New order from %s', 'woocommerce-gateway-payfast' ), get_bloginfo( 'name' ) ),

        // Custom strings
        'custom_str1'      => self::get_order_prop( $order, 'order_key' ),
        'custom_str2'      => 'WooCommerce/' . WC_VERSION . '; ' . get_site_url(),
        'custom_str3'      => self::get_order_prop( $order, 'id' ),
        'source'           => 'WooCommerce-Free-Plugin',
    );

1 Ответ

0 голосов
/ 10 октября 2018

Форма генерируется на основе ассоциативного массива.Для разделения платежей необходимо добавить следующее в массив:

'setup' => json_encode(['split_payment' => ['merchant_id' => 10000105, 'percentage'=>10, 'min' => 100, 'max' => 100000]]),

Функция json_encode() используется для преобразования многомерного массива PHP в объект JSON.Более подробную информацию о функции json_encode() можно найти здесь .

Полный массив будет выглядеть следующим образом:

$this->data_to_send = array(
    // Merchant details
    'merchant_id'      => $this->merchant_id,
    'merchant_key'     => $this->merchant_key,
    'return_url'       => $this->get_return_url( $order ),
    'cancel_url'       => $order->get_cancel_order_url(),
    'notify_url'       => $this->response_url,

    // Billing details
    'name_first'       => self::get_order_prop( $order, 'billing_first_name' ),
    'name_last'        => self::get_order_prop( $order, 'billing_last_name' ),
    'email_address'    => self::get_order_prop( $order, 'billing_email' ),

    // Item details
    'm_payment_id'     => ltrim( $order->get_order_number(), _x( '#', 'hash before order number', 'woocommerce-gateway-payfast' ) ),
    'amount'           => $order->get_total(),
    'item_name'        => get_bloginfo( 'name' ) . ' - ' . $order->get_order_number(),
    /* translators: 1: blog info name */
    'item_description' => sprintf( __( 'New order from %s', 'woocommerce-gateway-payfast' ), get_bloginfo( 'name' ) ),

    //Split Payment
    'setup' => json_encode(['split_payment' => ['merchant_id' => 10000105, 'percentage'=>10, 'min' => 100, 'max' => 100000]]),

    // Custom strings
    'custom_str1'      => self::get_order_prop( $order, 'order_key' ),
    'custom_str2'      => 'WooCommerce/' . WC_VERSION . '; ' . get_site_url(),
    'custom_str3'      => self::get_order_prop( $order, 'id' ),
    'source'           => 'WooCommerce-Free-Plugin',
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...