前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >woocommerce对接第三方支付DDMpay知识点总结

woocommerce对接第三方支付DDMpay知识点总结

作者头像
IT不难
发布2023-11-17 13:44:19
2120
发布2023-11-17 13:44:19
举报
文章被收录于专栏:IT不难技术家园IT不难技术家园

前言

第三方,第四方支付接口接多了,无非就是那么几步。这次客户有一个新的需求是不跳转到第三方支付网关。同时刚好支持iframe方式加载。记录一下改动代码。

ljvjrepj.png
ljvjrepj.png

获取支付链接

通过post提交支付参数,上游返回支付网关关于此订单的支付链接地址,将地址传输给单独注册的支付页面

代码语言:javascript
复制
                //构建提交变量
                $args = array(
                        'timeout'     => 45,
                        'redirection' => 5,
                        'httpversion' => '1.0',
                        'blocking'    => true,
                        'body'        => $Body,
                );

                $postRequest = wp_remote_post($gateway_api, $args);

                if ($postRequest['response']['code'] === 200) {
                        $result = json_decode($postRequest['body'], true, 512, JSON_BIGINT_AS_STRING);
                } else {
                        error_log(__METHOD__ . PHP_EOL . 'Code:' . $postRequest['response']['code'] . PHP_EOL. ' Error:' . $postRequest['response']['message']);

                        throw new Exception("Unable to reach Viva Payments (" . $postRequest['response']['message'] . ")");
                }

                //error_log(__METHOD__ . PHP_EOL .print_r($result, true));

                if ($result['code'] == 200) {
                        //写入数据库
                        $query = "insert into {$wpdb->prefix}ddmpay_data (ref, ordercode, email, orderid, total_cost, currency, order_state, timestamp) values ('". $mref . "', '0', '". $customer_mail . "','" . $order_id . "','" . $amount . "', '" . $currency_code . "', 'I', now())";
                        $wpdb->query($query);

                        //跳转支付,通过iframe加载
                        return array(
                            'result' => 'success',
                            'redirect' => $site_url.'/?payload=1&url='.urlencode($result['data']['payurl'])
                        );
                } else {
                        throw new Exception("Unable to redirect  payurl  (" . $result['msg'] . ")");
                }

注册加载页面

在插件安装文件setup.php内注册

setup.php

代码语言:javascript
复制
//注册一个pay加载页面
add_action('init', 'register_ddpay_query_variables');
add_action('template_redirect', 'redirect_to_ddpay_templates');

function register_ddpay_query_variables() {
        add_filter('query_vars', function($vars) {
            $vars[] = 'payload';
            return $vars;
        });
}

function redirect_to_ddpay_templates() {
        if (get_query_var('payload')) {
            include dirname(__FILE__) . '/payload.php';
            exit();
        }
}

payload.php

代码语言:javascript
复制
    .iframe-container {
      width: 400px;
      height: 300px;
      overflow: hidden;
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年07月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 获取支付链接
  • 注册加载页面
    • setup.php
      • payload.php
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档