First, we need to add a checkout button, we can add it before or after JobEngine or ClassiFiedEngine default checkout buttons.
Example, I add Stripe checkout button:
JobEngine: add_action ('after_je_payment_button', 'stripe_payment_button');
ClassifiedEngine: add_action ('after_ce_payment_button', 'stripe_payment_button');
function stripe_payment_button ($payment_gateways) {
if(!isset($payment_gateways['stripe'])) return;
$stripe = $payment_gateways['stripe'];
if( !isset($stripe['active']) || $stripe['active'] == -1) return ;
?> <li class="clearfix">
<div class="f-left">
<div class="title"><?php _e( 'Stripe', ET_DOMAIN )?></div>
<div class="desc">
<?php _e( 'Pay using your credit card through Stripe.', ET_DOMAIN )?></div>
</div>
<div class="btn-select f-right">
<button id="stripe_pay" class="bg-btn-hyperlink border-radius" data-gateway="stripe" >
<?php _e('Select', ET_DOMAIN );?>
</button>
</div>
</li>
<?php
}
Note: $payment_gateways is array of enabled gateways.
When user checkouts for a job, JobEngine has 2 steps to process payment.
First step, send payment details, set up the payment and send a response to client. After client receive reponse, use javascript to submit user to payment processor. To filter the response we can use filter ‘ je_payment_setup’:
JobEngine: add_filter ('je_payment_setup', 'setup_payment');
ClassifiedEngine: add_filter (‘et_payment_setup', 'setup_payment');
function setup_payment ( $response , $paymentType, $order ) {
// your payment setup and return reponse here
}
$response : payment response for setup a payment
$paymentType: payment gateway type, use to check which payment gateway is used
$order : order information
Second step, when users submit a payment, and already pay for a job. They will be returned to page process payment to approve payment or deny fraud. In function process payment return has a filter-‘je_payment_process’ to help developer process integrated gateway.
Here is the function filter and process payment by stripe:
JobEngine: add_filter( 'je_payment_process', 'process_payment', 10 ,2 );
ClassifiedEngine: add_filter( 'et_payment_process', 'process_payment', 10 ,2 );
function process_payment ( $payment_return, $order) {
if(isset($_REQUEST['paymentType']) && $_REQUEST['paymentType'] == 'stripe' ) {
if($_REQUEST['token'] == $order->get_payment_code() ) {
$payment_return = array (
'ACK' => true,
'payment' => 'stripe'
);
$order->set_status ('publish');
$order->update_order();
}
}
return $payment_return;
}
Tip: you can use ‘je_payment_settings’ and ‘et_update_payment_setting’ hooks render and save payment gateway settings.
