天涯论坛

 找回密码
 立即注册
搜索
查看: 88|回复: 7

wordpress外贸独立站对接第三方支付通道easylink

[复制链接]

3028

主题

210

回帖

9777万

积分

论坛元老

Rank: 8Rank: 8

积分
97779018
发表于 2024-7-29 23:50:05 | 显示全部楼层 |阅读模式

前言

做跨境电商怎样收款是所有商家都需要关注的。自由度最高的是基于wordpress的外贸独立站,独立站建好以后需要对接收款通道。easylink是香港的支付通道。下面分享对接过程。

支付引导

支付流程

交易流程指的是拜访网站的客户从选取商品下单到支付成功的全部流程。

支付流程

插件研发

熟练全部流程后,就要按照通道供给的接口文档编写代码。代码编写的重点模块有签名函数,有订单提交,异步通告处理,同步函数等。

签名

本通道采用sha256加密方式

function buildMysign($sort_para, $key, $sign_type = "MD5") 

{

$prestr = createLinkstring ( $sort_para );

        $prestr = $prestr .&

. $key;

        $mysgin = sign ( $prestr, $sign_type );

        return

 $mysgin;

}

function createLinkstring($para) 

{

        $arg = ""

;

        foreach($paraas

 $key => $val) {

        if ($key == "accessKey" || $key == "merchantCardNumber" || $key == "BankId" || $key == "merReserved"

)

                continue

;

        else                $arg .= $key . "=" . $val . "&"

;

        }

        $arg = rtrim($arg, &

);

        return

 $arg;

}

function paraFilter($para) 

{

        $para_filter = array

 ();

        foreach ($para as

 $key => $val) {

                        $para_filter [$key] = $para [$key];

}

        return

 $para_filter;

}

function argSort($para) 

{

        ksort ( $para );

        reset ( $para );

        return

 $para;

}

function sign($prestr, $sign_type = MD5) 

{

        $sign = ;

$sign = hash($sign_type, $prestr);

        return

 $sign;

}

订单提交

订单提交是组织好官方需要的字段,经过api接口提交并获取结果

class Submit 

{

 function buildRequestPara($para_temp) 

{

  $key = ********

;

  $sign_method = SHA256

;

  $para_filter = paraFilter($para_temp);

  $para_sort = argSort($para_filter);

$mysign = buildMysign($para_sort, trim($key), strtoupper(trim($sign_method)));

  $para_sort[accessKey

] = $mysign;

  return

 $para_sort;

 }

 function getMsg($para_temp, $gateway) 

{

  $respondData = ;

  $para = $this

->buildRequestPara($para_temp);

$ch = curl_init ($gateway);

  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true

);

  curl_setopt ( $ch, CURLOPT_BINARYTRANSFER, true

);

curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER,false

);

  curl_setopt ( $ch, CURLOPT_POSTFIELDS, $para);

  $output = curl_exec ( $ch );

  curl_close ( $ch );

$respondData = json_decode($output);

  return

 $respondData;

 }

}

异步通告

在用户支付成功后,通道会主动发起支付成功的通告到网站。需要专门的函数来处理支付结果。

    function check_easylink_ipn_response() 

{

  global

 $woocommerce, $wpdb;

  require_once("lib/notify.class.php"

);

  if (($_SERVER[REQUEST_METHOD] === POST) && preg_match("/wc_easylink_notify/i", $_SERVER[REQUEST_URI

])) {

   $Notify = new

 Notify();

$verify_result = $Notify->verifyNotify();

   if

 ( $verify_result ) {

    if ($_POST["respCode"] != "00"

) {

     error_log(__METHOD__ . HP_EOL . $_POST["respMsg"

]);

    } elseif( $_POST[status] == 1

 ) {

     $sref = $_POST[paymentId

];

     $statustr = $this

->easylink_processing;

     $check_query = $wpdb->get_results("SELECT order_id,order_state,mref FROM {$wpdb->prefix}easylink_data WHERE sref = ".addslashes($sref).""

, ARRAY_A);

                      $check_query_count = count($check_query);

     if( $check_query_count >= 1

 ) {

      if($check_query[0][order_state] == I

) {

       $query = "update {$wpdb->prefix}easylink_data set order_state=C  where sref=".addslashes($sref).""

;

$wpdb->query($query);

       $inv_id = $check_query[0][order_id

];

       $mref = $check_query[0][mref

];

                         $order = new

 WC_Order($inv_id);

       $order->update_status($statustr, __(Order has been paid by ID: . $mref, easylink-for-woocommerce

));

       wc_reduce_stock_levels( $order->get_id() );

       add_post_meta( $inv_id, _paid_date, current_time(mysql), true

);

       update_post_meta( $inv_id, _transaction_id

, wc_clean($mref) );

       $order->payment_complete(wc_clean($mref));

                         $woocommerce->cart->empty_cart();

      }

     }

    }

   }

   //接口返回   exit(success

);

  }

 }

同步

在网站处理支付成功的信息同期,客户浏览器需要到支付成功页面。

function check_easylink_return() 

{

  global

 $woocommerce, $wpdb;

  if (($_SERVER[REQUEST_METHOD] === GET) && preg_match("/wc_easylink_return/i", $_SERVER[REQUEST_URI

])) {

   //error_log(__METHOD__ . HP_EOL .print_r($_GET, true));   $mref = $_GET[mref

];

   sleep(1

);

$check_query = $wpdb->get_results("SELECT order_id,order_state FROM {$wpdb->prefix}easylink_data WHERE mref = ".addslashes($mref).""

, ARRAY_A);

$check_query_count = count($check_query);

   if($check_query_count >= 1

){

    $inv_id = $check_query[0][order_id

];

    $inv_state = $check_query[0][order_state

];

    switch

( $inv_state ) {

                                        case C

:

                                                $order = new

 WC_Order($inv_id);

                                                 wp_redirect(esc_url_raw(add_query_arg(key, $order->get_order_key(), add_query_arg(order-received, $inv_id, $this

->get_return_url($order)))));

                                                break

;

                                        default

:

                                                wp_redirect( wc_get_cart_url() );

                                }

    exit

;

   }

  }

  wp_redirect(home_url());

 }

完整的支付插件

【支付插件】woocommerce对接香港支付通道easylink

插件设置

插件安装经过wordpress的后台页面上传而后激活就可,设置非常简单。

插件设置




上一篇:独立站的回款方式有哪些
下一篇:跨境电商独立站,选品、建站途径、收款、推广难点
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-24 14:07:24 | 显示全部楼层
楼主节操掉了,还不快捡起来!
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-10 03:47:04 | 显示全部楼层
你的话语如春风拂面,让我心生暖意。
回复

使用道具 举报

0

主题

580

回帖

3

积分

新手上路

Rank: 1

积分
3
发表于 2024-9-10 15:53:24 | 显示全部楼层
楼主继续加油啊!外链论坛加油!
回复

使用道具 举报

2997

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109192
发表于 2024-10-8 02:57:00 | 显示全部楼层
论坛的成功是建立在我们诚恳、务实、高效、创新和团结合作基础上,我们要把这种精神传递下去。
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-12 17:55:53 | 显示全部楼层
你字句如珍珠,我珍藏这份情。
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-13 18:31:39 | 显示全部楼层
“BS”(鄙视的缩写)‌
回复

使用道具 举报

3047

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065852
发表于 2024-10-26 14:18:29 | 显示全部楼层
同意、说得对、没错、我也是这么想的等。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 13:07 , Processed in 2.187671 second(s), 40 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.