この記事で解決できる悩み
いずみ
こんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴9年)で、資格は13個保有しています。
結論、LINE Pay APIをPHPで実装するのは非常に簡単です。
本記事を読めば、LINE Pay APIをPHPで実装する方法が理解できるので早速見ていきましょう!
すぐ読み終わるので、ぜひ最後まで読んでくださいね♪
目次
【前提】環境
今回は、SandBox環境(テスト環境)を利用します。
RequestAPIの実行までを実装していきます。
LINE Pay APIをPHPで実装するための事前準備
LINE Pay APIをPHPで実装するための事前準備を解説します。
STEP
連動キー管理
ログイン後、「決済連動管理」⇒「連動キー管理」でパスワード(ログイン時のパスワード)を入力し、確認をクリックします。
STEP
連動キー管理参照
Channel IDとChannel Secret Keyをメモしておきます。
LINE Pay APIをPHPで実装する
LINE Pay APIをPHPで実装します。
<?php
// チャネルID(連動キー管理) ※環境毎に変えること
$channel_id = 'あなたのチャネルID';
// チャネルシークレットキー(連動キー管理) ※環境毎に変えること
$channel_secret_key = 'あなたのシークレットキー';
// LINE URL ※下記どちらでも可能
$line_url = 'https://sandbox-api-pay.line.me';
// $line_url = 'https://api-pay.line.me';
// パス
$path = '/v3/payments/request';
// ノンス
$nonce = gen_uuid();
// ボディ
$body = json_encode(array(
"amount" => 1,
"currency" => "JPY",
"orderId" => "testOrderId",
"packages" => array(array(
"id" => "testPackages1",
'name' => "packages",
"amount" => 1,
"products" => array(array(
"id" => "testProducts1",
"name" => "products",
"quantity" => 1,
"price" => 1
))
)),
"redirectUrls" => array(
"confirmUrl" => "https://myPage",
"cancelUrl" => "https://myPage"
)
));
echo $body;
// シグネチャ
$signature = base64_encode(hash_hmac('sha256', $channel_secret_key . $path . $body . $nonce, $channel_secret_key, true));
// ヘッダ情報
$header = array(
'Content-Type:' . 'application/json',
'X-LINE-ChannelId:' . $channel_id,
'X-LINE-Authorization-Nonce:' . $nonce,
'X-LINE-Authorization:' . $signature
);
/***********************************************************
* API実行
***********************************************************/
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $line_url . $path);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
/**
* UUIDを生成する
*/
function gen_uuid()
{
return sprintf(
'%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0xffff),
mt_rand(0, 0x0fff) | 0x4000,
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が返却されればOKです。
まとめ
今回は、LINE Pay APIをPHPで実装する方法について解説しました。
以下が本記事のまとめになります。
最後までお読みいただき、ありがとうございました!
- クソおすすめ本
海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。