8d5f0693 by Yokihito Oki

first commit

0 parents
*.log
.DS_Store
/src/composer/vendor
\ No newline at end of file
# PayPay PHP Client のラッパークラス
https://github.com/paypay/paypayopa-sdk-php
## Get Start
TBD
\ No newline at end of file
version: '3'
services:
php:
build:
context: .
dockerfile: ./php/Dockerfile
volumes:
- ./src:/var/www/html
environment:
PAYPAY_API_KEY: m_GnxuOq6AcO_4HOl
PAYPAY_API_SECRET: LSRwZZqMS8jxIa56JnkKNtW0GUSWJCSsKt2JwPDw
PAYPAY_MERCHANT_ID: 269480125409779712
# ports:
# - 8080:80
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
\ No newline at end of file
FROM php:7.3.9-apache
COPY php.ini /usr/local/etc/php/
RUN apt-get update && apt-get install -y \
git vim unzip \
&& apt-get clean \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
\ No newline at end of file
<?php
// =============================================================================
// PayPayマネージャ
// =============================================================================
require_once(__DIR__ . '/composer/vendor/autoload.php');
include(__DIR__ . "/constants.php");
use PayPay\OpenPaymentAPI\Client;
use PayPay\OpenPaymentAPI\Models\CreateQrCodePayload;
class PayPayManager {
private $client = null;
// =======================================================
// コンストラクタ
// =======================================================
public function __construct ($api_key, $api_secret, $merchant_id) {
$this->$client = new Client([
'API_KEY' => $api_key,
'API_SECRET' => $api_secret,
'MERCHANT_ID' => $merchant_id
], PAYPAY_IS_STAGING); //Set True for Production Environment. By Default this is set False for Sandbox Environment.
// ドキュメンのミス?
}
// =======================================================
// コード作成
// https://developer.paypay.ne.jp/products/docs/appinvoke#dynamic-qr-codeid
// アプリコールを使用して支払いを受け取るには、まずコードを作成する必要があります。
// $merchant_payment_id string(64) : 加盟店から提供された一意の支払い取引ID
// $price integer(11) : 支払金額
// $user_agent string(?) : トランザクションの発生元であるWebブラウザーのUser Agent
// =======================================================
public function create_code ($merchant_payment_id, $price, $user_agent) {
// setup payment object
$CQCPayload = new CreateQrCodePayload();
// Set merchant pay identifier
$CQCPayload->setMerchantPaymentId($merchant_payment_id);
// Log time of request
$CQCPayload->setRequestedAt();
// Indicate you want QR Code
$CQCPayload->setCodeType("ORDER_QR");
// TODO 明細情報
// Provide order details for invoicing
// $OrderItems = [];
// $OrderItems[] = (new OrderItem())
// ->setName('お食事代')
// ->setQuantity(1)
// ->setUnitPrice('amount' => 20, 'currency' => 'JPY']);
// $CQCPayload->setOrderItems($OrderItems);
// Save Cart totals
$amount = [
"amount" => $price,
"currency" => "JPY"
];
$CQCPayload->setAmount($amount);
// Configure redirects
$CQCPayload->setRedirectType('WEB_LINK');
$CQCPayload->setRedirectUrl(PAYPAY_REDIRECT_URL);
// User Agent
$CQCPayload->setUserAgent($user_agent);
// Get data for QR code
$response = $this->$client->code->createQRCode($CQCPayload);
return $response;
}
// =======================================================
// コード削除
// https://developer.paypay.ne.jp/products/docs/appinvoke#delete-qr-codeid
// 生成したコードを削除したい場合こちらを利用ください。 このAPIを使用する理由として、次のことが考えられます。
// ユーザーが注文をキャンセルした場合
// ユーザーがPayPayアプリを開いて支払いを行わず、競合状態が発生しない目的でコードを削除する場合
// 処理を実施する場合には、以下のパラメーターを使用してリクエストしてください。
// $code_id string(?) : `Create a Code`メソッドのレスポンス値に含まれます。
// =======================================================
public function delete_code ($code_id) {
// Calling the method to delete a QR Code
$response = $this->$client->code->deleteQRCode($code_id);
return $response;
}
// =======================================================
// 決済情報取得
// https://developer.paypay.ne.jp/products/docs/appinvoke#fetch-qr-code
// 決済情報について参照をすることができます。このAPIを利用し決済が完了しているか確認してください。`create a code`の支払いプロセスは非同期で行われるため、このAPIをポーリング実装する必要があります。以下のパラメーターを設定することで、決済情報を参照することができます。
// $merchant_payment_id string(64) : 加盟店から提供された一意の支払い取引ID
// =======================================================
public function get_payment_details ($merchant_payment_id) {
// Calling the method to get payment details
$response = $this->$client->payment->getPaymentDetails($merchant_payment_id);
return $response;
}
// =======================================================
// 決済取り消し
// https://developer.paypay.ne.jp/products/docs/appinvoke#cancel-payment
// 決済をキャンセルしたい場合にこちらを利用ください。通常の決済フローでは基本的には、`Cancel a payment`を使いませんが以下の場合に利用ください。
// --Polling for Get Payment Details timeout, and you are uncertain of the status
// 注:`Cancel a payment`は、支払いが行われた翌日の00:14:59まで使用できます。 00:15 AM以降の場合、`Refund a payment`を呼び出して支払いを払い戻します。
// $merchant_payment_id string(64) : 加盟店から提供された一意の支払い取引ID
// =======================================================
public function cancel_payment ($merchant_payment_id) {
// Calling the method to cancel a Payment
$response = $this->$client->payment->cancelPayment($merchant_payment_id);
return $response;
}
// =======================================================
// 払い戻し処理
// https://developer.paypay.ne.jp/products/docs/appinvoke#refund-payment
// 決済が正常に完了しユーザーへの商品の提供後に、返品する場合に`Refund a payment`を使用ください。タイムアウトやシステム的なエラーが出て、決済処理を中止する場合には、`Cancel a payment`を活用ください。主要な項目を以下に記載しますので、以下のパラメーターを使用してリクエストしてください。
//
// $merchant_refund_id string(64) : 加盟店から提供された一意の払い戻し取引ID
// $payment_id string(64) : PayPayが決済後に発番する取引ID
// $amount integer(11) : 返金金額
// $reason string(255) : 返金理由
// =======================================================
public function refund_payment ($merchant_refund_id, $payment_id, $amount, $reason) {
// Creating the payload to refund a Payment, additional parameters can be added basis the API Documentation
$payload = new PaypaySdk/Payload();
$payload->set_merchant_refund_id('merchant_refund_id');
$payload->set_merchant_payment_id('paypay_payment_id');
$amount = [
"amount" => 1,
"currency" => "JPY"
];
$payload->set_amount($amount);
$payload->set_reason("Reason for Refund");
// Calling the method to refund a Payment
$response = $this->$client->refund->refundPayment($payload);
return $response;
}
// =======================================================
// 払い戻しのステータスと詳細を取得する
// https://developer.paypay.ne.jp/products/docs/appinvoke#fetch-refund-payment
// 返金処理(`Refund a payment`)がタイムアウトをした場合には、このAPIを利用ください。処理を実施する場合には、以下のパラメーターを使用してリクエストしてください。
// $merchant_refund_id string(64) : 加盟店から提供された一意の返品取引ID
// =======================================================
public function fetch_refund_status_and_details ($merchant_refund_id) {
// Calling the method to get Refund Details
$response = $this->$client->refund->getRefundDetails($merchant_refund_id);
return $response;
}
}
?>
{
"require": {
"paypayopa/php-sdk": "^1.0"
}
}
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "52b3757d4b79086a90773895ea2ab80b",
"packages": [
{
"name": "firebase/php-jwt",
"version": "v5.2.0",
"source": {
"type": "git",
"url": "https://github.com/firebase/php-jwt.git",
"reference": "feb0e820b8436873675fd3aca04f3728eb2185cb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/firebase/php-jwt/zipball/feb0e820b8436873675fd3aca04f3728eb2185cb",
"reference": "feb0e820b8436873675fd3aca04f3728eb2185cb",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": ">=4.8 <=9"
},
"type": "library",
"autoload": {
"psr-4": {
"Firebase\\JWT\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Neuman Vong",
"email": "neuman+pear@twilio.com",
"role": "Developer"
},
{
"name": "Anant Narayanan",
"email": "anant@php.net",
"role": "Developer"
}
],
"description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.",
"homepage": "https://github.com/firebase/php-jwt",
"keywords": [
"jwt",
"php"
],
"time": "2020-03-25T18:49:23+00:00"
},
{
"name": "paypayopa/php-sdk",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/paypay/paypayopa-sdk-php.git",
"reference": "fd56ebfcdf1128b9dc082bc5e773312a38561bef"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paypay/paypayopa-sdk-php/zipball/fd56ebfcdf1128b9dc082bc5e773312a38561bef",
"reference": "fd56ebfcdf1128b9dc082bc5e773312a38561bef",
"shasum": ""
},
"require": {
"firebase/php-jwt": "^5.2",
"php": ">=7.0.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.16",
"phpstan/phpstan": "^0.12.33",
"phpunit/phpunit": "^9"
},
"type": "library",
"autoload": {
"psr-4": {
"PayPay\\OpenPaymentAPI\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "PayPay Open Source Development Team",
"email": "opensource@paypay-corp.co.jp"
}
],
"description": "PHP SDK for PayPay Open Payment API",
"keywords": [
"japan",
"opa",
"payment",
"paypay",
"qr",
"qrcode"
],
"time": "2020-07-29T02:49:01+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
"plugin-api-version": "1.1.0"
}
<?php
define('PAYPAY_IS_STAGING', true);
define('PAYPAY_REDIRECT_URL', 'http://localhost:3000/user/paypay_complete/');
\ No newline at end of file
<?php
include(__DIR__ . "/PayPayManager.php");
try {
$paypay = new PayPayManager('m_GnxuOq6AcO_4HOl', 'LSRwZZqMS8jxIa56JnkKNtW0GUSWJCSsKt2JwPDw', 269480125409779712);
error_log(print_r($paypay, true), 3, '/var/www/html/debug.log');
// コード作成
// $response = $paypay->create_code('1', 100, 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1');
// $merchant_payment_id = NULL;
// $code_id = NULL;
// $url = '';
// if ($response['resultInfo']['code'] == 'SUCCESS') {
// $url = $response['data']['url'];
// $merchant_payment_id = $response['data']['merchantPaymentId'];
// $code_id = $response['data']['codeId'];
// }
// error_log(print_r($response, true), 3, '/var/www/html/debug.log');
// // 決済情報取得
// $response = $paypay->get_payment_details(1);
// error_log(print_r($response, true), 3, '/var/www/html/debug.log');
// コード削除
// $response = $paypay->delete_code('04-rNtyNkmqva9KNakh');
// error_log(print_r($response, true), 3, '/var/www/html/debug.log');
// 決済取り消し
// $response = $paypay->cancel_payment(1);
// error_log(print_r($response, true), 3, '/var/www/html/debug.log');
} catch (Exception $e) {
}
\ No newline at end of file
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!