#php #woocommerce #checkout
Вопрос:
Я должен получить токен проверки с платежного сервера перед обработкой платежа. Как получить адрес для выставления счетов для учетной записи пользователя и гостевой учетной записи. Можно ли получить информацию об адресе для выставления счетов. Я делаю плагин платежного шлюза cusotm.
public function curlrequest(){
$data = array(
"page_id" => $this->page_id,
"Currency" => get_woocommerce_currency(),
"amount" => '100',
"datetime_utc" => date('Y-m-d H:i:s'),
"transaction_type" => "authorize",
"billing_address"=>('first_name'=>'','lastname'=>'') // need to pass here
);
$data_string = json_encode($data);
$ch = curl_init('https://xxxxxxxxxx/paymentgateway');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$this->api_username".':'."$this->api_password"),
'Content-Length: ' . strlen($data_string))
);
return respone token;
}
public function payment_fields() {
echo '<input id="checkout_token" name="checkout_token" type="hidden" value="'.$this->curlrequest().'" />';
//other cc common fields
}
Ответ №1:
Попробуйте использовать WC_Customer
такие методы, как:
$billing_first_name = WC()->customer->get_billing_first_name();
$billing_last_name = WC()->customer->get_billing_last_name();
$billing_address_1 = WC()->customer->get_billing_address_1();
$billing_address_2 = WC()->customer->get_billing_address_2();
$billing_postcode = WC()->customer->get_billing_postcode();
$billing_city = WC()->customer->get_billing_city();
$billing_state = WC()->customer->get_billing_state();
$billing_country = WC()->customer->get_billing_country();
Или WC_Session
данные клиента, доступ к которым можно получить с помощью следующих:
$customer_data = WC()->session->get('customer');
$billing_first_name = $customer_data['first_name'];
$billing_last_name = $customer_data['last_name'];
$billing_address_1 = $customer_data['address_1'];
$billing_address_2 = $customer_data['address_2'];
$billing_postcode = $customer_data['postcode'];
$billing_city = $customer_data['city'];
$billing_state = $customer_data['state'];
$billing_country = $customer_data['country'];