当前位置: 首页 > news >正文

[超级简单]讲解如何用PHP实现LINE Pay API!

  • 在 PHP 中实现 LINE Pay API 之前我应该​​做哪些准备?
  • 如何在 PHP 中实现 LINE Pay API?

目录

  1. [前提] 环境
  2. 使用 PHP 实现 LINE Pay API 的准备工作
  3. 使用 PHP 实现 LINE Pay API
  4. 概括   

[前提] 环境

这次我们将使用SandBox环境(测试环境) 。

我们将实现RequestAPI的执行。

使用 PHP 实现 LINE Pay API 的准备工作

我们将解释在 PHP 中实现 LINE Pay API 所需的前期准备工作。

沙盒生成

创建一个沙盒。

一旦生成,一封电子邮件将发送到您的电子邮件地址。

登录LINE Pay我的页面

点击并登录。

您的登录详细信息将在您之前收到的电子邮件中提供。

链接密钥管理
登录后,进入“ 支付链接管理”⇒“ 链接密钥管理”,输入您的密码(您登录时使用的密码),点击 确认。
链接密钥管理参考
记下 频道 ID频道密钥。
PHP 实现 INE ay API

在 PHP 中实现 LINE Pay API。

<?php
// 设置频道ID,用于标识API请求的来源
$channel_id = '您的频道ID';// 设置秘密钥匙,用于生成请求签名
$channel_secret_key = '你的秘密钥匙';// 设置Line支付API的URL(沙盒环境),用于测试
$line_url = 'https://sandbox-api-pay.line.me';
// 如果是生产环境,可以将URL更改为实际生产环境的URL
// $line_url = 'https://api-pay.line.me';// 定义请求路径,这里指的是创建支付请求的API路径
$path = '/v3/payments/request';// 生成一个唯一的UUID,用于标识当前请求
$nonce = gen_uuid();// 构造请求体,这里用JSON格式定义了支付请求的相关信息
$body = json_encode(array("amount" => 1,  // 支付金额,单位是日元(JPY)"currency" => "JPY",  // 货币类型,这里使用的是日元"orderId" => "testOrderId",  // 订单ID,用于标识当前的支付订单"packages" => array(array(  // 商品包信息"id" => "testPackages1",  // 商品包的ID'name'   => "packages",  // 商品包的名称"amount" => 1,  // 商品包的金额"products" => array(array(  // 商品详细信息"id" => "testProducts1",  // 商品ID"name" => "products",  // 商品名称"quantity" => 1,  // 商品数量"price" => 1  // 商品单价)))),"redirectUrls" => array(  // 用户支付完成后需要重定向的URL"confirmUrl" => "https://myPage",  // 支付完成后的确认URL"cancelUrl" => "https://myPage"   // 支付取消后的URL)
));// 输出请求体内容,便于调试时查看生成的JSON数据
echo $body;// 生成请求签名,使用HMAC SHA-256算法
// 签名的生成规则:签名 = base64(HMAC-SHA256(频道密钥 + 请求路径 + 请求体 + UUID, 频道密钥))
$signature = base64_encode(hash_hmac('sha256', $channel_secret_key . $path . $body . $nonce, $channel_secret_key, true));// 设置HTTP请求头,包含必要的认证信息
$header = array('Content-Type:'               . 'application/json',  // 请求内容类型,设置为JSON格式'X-LINE-ChannelId:'           . $channel_id,         // 频道ID,用于标识发送请求的渠道'X-LINE-Authorization-Nonce:' . $nonce,              // 使用的UUID,防止重放攻击'X-LINE-Authorization:'       . $signature           // 请求签名,用于验证请求的合法性
);/************************************************************ 执行API请求***********************************************************/// 初始化cURL会话
$curl = curl_init();// 设置cURL选项
curl_setopt($curl, CURLOPT_URL,            $line_url . $path);  // 设置请求的URL
curl_setopt($curl, CURLOPT_HTTPHEADER,     $header);            // 设置请求头
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);              // 将返回结果以字符串形式输出
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);                 // 禁用SSL验证(用于开发环境,生产环境请开启)
curl_setopt($curl, CURLOPT_POST,           true);              // 设置为POST请求
curl_setopt($curl, CURLOPT_POSTFIELDS,     $body);             // 设置请求体内容// 执行cURL请求并获取返回结果
$result = curl_exec($curl);// 关闭cURL会话
curl_close($curl);// 输出API请求的响应结果
echo $result;// 生成UUID函数,用于创建唯一的标识符
function gen_uuid()
{return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',  // 按照特定格式生成UUIDmt_rand(0, 0xffff),   // 生成一个随机的16位数mt_rand(0, 0xffff),mt_rand(0, 0xffff),mt_rand(0, 0x0fff) | 0x4000,  // 确保UUID符合UUIDv4格式mt_rand(0, 0x3fff) | 0x8000,mt_rand(0, 0xffff),mt_rand(0, 0xffff),mt_rand(0, 0xffff));
}
?>

运行上述内容。

{"returnCode": "0000","returnMessage": "Success.","info": {"paymentUrl": {"web": "https://sandbox-web-pay.line.me/web/payment/wait?transactionReserveId=hoge...","app": "linesandbox://pay/payment/hoge..."},"transactionId": 2020122500646238200,"paymentAccessToken": "911163781279"}
}

如果返回如上这样的JSON那就没问题了。

相关文章:

  • ELF文件详解
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- GPT源代码解析
  • 笔试强训(十七)
  • JMeter同步定时器 模拟多用户并发访问场景
  • Google Earth Engine(GEE) 代码详解:批量计算_年 NDVI 并导出(附 Landsat 8 数据处理全流程)
  • Matlab基于SSA-MVMD麻雀算法优化多元变分模态分解
  • Python爬虫实战:研究JavaScript 环境补全逆向解密
  • 大模型MCP_MCP从流式SSE到流式HTTP_1.8.0支持流式HTTP交互_介绍_从应用到最优--人工智能工作笔记0245
  • 黑马Java跟学.最新AI+若依框架项目开发(一)
  • 手搓传染病模型(SEIARW)
  • AcroForm 格式化文本(域)字段
  • HttpSession 的运行原理
  • 2025-05-13 学习记录--Python-循环:while循环 + for循环 + 循环控制
  • Flannel vxlan模式的优缺点
  • 线性投影层---将输入特征从一个空间映射到另一个空间
  • 数据库数据清洗、预处理与质量监控、 数据质量的核心概念
  • AFFS2 的 `yaffs_ext_tags` 数据结构详解
  • LlamaIndex 第八篇 MilvusVectorStore
  • 学习黑客Windows 注册表编辑器详解
  • 无人机俯视风光摄影Lr调色预设,手机滤镜PS+Lightroom预设下载!
  • 首次采用“顶置主星+侧挂从星”布局,长二丁“1箭12星”发射成功
  • 北斗专访|特赞科技范凌:现在AI主要是“说话”,接下来要“干活”了
  • 地下5300米开辟“人造气路”,我国页岩气井垂深纪录再刷新
  • 王毅谈中拉论坛十年成果
  • 视频丨美国两名男童持枪与警察对峙,一人还试图扣动扳机
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相