【问题标题】:Woocommerce custom payment gateway redirectionWoocommerce 自定义支付网关重定向
【发布时间】:2020-11-20 01:33:59
【问题描述】:

我正在尝试创建一个自定义 Woocommerce 支付网关,将客户重定向到支付网关页面以完成结帐,我正在使用process_payment 代码,如下所示:

    public function process_payment( $order_id )
    {
        global $woocommerce;

        // we need it to get any order details
        $order = wc_get_order( $order_id );

        //setting up needed variables for POST
        $moovpay = new MoovPaySDK;
        $paymentURL = //payment gateway API URL;
        $time = date('YmdHis');
        $secretKey = $this->private_key;
        $merchant_code = $this->merchant_code;
        $mid = $this->mid;
        $orderID = zeroise($order_id, 8);
        $backend_URL = //callback_URL;
        $order_amount = $order->get_total();
        $order_amount_CNY = wc_format_decimal( $order_amount * 5, 2 );;
        $order_amount_CNY_no_dot = str_replace(".", "", $order_amount_CNY);
        //initiate payment
        $response = $moovpay->purchase($secretKey, '', $backend_URL, $merchant_code, $mid, $orderID, $time, '', $order_amount_CNY_no_dot, '');

API 会返回此响应(我删除了这些值):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <form id="redirectForm" action="payment-gateway-url-here" method="post">
        
            
                <input type="hidden" name="bizType" id="bizType" value="" />
            
                <input type="hidden" name="txnSubType" id="txnSubType" value="" />
            
                <input type="hidden" name="backUrl" id="backUrl" value="" />
            
                <input type="hidden" name="orderId" id="orderId" value="" />
            
                <input type="hidden" name="signature" id="signature" value="" />
            
                <input type="hidden" name="merName" id="merName" value="" />
            
                <input type="hidden" name="txnType" id="txnType" value="" />
            
                <input type="hidden" name="channelType" id="channelType" value="" />
            
                <input type="hidden" name="certId" id="certId" value="" />
            
                <input type="hidden" name="encoding" id="encoding" value="UTF-8" />
            
                <input type="hidden" name="acqInsCode" id="acqInsCode" value="" />
            
                <input type="hidden" name="version" id="version" value="" />
            
                <input type="hidden" name="merAbbr" id="merAbbr" value="" />
            
                <input type="hidden" name="accessType" id="accessType" value="" />
            
                <input type="hidden" name="reqReserved" id="reqReserved" value="" />
            
                <input type="hidden" name="txnTime" id="txnTime" value="" />
            
                <input type="hidden" name="merId" id="merId" value="" />
            
                <input type="hidden" name="merCatCode" id="merCatCode" value="" />
            
                <input type="hidden" name="currencyCode" id="currencyCode" value="" />
            
                <input type="hidden" name="signMethod" id="signMethod" value="" />
            
                <input type="hidden" name="txnAmt" id="txnAmt" value="" />
            
        
    </form>
<script type="text/javascript">
    document.all.redirectForm.submit();
</script>   
</body>
</html>

如何使用响应重定向到支付网关?我不确定以前是否有人问过这个问题,但我似乎找不到任何解决方案。任何帮助或指导将不胜感激。

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    我设法让它工作,我会在这里发布我的答案,以防有人需要解决这个问题。

    我所做的是将响应输出到 php 文件,然后使用它执行重定向。

    public function process_payment( $order_id )
    {
      global $woocommerce;
      
      // we need it to get any order details
      $order = wc_get_order( $order_id );
      
      //setting up needed variables for POST
      $moovpay = new MoovPaySDK;
      $paymentURL = ''; //payment gateway API URL;
      $time = date('YmdHis');
      $secretKey = $this->private_key;
      $merchant_code = $this->merchant_code;
      $mid = $this->mid;
      $orderID = zeroise($order_id, 8);
      $backend_URL = '' //callback_URL;
      $order_amount = $order->get_total();
      $order_amount_CNY = wc_format_decimal( $order_amount * 5, 2 );;
      $order_amount_CNY_no_dot = str_replace(".", "", $order_amount_CNY);
      //initiate payment
      $response = $moovpay->purchase($secretKey, '', $backend_URL, $merchant_code, $mid, $orderID, $time, '', $order_amount_CNY_no_dot, '');
      $fh = fopen(plugin_dir_path(__FILE__).'redirect.php', 'w+');
      fwrite($fh, $response);
      fclose($fh);
      $redirect_url = plugin_dir_url(__FILE__).'redirect.php';
      
      return array(
        'result' => 'success',
        'redirect' => $redirect_url
      );
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 2017-08-05
      • 2014-06-06
      • 2023-03-03
      • 1970-01-01
      • 2016-08-20
      • 2017-04-04
      • 2015-12-18
      相关资源
      最近更新 更多