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

[复制链接]
发表于 昨天 22:48 | 显示全部楼层 |阅读模式

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

  • [条件] 情况
  • 使用 PHP 实现 LINE Pay API 的准备工作
  • 使用 PHP 实现 LINE Pay API
  • 概括   
[条件] 情况

这次我们将使用SandBox情况(测试情况) 。
               我们将实现RequestAPI的实行。
     使用 PHP 实现 LINE Pay API 的准备工作

     我们将解释在 PHP 中实现 LINE Pay API 所需的前期准备工作。
                         步                    沙盒天生                    
                                   创建一个沙盒。
        一旦天生,一封电子邮件将发送到您的电子邮件地址。
        
                     登录LINE Pay我的页面                                 
                                   点击并登录。
        您的登录详细信息将在您之前收到的电子邮件中提供。
                                     链接密钥管理                              
                                       登录后,进入“        支付链接受理”⇒“        链接密钥管理”,输入您的密码(您登录时使用的密码),点击        确认。                                               链接密钥管理参考                                    
                           记下       频道 ID和       频道密钥。                    PHP 实现 INE ay API                     在 PHP 中实现 LINE Pay API。
        
      
  1. <?php
  2. // 设置频道ID,用于标识API请求的来源
  3. $channel_id = '您的频道ID';
  4. // 设置秘密钥匙,用于生成请求签名
  5. $channel_secret_key = '你的秘密钥匙';
  6. // 设置Line支付API的URL(沙盒环境),用于测试
  7. $line_url = 'https://sandbox-api-pay.line.me';
  8. // 如果是生产环境,可以将URL更改为实际生产环境的URL
  9. // $line_url = 'https://api-pay.line.me';
  10. // 定义请求路径,这里指的是创建支付请求的API路径
  11. $path = '/v3/payments/request';
  12. // 生成一个唯一的UUID,用于标识当前请求
  13. $nonce = gen_uuid();
  14. // 构造请求体,这里用JSON格式定义了支付请求的相关信息
  15. $body = json_encode(array(
  16.     "amount" => 1,  // 支付金额,单位是日元(JPY)
  17.     "currency" => "JPY",  // 货币类型,这里使用的是日元
  18.     "orderId" => "testOrderId",  // 订单ID,用于标识当前的支付订单
  19.     "packages" => array(array(  // 商品包信息
  20.         "id" => "testPackages1",  // 商品包的ID
  21.         'name'   => "packages",  // 商品包的名称
  22.         "amount" => 1,  // 商品包的金额
  23.         "products" => array(array(  // 商品详细信息
  24.             "id" => "testProducts1",  // 商品ID
  25.             "name" => "products",  // 商品名称
  26.             "quantity" => 1,  // 商品数量
  27.             "price" => 1  // 商品单价
  28.         ))
  29.     )),
  30.     "redirectUrls" => array(  // 用户支付完成后需要重定向的URL
  31.         "confirmUrl" => "https://myPage",  // 支付完成后的确认URL
  32.         "cancelUrl" => "https://myPage"   // 支付取消后的URL
  33.     )
  34. ));
  35. // 输出请求体内容,便于调试时查看生成的JSON数据
  36. echo $body;
  37. // 生成请求签名,使用HMAC SHA-256算法
  38. // 签名的生成规则:签名 = base64(HMAC-SHA256(频道密钥 + 请求路径 + 请求体 + UUID, 频道密钥))
  39. $signature = base64_encode(hash_hmac('sha256', $channel_secret_key . $path . $body . $nonce, $channel_secret_key, true));
  40. // 设置HTTP请求头,包含必要的认证信息
  41. $header = array(
  42.     'Content-Type:'               . 'application/json',  // 请求内容类型,设置为JSON格式
  43.     'X-LINE-ChannelId:'           . $channel_id,         // 频道ID,用于标识发送请求的渠道
  44.     'X-LINE-Authorization-Nonce:' . $nonce,              // 使用的UUID,防止重放攻击
  45.     'X-LINE-Authorization:'       . $signature           // 请求签名,用于验证请求的合法性
  46. );
  47. /***********************************************************
  48. * 执行API请求
  49. ***********************************************************/
  50. // 初始化cURL会话
  51. $curl = curl_init();
  52. // 设置cURL选项
  53. curl_setopt($curl, CURLOPT_URL,            $line_url . $path);  // 设置请求的URL
  54. curl_setopt($curl, CURLOPT_HTTPHEADER,     $header);            // 设置请求头
  55. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);              // 将返回结果以字符串形式输出
  56. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);                 // 禁用SSL验证(用于开发环境,生产环境请开启)
  57. curl_setopt($curl, CURLOPT_POST,           true);              // 设置为POST请求
  58. curl_setopt($curl, CURLOPT_POSTFIELDS,     $body);             // 设置请求体内容
  59. // 执行cURL请求并获取返回结果
  60. $result = curl_exec($curl);
  61. // 关闭cURL会话
  62. curl_close($curl);
  63. // 输出API请求的响应结果
  64. echo $result;
  65. // 生成UUID函数,用于创建唯一的标识符
  66. function gen_uuid()
  67. {
  68.     return sprintf(
  69.         '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',  // 按照特定格式生成UUID
  70.         mt_rand(0, 0xffff),   // 生成一个随机的16位数
  71.         mt_rand(0, 0xffff),
  72.         mt_rand(0, 0xffff),
  73.         mt_rand(0, 0x0fff) | 0x4000,  // 确保UUID符合UUIDv4格式
  74.         mt_rand(0, 0x3fff) | 0x8000,
  75.         mt_rand(0, 0xffff),
  76.         mt_rand(0, 0xffff),
  77.         mt_rand(0, 0xffff)
  78.     );
  79. }
  80. ?>
复制代码
       运行上述内容。
      
  1. {
  2.     "returnCode": "0000",
  3.     "returnMessage": "Success.",
  4.     "info": {
  5.         "paymentUrl": {
  6.             "web": "https://sandbox-web-pay.line.me/web/payment/wait?transactionReserveId=hoge...",
  7.             "app": "linesandbox://pay/payment/hoge..."
  8.         },
  9.         "transactionId": 2020122500646238200,
  10.         "paymentAccessToken": "911163781279"
  11.     }
  12. }
复制代码
       假如返回如上如许的JSON那就没问题了。
        

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表