Pembangunan Gateway Tersuai
Anda boleh mencipta gateway pembayaran tersuai dengan melanjutkan kelas Base_Gateway.
Kelas Gateway
class My_Custom_Gateway extends \WP_Ultimo\Gateways\Base_Gateway {
public $id = 'my_gateway';
public function __construct() {
$this->title = 'My Payment Gateway';
$this->description = 'Custom payment processing';
$this->supports = ['one-time', 'recurring'];
parent::__construct();
}
public function process_single_payment($payment, $cart, $order) {
$result = $this->api_call('charge', [
'amount' => $payment->get_total(),
'currency' => $payment->get_currency(),
'customer' => $payment->get_customer_id()
]);
if ($result->success) {
$payment->set_gateway_payment_id($result->transaction_id);
$payment->set_status('completed');
return true;
}
return new WP_Error('payment_failed', $result->error_message);
}
public function process_signup($membership, $customer, $cart, $order) {
$subscription = $this->api_call('subscription/create', [
'customer_id' => $customer->get_gateway_customer_id(),
'plan_id' => $membership->get_plan()->get_gateway_plan_id(),
'trial_days' => $membership->get_trial_days()
]);
if ($subscription->success) {
$membership->set_gateway_subscription_id($subscription->id);
return true;
}
return new WP_Error('subscription_failed', $subscription->error);
}
}
Daftarkan Gateway
add_filter('wu_payment_gateways', function($gateways) {
$gateways['my_gateway'] = 'My_Custom_Gateway';
return $gateways;
});
Kaedah Utama
| Kaedah | Tujuan |
|---|---|
process_single_payment() | Mengendalikan pembayaran sekali sahaja |
process_signup() | Menyediakan langganan berulang |
process_refund() | Mengendalikan permintaan bayaran balik |
get_payment_methods() | Mengembalikan kaedah pembayaran tersimpan untuk pelanggan |
Kelayakan pembaharuan untuk keahlian berulang
Ultimate Multisite v2.13.0 membolehkan integrasi gateway melaporkan sama ada keahlian berulang mempunyai kelayakan pembaharuan boleh guna semula sebelum auto_renew disimpan. Hook wu_membership_has_renewal_credential dan kembalikan:
trueapabila keahlian mempunyai langganan gateway, perjanjian pengebilan, token vault, atau kaedah pembayaran boleh guna semula yang setara.falseapabila gateway mengetahui bahawa kelayakan berulang tiada atau tidak boleh digunakan.nulluntuk menarik diri dan mengekalkan tingkah laku lalai tanpa perubahan.
add_filter('wu_membership_has_renewal_credential', function($verified, $membership) {
if ('my_gateway' !== $membership->get_gateway()) {
return $verified;
}
return '' !== (string) $membership->get_gateway_subscription_id();
}, 10, 2);
Apabila gateway mengembalikan false, Ultimate Multisite menyimpan keahlian dengan pembaharuan automatik dilumpuhkan dan menyimpan penanda kelayakan hilang. Gunakan wu_membership_renewal_credential_missing untuk memaklumkan pentadbir, memulakan aliran kebenaran semula, atau menambah nota sokongan:
add_action('wu_membership_renewal_credential_missing', function($membership) {
wu_log_add(
'my-gateway',
sprintf('Membership #%d needs payment re-authorization.', $membership->get_id())
);
});
Kosongkan penanda kelayakan hilang sebagai sebahagian daripada aliran kebenaran semula gateway anda yang berjaya selepas kelayakan boleh guna semula baharu disimpan.
Petua
- Sentiasa kembalikan
WP_Errorapabila gagal supaya Ultimate Multisite boleh mengendalikan paparan ralat - Set
$this->supportsto declare which payment types your gateway handles (one-time,recurring) - Gunakan
wu_log_add()untuk pengelogan khusus gateway