Saya memiliki masalah dan berharap ada beberapa orang baik di sini yang dapat membantu saya. Saya telah menyiapkan formulir front-end. Ini untuk formulir donasi, dan saya telah menambahkan panggilan cURL setelah formulir dikirimkan, ke api gateway pembayaran. masalahnya di sini adalah, saya ingin halaman formulir dialihkan ke url yang dikembalikan oleh api gateway pembayaran, bagi pengguna untuk membayar dengan bank mereka, di luar situs.

Gagasan yang saya miliki adalah mengubah permalink posting setelah posting disimpan, tetapi sebelum pengguna dialihkan, sehingga mereka akan diarahkan ke url yang benar (diberikan oleh api gateway pembayaran), dan bukan permalink asli.

Ada ide untuk mengeksekusi ini?

Inilah kode saya sejauh ini:

<?php

add_action('acf/save_post', 'my_save_post', 10, 1);

function my_save_post( $post_id ) {

$billplzApi = get_field('billplz_secret_key', 'option');
$billplzId = get_field('billplz_collection_id', 'option');

// bail early if not a donation post
if( get_post_type($post_id) !== 'donation' ) {
    return;
}
// bail early if editing in admin
if( is_admin() ) {  
    return;
}

$post = get_post( $post_id);

$amount = '';
$donationGroup = get_field('donation_amount', $post);
$selectedAmount = $donationGroup['select_donation_amount'];
$customAmount = $donationGroup['specify_any_amount'];

if(!$customAmount){
    $amount = $selectedAmount;
} else {
    $amount = $customAmount;
}

$name = get_field('name', $post);
$email = get_field('email', $post);
$unmobile = get_field('mobile', $post);
$mobile = "+6" . $unmobile;


$billplz_data = array(
      'amount' => $amount * 100,
      'name' => $name,
      'mobile' => $mobile,
      'email' => $email,
      'collection_id' => $billplzId,
      'deliver' => false,
      'description' => 'a test for payment gateway',
      'redirect_url' => home_url('donation-redirect'),
      'callback_url' => home_url('donation-callback')
    );

      $process = curl_init('https://www.billplz.com/api/v3/bills/');
      curl_setopt($process, CURLOPT_HEADER, 0);
      curl_setopt($process, CURLOPT_USERPWD, $billplzApi . ":");
      curl_setopt($process, CURLOPT_TIMEOUT, 30);
      curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($process, CURLOPT_POSTFIELDS,http_build_query($billplz_data));
      $return = curl_exec($process);
      curl_close($process);
      $arr = json_decode($return, true);
      //this is the url to replace the original post permalink
      $billplz_url = $arr['url'];       

}

acf_form_head();
get_header();
?>

<div class="row">
    <div class="col-sm-12 col-md-8 col-md-offset-2 col-xs-12">

<?php 

while (have_posts()) : the_post();

acf_form(array(
    'post_id'       => 'new_post',
    'new_post'      => array(
                        'post_type'     => 'donation',
                        'post_status'   => 'publish'


    ),
    'submit_value'  => 'Donate',
    'html_submit_button' => '<input type="submit" class="acf-button btn btn-success btn-lg pull-right" value="%s" />',
    'return' => '%post_url%'
));

endwhile;

?>

    </div>
</div>

<?php 

get_footer();

?>
2
Hafiz Hanif 16 Desember 2017, 01:50

1 menjawab

Jawaban Terbaik

Temukan solusi untuk masalah ini di sini: Buat Halaman WordPress yang mengalihkan ke URL lain

Jadi pada dasarnya saya perlu menambahkan:

header('Location:'.$billplz_url);
exit();

Dan hapus:

'return' => '%post_url%'
1
Hafiz Hanif 16 Desember 2017, 04:01