PayPayの開発者向けAPIをPHPで実装してみた(サンプルあり)
PayPayのAPIを実装
PayPay for DevelopersにてPaypayのオープンAPIが提供された。なのでPHPのAPIサンプルコードを書いてみた。
事前にPayPay for Developersに登録して「APIキー」と「シークレットキー」を取得しておくこと。
あとサーバーにコンソールでログインし、composerコマンド「composer require paypayopa/php-sdk」でSDKをインストールしておくこと。
開発環境
・Xserver
・PHP7 以上(PHP5は不可)
・Paypay SDK 0.7.2 以上 ← 重要!
PHPサンプルソース
//------------------------------------- // SDK環境設定 //------------------------------------- require __DIR__ . '/vendor/autoload.php'; use PayPay\OpenPaymentAPI\Client; use PayPay\OpenPaymentAPI\Models\OrderItem; use PayPay\OpenPaymentAPI\Models\CreateQrCodePayload; //------------------------------------- // クライアントをビルドする(テスト環境) //------------------------------------- $client = new Client([ 'API_KEY' => '「APIキー」', 'API_SECRET'=>'「シークレットキー」', 'MERCHANT_ID'=>'「マーチャントID」' ], false); var_dump($client); //------------------------------------- // 商品情報を生成する //------------------------------------- $items = (new OrderItem()) ->setName('item name A') ->setQuantity(1) ->setUnitPrice(['amount' => 500, 'currency' => 'JPY']); //------------------------------------- // QRコードを生成する //------------------------------------- $payload = new CreateQrCodePayload(); $payload->setOrderItems($items); $payload->setMerchantPaymentId("mpid_".rand()); // 同じidを使いまわさないこと! $payload->setCodeType("ORDER_QR"); $payload->setAmount(["amount" => 500, "currency" => "JPY"]); $payload->setRedirectType('WEB_LINK'); $payload->setIsAuthorization(false); $payload->setRedirectUrl('https://paypay.ne.jp/'); $payload->setUserAgent($_SERVER['HTTP_USER_AGENT']); $QRCodeResponse = $client->code->createQRCode($payload); if($QRCodeResponse['resultInfo']['code'] !== 'SUCCESS') { echo("QRコード生成エラー"); return; } $merchantPaymentId = $QRCodeResponse['data']['merchantPaymentId']; var_dump($QRCodeResponse); //------------------------------------- // 決済情報を取得する //------------------------------------- $QRCodeDetails = $client->payment->getPaymentDetails($merchantPaymentId); if($QRCodeDetails['resultInfo']['code'] !== 'SUCCESS') { echo("決済情報取得エラー"); return; } var_dump($QRCodeDetails);
実行結果
$QRCodeResponse['data']['url'] から得られるアドレスにアクセスしてみると、paypayの決済画面が表示されます。
以上お疲れ様でしたー
追記
PaypaySDKのバージョンが0.7.0以下のものはバグがあり、安定して接続できない。最新のバージョンを使おう。
またMerchant Payment Idは使いまわさないこと。同じIDで2度目の取引をしようとするとエラーが表示されるため。
なお本番環境では、Client関数の引数をtrueに設定し、APIキーとシークレットキー、マーチャントIDを本番環境のものに置き換える。
更にpaypay事務局に連絡して、IPアドレスのホワイトリストを登録してもらう必要がある。(これで本番環境でもQRコードが払い出された)
上記に漏れがあると、{"resultInfo":{"code":"UNAUTHORIZED","message":"Unauthorized request","codeId":"08100016"}のようなエラーが表示されるので注意。