PHP Paypal支付restful API接口集成插件教程

最近在做一个PHP外贸独立站,想集成PayPal在线支付,于是就想把PayPal做成一个插件。下面就教大家如何一步步来开发PayPal整个流程,有需要的朋友点赞收藏,或下载本插件代码参考。
在这里插入图片描述

Paypal接口申请

  • 必须是企业认证的帐号才能申请在线支付接口
  • 申请网站接口,
  • 会有sanbox沙箱模式(用于开发)和live生成环境模式以及对应的秘密。
  • 会有sanbox测试付款帐号和测试收款帐号

PayPal接口方式

  • REST API接口,方便直接curl到接口就行。推荐使用此方式。
  • SDK。必须安装SDK组件,用其自带方法

截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开发者中心看到的key也是一样的。
在这里插入图片描述

Paypal相关网址

  • paypal网址: https://www.paypal.com/ .
  • paypal开发者网址: https://developer.paypal.com/developer/accounts/.
  • paypal测试账号登录网址: https://www.sandbox.paypal.com/ .
  • 接口手册网址: https://developer.paypal.com/api/rest/
  • PHP SDK GIT地址: https://github.com/paypal/Checkout-PHP-SDK .
  • 官方客服网址: https://www.paypal-support.com/s/?language=zh_CN .(这里登录用paypal正式账号,登录之后联系我们可以提问,回复很慢但是问题都会回答)

PayPal集成思路流程

这里大概叙述一下流程:

  1. 接口获取access_token,后续所有地址都需要这个参数 用clientIdCLIENT_SECRET去获取
    接口:/v1/oauth2/token
  2. 接口预生成订单,获取支付链接,这里注意参数一定要带回调地址return_url,当到第4步用户完成支付后会跳回到return_url这个地址
    接口:/v2/checkout/orders
  3. 跳转支付,在预支付返回数据中,relpayer-action链接为跳转支付。
  4. 支付后会跳回自己给的回调地址return_url,url上会带上2个参数:tokenPayerID,token就是订单id,再次调用接口确认支付完成
    接口:/v2/checkout/orders/{id}/capture
    这个id是上一个生成订单接口返回的参数id,同时回调回来的url上参数token也是这个
  5. 处理自己的付款完成的订单相关逻辑

步骤截图:
预支付返回数据。
在这里插入图片描述
对应restful API key详情下有对应的收款方的帐号和密码。
在这里插入图片描述

用sanbox accounts下的帐号去登陆支付。
在这里插入图片描述
下面是Sanbox测试的付款帐号,分个人和企业,点击去有登陆的密码。
在这里插入图片描述
源码实现:

##PHP Paypal支付插件源码:https://www.uihtm.com/other/19755.html

return [
    'ClientID'     => [
        'title' => 'ClientID',
        'type'  => 'text',
        'value' => '',
        'tip'   => 'Client ID,贝宝开发者平台 https://developer.paypal.com/developer/applications'
    ],
    'Secretkey'     => [
        'title' => 'Secretkey',
        'type'  => 'text',
        'value' => '',
        'tip'   => '贝宝开发者平台Secret'
    ],
    'Model'     => [
        'title' => '模式',
        'type'  => 'radio',
        'options' => [
            'Sandbox' => 'Sandbox',
            'Live' => 'Live'
        ],
        'value'   => 'Sandbox'
    ]
];

class PaypalPlugin extends Plugin
{
    public $info = [
        'name'        => 'Paypal',//插件英文名,改成你的插件英文就行了
        'title'       => 'Paypal支付插件',
        'description' => 'Paypal支付插件',
        'status'      => 1,
        'author'      => 'Ayumi QQ:44784009',
        'version'     => '1.0',
        'author_url'  => 'https://www.uihtm.com/other/19755.html'
    ];

    public $hasAdmin = 1;//插件是否有后台管理界面

    // 插件安装
    public function install()
    {
        return true;//安装成功返回true,失败false
    }

    // 插件卸载
    public function uninstall()
    {
        return true;//卸载成功返回true,失败false
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio开发lua脚本环境搭建

在Visual Studio上开发lua脚本环境搭建 1、下载lua的jdk安装,以及环境变量配置 下载LuaForWindows_v5.1.5-52.exe安装, 安装好之后,检查是否路径自动。 下载地址: https://github.com/rjpcomputing/luaforwindows/releases (1…

MySQL 性能优化详解

MySQL 性能优化详解 硬件升级系统配置优化调整buffer_pool数据预热降低日志的磁盘落盘 表结构设计优化SQL语句及索引优化SQL优化实战案例 MySQL性能优化我们可以从以下四个维度考虑:硬件升级、系统配置、表结构设计、SQL语句和索引。 从成本上来说:硬件升…

智已汽车x-signature 登录算法 签到

智已汽车x-signature 登录算法 签到 python代码成品

Android 使用 Canvas 和 Paint 实现圆角图片

学习笔记 效果展示: 全部代码: public class YuanActivity extends AppCompatActivity {private ActivityYuanBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通过 DataBinding 获取布局文件binding …

掌控时间,成就更好的自己

在个人成长的道路上,时间管理是至关重要的一环。有效的时间管理能够让我们更加高效地完成任务,实现自己的目标,不断提升自我。 时间对每个人都是公平的,一天只有 24 小时。然而,为什么有些人能够在有限的时间里做出卓…

flask-socketio相关总结

flask-socketio是一个为flask应用程序添加的实时双向通信功能的扩展库,有了这个库,就可以在flask应用中应用websocket协议,帮助flask实现低延迟、双向的客户端、服务端通信。客户端通过任何SocketIO官方库,都能与服务器建立长连接…

YOLOv8改进,YOLOv8引入CARAFE轻量级通用上采样算子,助力模型涨点

摘要 CARAFE模块的设计目的是在不增加计算复杂度的情况下,提升特征图的质量,特别是在视频超分辨率任务中,提升图像质量和细节。CARAFE结合了上下文感知机制和聚合特征的能力,通过动态的上下文注意力机制来提升细节恢复的效果。 理论介绍 传统的卷积操作通常依赖于局部区域…

如何把阿里云ECS里的文件下载到本地(免登录免配置)

如何把阿里云ECS里的文件下载到本地(免登录免配置) 作为一个阿里云ECS的用户,Up时长会遇到希望把ECS里的文件下载到自己的个人电脑,然后在自己的电脑里面查看,保存或者发送给别人。最近发现阿里云新上了一个功能&…

【Notepad++】---设置背景为护眼色(豆沙绿)最新最详细

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Notepad】---设置背景为护眼色&#xf…

【Axios】如何在Vue中使用Axios请求拦截器

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

在服务器上实现本地python文件的依赖

1、在python中,一个python文件就可以视为一个模块进行导入 2、使用import 导入时,若使用pip 下载过可以直接导入 3、假如是自己写的同项目中的文件会去sys.path 中查找 比如说 我现在 test 下有一个 python文件 运行 下面的代码 打印的数据如上图所示p…

emacs 折腾日记(一)——序言

初次知道emacs这个东西是在《程序员的呐喊》这本书。书中的作者提倡学习编译原理,推崇emacs。现在距离我知道emacs已经过去了快8年,期间不断的重复学习——放弃——学习的路子。与过去学习vim类似,vim我也经历过放弃到学习,最后有…

【二分查找】力扣 875. 爱吃香蕉的珂珂

一、题目 二、思路 速度 k(单位:根/小时)是存在一个取值范围的。 速度越大肯定在规定的时间之内一定会吃完全部的香蕉,但也是可以确定出一个上界的。由于只要保证一小时之内,可以吃完香蕉数目最多的那一堆的香蕉&…

如何找到你的决定性优势

在任何高风险竞争中,无论是争取客户还是发展职业生涯,拥有决定性优势至关重要。沃伦巴菲特称之为“持久竞争优势”,迈克尔波特将其称为“竞争优势”。无论名称如何,核心理念是相同的: 永远不要参与你没有绝对优势的竞争…

【JavaWeb后端学习笔记】SpringBoot框架下Http请求参数接收

Http请求参数接收 1、简单参数2、实体参数3、数组参数4、集合参数5、日期参数6、Json格式参数(常用)7、路径参数(常用)8、接收请求参数常用的几个注解 Http请求能携带各种格式的请求参数。因此也就需要不同的接收方式。 1、简单参…

Qt6.8 QGraphicsView鼠标坐标点偏差

ui文件拖放QGraphicsView,src文件定义QGraphicsScene赋值给图形视图。 this->scene new QGraphicsScene();ui.graph->setScene(this->scene);对graphicview过滤事件,只能在其viewport之后安装,否则不响应。 ui.graph->viewport…

macmini安装ubuntu网卡驱动BCM4360

安装成功效果如下 成功连接wifi 成功分配到IP 执行命令如下 1. sudo apt update 2. sudo apt install broadcom-sta-dkms 3. 重启电脑

网络测速工具

1. SPEEDTEST https://www.speedtest.net/ 2. 测速网 测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR,全屋Wi-Fi - SpeedTest.cn 3. 字节比特换算 bps(bits per second) 字节和比特的换算…

docker安装victoriametrics

docker安装victoriametrics 1、单机版安装2、victoriametrics增删改查2.1 、插入数据2.1.1 组装数据插入victoriametrics(java代码插入)2.1.2 Prometheus数据插入victoriametrics2.1.3 官网push到victoriametrics写法 2.2 、查询2.2.1 、Instant query(即时查询&…

用ZipOutputStream生成的zip压缩包无法用WinRAR软件进行解压

1、问题 用WinRAR软件无法解压用ZipOutputStream生成的zip压缩包,而用360压缩就可以解压 2、原因 流没有正常关闭 3、解决办法 可以使用try-with-resources来自动关闭ZipOutputStream 例: public void compressedFile(String businessId, HttpServle…