├── .gitignore ├── src ├── Facades │ └── GMO.php ├── Traits │ ├── CheckGMO.php │ ├── RegisterGMO.php │ ├── UpdateGMO.php │ ├── CardInfoGMO.php │ ├── TranGMO.php │ └── MemberGMO.php ├── GMOPaymentServiceProvider.php ├── Payment │ ├── RedirectUtil.php │ ├── SiteApi.php │ ├── ShopAndSiteApi.php │ ├── Api.php │ └── Consts.php └── GMO.php ├── config └── gmo.php ├── composer.json └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | /.idea 3 | .DS_Store 4 | *.cache -------------------------------------------------------------------------------- /src/Facades/GMO.php: -------------------------------------------------------------------------------- 1 | env('GMO_HOST', ''), 5 | 'site_id' => env('GMO_SITE_ID', ''), 6 | 'site_pass' => env('GMO_SITE_PASS', ''), 7 | 'shop_id' => env('GMO_SHOP_ID', ''), 8 | 'shop_pass' => env('GMO_SHOP_PASS', ''), 9 | 10 | 'member_model' => App\Models\User::class, 11 | 12 | 'log' => [ 13 | 'name' => 'gmo', 14 | 'path' => 'logs/gmo/' 15 | ], 16 | 17 | 'seq_mode' => 1, 18 | ]; -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "deha-soft/laravel-gmo-payment", 3 | "description": "GMO payment sdk for laravel", 4 | "type": "library", 5 | "license": "MIT", 6 | "autoload": { 7 | "psr-4": { 8 | "DehaSoft\\LaravelGmoPayment\\": "src/" 9 | } 10 | }, 11 | "authors": [ 12 | { 13 | "name": "Deha", 14 | "email": "developer@deha-soft.com" 15 | } 16 | ], 17 | "minimum-stability": "stable", 18 | "require": {} 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Laravel GMO payment package 2 | 3 | ## Installation 4 | 5 | 1. You can install the package via composer: 6 | 7 | ```bash 8 | composer require deha-soft/laravel-gmo-payment 9 | ``` 10 | 11 | 2. Optional: The service provider will automatically get registered. Or you may manually add the service provider in your config/app.php file: 12 | 13 | ```php 14 | 'providers' => [ 15 | // ... 16 | DehaSoft\LaravelGmoPayment\GMOPaymentServiceProvider::class, 17 | ]; 18 | ``` 19 | 20 | ## License 21 | 22 | The MIT License (MIT). Please see [License File](LICENSE.md) for more information. -------------------------------------------------------------------------------- /src/Traits/CheckGMO.php: -------------------------------------------------------------------------------- 1 | connectGMOSite()->searchMember($memberId); 16 | 17 | if ($result['success']) { 18 | return true; 19 | } 20 | 21 | return false; 22 | } 23 | 24 | /** 25 | * Check member exist 26 | * 27 | * @param int $memberId member id 28 | * 29 | * @return mixed 30 | */ 31 | public function checkPaymentExist($memberId) 32 | { 33 | $result = gmo()->connectGMOSite() 34 | ->searchCard($memberId, config('gmo.seq_mode')); 35 | 36 | if ($result['success']) { 37 | return true; 38 | } 39 | 40 | return false; 41 | } 42 | } -------------------------------------------------------------------------------- /src/GMOPaymentServiceProvider.php: -------------------------------------------------------------------------------- 1 | publishes([ 19 | __DIR__.'/../config/gmo.php' => config_path('permission.php'), 20 | ], 'gmo'); 21 | 22 | $this->app->bind('gmo', function ($app) { 23 | return new GMO($app); 24 | }); 25 | $this->registerFacade(); 26 | } 27 | 28 | /** 29 | * Register the application services. 30 | * 31 | * @return void 32 | */ 33 | public function register() 34 | { 35 | $this->mergeConfigFrom( 36 | __DIR__.'/../config/gmo.php', 37 | 'gmo' 38 | ); 39 | } 40 | 41 | /** 42 | * Register facade 43 | * 44 | * @return void 45 | */ 46 | public function registerFacade() 47 | { 48 | $this->app->booting(function () { 49 | $loader = \Illuminate\Foundation\AliasLoader::getInstance(); 50 | $loader->alias('gmo', GMOFacade::class); 51 | }); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/Payment/RedirectUtil.php: -------------------------------------------------------------------------------- 1 | auContinuanceStart(); 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/Traits/RegisterGMO.php: -------------------------------------------------------------------------------- 1 | connectGMOSite() 17 | ->saveMember($data['id'], mb_convert_encoding($data['name'], 'SJIS')); 18 | 19 | if ($member['success']) { 20 | return true; 21 | } 22 | 23 | return gmo()->getErrorMessage($member['result']); 24 | } 25 | 26 | /** 27 | * Register new payment for member in GMO 28 | * 29 | * @param object $data Update Request 30 | * 31 | * @return mixed 32 | */ 33 | public function registerMemberPaymentGMO($data) 34 | { 35 | return false; 36 | } 37 | 38 | /** 39 | * Register credit card for member GMO 40 | * 41 | * @param array $data data 42 | * 43 | * @return boolean 44 | */ 45 | public function registerCreditCardForMemberGMO($data) 46 | { 47 | $result = gmo()->connectGMOSite() 48 | ->saveCard( 49 | $data['memberId'], 50 | $data['cardNumberVisa'], 51 | $data['expire'], 52 | $data['token'] 53 | ); 54 | 55 | 56 | if ($result['success']) { 57 | session()->put('gmo_card_data', $result['result']); 58 | return true; 59 | } 60 | 61 | return gmo()->getErrorMessage($result['result']); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/Traits/UpdateGMO.php: -------------------------------------------------------------------------------- 1 | connectGMOSite()->updateMember( 18 | $memberId, mb_convert_encoding($name, 'SJIS') 19 | ); 20 | 21 | if ($member['success'] === true) { 22 | return true; 23 | } 24 | return gmo()->getErrorMessage($member['result']); 25 | } 26 | 27 | /** 28 | * Update payment GMO for member 29 | * 30 | * @param array $data 31 | * 32 | * @return mixed 33 | */ 34 | public function updateMemberPaymentGMO($data) 35 | { 36 | $member = $this->member(); 37 | if (!$member) { 38 | return false; 39 | } 40 | 41 | $infoCard = gmo()->connectGMOSite() 42 | ->searchCard($member->id, config('gmo.seq_mode'))['result']; 43 | 44 | if (isset($infoCard[0])) { 45 | $infoCard = $infoCard[0]; 46 | } 47 | 48 | $result = gmo()->connectGMOSite() 49 | ->updateCard( 50 | $infoCard['card_seq'], 51 | $member->id, 52 | $data['card_number'], 53 | $data['card_expire_year'] . $data['card_expire_month'], 54 | [ 55 | 'holder_name' => $data['card_name'], 56 | 'Token' => $data['card_secret'] 57 | ] 58 | ); 59 | 60 | if ($result['success'] === true) { 61 | if (isset($member->payment)) { 62 | $payment = $member->payment; 63 | $payment->gmo_serial = $result['result']['forward']; 64 | if ($payment->save()) { 65 | return true; 66 | } 67 | } 68 | return false; 69 | } 70 | 71 | return gmo()->getErrorMessage($result['result']); 72 | } 73 | } -------------------------------------------------------------------------------- /src/Traits/CardInfoGMO.php: -------------------------------------------------------------------------------- 1 | payment)) { 19 | if ($member->payment->old_gmo) { 20 | $infoCard = gmo()->connectGMOSite() 21 | ->searchCard($member->payment->old_gmo, config('gmo.seq_mode')); 22 | } else { 23 | $infoCard = gmo()->connectGMOSite() 24 | ->searchCard($member->id, config('gmo.seq_mode')); 25 | } 26 | 27 | 28 | if ($infoCard['success'] && isset($infoCard['result'])) { 29 | $infoCard = $this->getCardInfo($infoCard['result']); 30 | } else { 31 | $infoCard = null; 32 | } 33 | } 34 | 35 | return $this->getCardFormat($infoCard); 36 | } 37 | 38 | public function getCardFormat($data) 39 | { 40 | if ($data) { 41 | return [ 42 | 'card_number' => $data['card_no'], 43 | 'card_name' => $data['holder_name'], 44 | 'card_expire_month' => substr($data['expire'], 2, 2), 45 | 'card_expire_year' => substr($data['expire'], 0, 2), 46 | ]; 47 | } else { 48 | return [ 49 | 'card_number' => null, 50 | 'card_name' => null, 51 | 'card_expire_month' => null, 52 | 'card_expire_year' => null, 53 | ]; 54 | } 55 | } 56 | 57 | /** 58 | * Get data of credit card 59 | * 60 | * @param array $data data 61 | * 62 | * @return array|mixed 63 | */ 64 | public function getCardInfo($data) 65 | { 66 | if (isset($data['card_no']) 67 | && isset($data['expire']) 68 | && isset($data['holder_name']) 69 | ) { 70 | return $data; 71 | } else { 72 | return reset($data); 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /src/GMO.php: -------------------------------------------------------------------------------- 1 | _errorMessage = []; 74 | 75 | if ($errors) { 76 | if (isset($errors['ErrCode'])) { 77 | $this->_errorMessage[] = $errors['ErrCode'] . ':' . 78 | Consts::getErrorMessage($errors['ErrInfo']); 79 | } else { 80 | foreach ($errors as $error) { 81 | $this->_errorMessage[] = $error['ErrCode'] . ':' . 82 | Consts::getErrorMessage($error['ErrInfo']); 83 | } 84 | } 85 | } 86 | 87 | return $this->_errorMessage; 88 | } 89 | } -------------------------------------------------------------------------------- /src/Traits/TranGMO.php: -------------------------------------------------------------------------------- 1 | id) || !isset($data->amount)) { 21 | return false; 22 | } 23 | 24 | $orderId = $data->id.'-'.uniqid(); 25 | 26 | $result = gmo()->connectGMOShop() 27 | ->entryTran($orderId, 'CAPTURE', $data->amount); 28 | 29 | if (true === $result['success']) { 30 | $result['order_id'] = $orderId; 31 | return $result; 32 | } 33 | 34 | return gmo()->getErrorMessage($result['result']); 35 | } 36 | 37 | /** 38 | * Change money 39 | * 40 | * @param array $data data 41 | * 42 | * @return mixed 43 | */ 44 | public function charge($data) 45 | { 46 | $regResult = $this->registerTran($data); 47 | 48 | if (isset($regResult['success']) 49 | || $this->_isOrderAlreadyExisted($regResult) 50 | ) { 51 | return $this->executeTran($data, $regResult); 52 | } 53 | return $regResult; 54 | } 55 | 56 | /** 57 | * Execute a registered transaction 58 | * 59 | * @param object $order $order 60 | * @param array $data data 61 | * 62 | * @return mixed 63 | */ 64 | public function executeTran($order, $data) 65 | { 66 | $result = gmo()->connectGMOShopAndSite() 67 | ->execTran( 68 | $data['result']['access_id'], 69 | $data['result']['access_pass'], 70 | $data['order_id'], //order id 71 | [ 72 | 'member_id' => $order->family_id, 73 | 'card_seq' => '0', 74 | 'method' => '1' 75 | ] 76 | ); 77 | 78 | if (true === $result['success']) { 79 | $order->gmo_order_id = $result['result']['order_id']; 80 | $order->save(); 81 | 82 | return true; 83 | } 84 | return gmo()->getErrorMessage($result['result']); 85 | } 86 | 87 | /** 88 | * Check if order was created already 89 | * 90 | * @param array $result result 91 | * 92 | * @return bool 93 | */ 94 | private function _isOrderAlreadyExisted($result) 95 | { 96 | if (isset($result['multiple'])) { 97 | if (false === $result['multiple']) { 98 | // order already exist 99 | if ('E01040010' === $result['result']['ErrInfo']) { 100 | return true; 101 | } 102 | } 103 | } 104 | 105 | return false; 106 | } 107 | 108 | /** 109 | * Execute a change transaction 110 | * 111 | * @param array $data data 112 | * 113 | * @return mixed 114 | */ 115 | public function changeTran($data) 116 | { 117 | $search = gmo()->connectGMOShop()->searchTradeMulti($data->order_id, '0'); 118 | 119 | if ($search['result'] == true) { 120 | if ( 121 | !empty($search['result']['access_id']) && 122 | !empty($search['result']['access_pass']) 123 | ) { 124 | $result = gmo()->connectGMOShop() 125 | ->alterTran( 126 | $search['result']['access_id'], 127 | $search['result']['access_pass'], 128 | [ 129 | 'job_cd' => 'VOID' 130 | ] 131 | ); 132 | 133 | if (true === $result['success']) { 134 | return $result; 135 | } 136 | 137 | return gmo()->getErrorMessage($result['result']); 138 | } 139 | } 140 | } 141 | } -------------------------------------------------------------------------------- /src/Traits/MemberGMO.php: -------------------------------------------------------------------------------- 1 | checkMemberExist($member->id); 25 | $gmoMember = false; 26 | $name = $member->kanji_first_name . ' ' . $member->kanji_last_name; 27 | if (!$isMemberExist) { 28 | $gmoMember = $this->saveGMOMember($member->id, $name); 29 | } else { 30 | $gmoMember = $this->updateMemberGMO($member->id, $name); 31 | } 32 | 33 | // register payment GMO 34 | $gmoPayment = false; 35 | if ($gmoMember === true) { 36 | $isPaymentExist = $this->checkPaymentExist($member->id); 37 | 38 | if (!$isPaymentExist) { 39 | $gmoPayment = $this->saveGMOPayment($member, $data); 40 | } else { 41 | $gmoPayment = $this->updateMemberPaymentGMO($data); 42 | } 43 | 44 | if ($gmoPayment === true) { 45 | return true; 46 | } else { 47 | $this->addLogGMO($gmoPayment, $member->id); 48 | $errors = $gmoPayment[0]; 49 | } 50 | } else { 51 | $this->addLogGMO($gmoMember, $member->id); 52 | $errors = $gmoMember[0]; 53 | } 54 | 55 | return $errors; 56 | } 57 | 58 | /** 59 | * Create new member on GMO payment gateway 60 | * 61 | * @param int $memberId 62 | * @param array $name 63 | * 64 | * @return bool 65 | */ 66 | public function saveGMOMember($memberId, $name) 67 | { 68 | $result = gmo()->connectGMOSite()->saveMember($memberId, $name); 69 | if ($result['success'] === true) { 70 | return true; 71 | } else { 72 | return gmo()->getErrorMessage($result['result']); 73 | } 74 | } 75 | 76 | /** 77 | * Create GMO payment 78 | * 79 | * @param int $member 80 | * @param array $input 81 | * 82 | * @return bool 83 | * @throws GeneralException 84 | */ 85 | public function saveGMOPayment($member, $input) 86 | { 87 | $data = [ 88 | 'memberId' => $member->id, 89 | 'cardNumberVisa' => $input['card_number'], 90 | 'expire' => $input['card_expire_year'] . 91 | sprintf('%02d', $input['card_expire_month']), 92 | 'token' => [ 93 | 'holder_name' => $input['card_name'], 94 | 'Token' => $input['card_secret'] 95 | ] 96 | ]; 97 | 98 | $resultRegisterCard = $this->registerCreditCardForMemberGMO($data); 99 | if ($resultRegisterCard === true) { 100 | return true; 101 | 102 | } 103 | 104 | return $resultRegisterCard; 105 | } 106 | 107 | /** 108 | * Write log 109 | * 110 | * @param array $errors 111 | * @param int $memberId 112 | * 113 | * @return mixed 114 | */ 115 | private function addLogGMO($errors, $memberId) 116 | { 117 | $logName = config('gmo.log.name') . date('Y_m_d', time()) . '.log'; 118 | $view_log = new Logger($logName); 119 | $view_log->pushHandler( 120 | new StreamHandler( 121 | storage_path(config('gmo.log.path')) . $logName, 122 | Logger::INFO 123 | ) 124 | ); 125 | 126 | if ($errors) { 127 | $view_log->addInfo( 128 | '[ERROR] Add member '. $memberId .' with ' . 129 | count($errors) . ' errors:' 130 | ); 131 | if (is_array($errors)) { 132 | foreach ($errors as $error) { 133 | $view_log->addInfo($error); 134 | } 135 | } else { 136 | $view_log->addInfo($errors); 137 | } 138 | } 139 | } 140 | } -------------------------------------------------------------------------------- /src/Payment/SiteApi.php: -------------------------------------------------------------------------------- 1 | 'value', ...) 20 | * It contains not required and conditional required fields. 21 | * 22 | * Return result 23 | * It will be return only one or multiple records. 24 | * Multiple records joined with '|' whatever success or failed. 25 | */ 26 | class SiteApi extends Api { 27 | 28 | /** 29 | * Site api constructor. 30 | */ 31 | public function __construct($host, $site_id, $site_pass, $params = array()) { 32 | if (!is_array($params)) { 33 | $params = array(); 34 | } 35 | $params['site_id'] = $site_id; 36 | $params['site_pass'] = $site_pass; 37 | parent::__construct($host, $params); 38 | } 39 | 40 | /** 41 | * Register the member information in the specified site. 42 | * 43 | * @Input parameters. 44 | * 45 | * Member ID (会員 ID) 46 | * --MemberID string(60) unique not null. 47 | * 48 | * Member name (会員名) 49 | * --MemberName string(255) null. 50 | * 51 | * @Output parameters. 52 | * 53 | * Member ID (会員 ID) 54 | * --MemberID string(60) 55 | */ 56 | public function saveMember($member_id, $member_name = '') { 57 | $data = array( 58 | 'member_id' => $member_id, 59 | 'member_name' => $member_name, 60 | ); 61 | 62 | return $this->callApi('saveMember', $data); 63 | } 64 | 65 | /** 66 | * Update the member information in the specified site. 67 | * 68 | * @Input parameters. 69 | * 70 | * Member ID (会員 ID) 71 | * --MemberID string(60) unique not null. 72 | * 73 | * Member name (会員名) 74 | * --MemberName string(255) null. 75 | * 76 | * @Output parameters. 77 | * 78 | * Member ID (会員 ID) 79 | * --MemberID string(60) 80 | */ 81 | public function updateMember($member_id, $member_name = '') { 82 | $data = array( 83 | 'member_id' => $member_id, 84 | 'member_name' => $member_name, 85 | ); 86 | 87 | return $this->callApi('updateMember', $data); 88 | } 89 | 90 | /** 91 | * Search the member information in the specified site. 92 | * 93 | * @Input parameters. 94 | * 95 | * Member ID (会員 ID) 96 | * --MemberID string(60) not null. 97 | * 98 | * @Output parameters. 99 | * 100 | * Member ID (会員 ID) 101 | * --MemberID string 102 | * 103 | * Member Name (会員名) 104 | * --MemberName string 105 | * 106 | * Delete flag (削除フラグ) 107 | * --DeleteFlag string 108 | * 0: undeleted. 109 | */ 110 | public function searchMember($member_id) { 111 | $data = array('member_id' => $member_id); 112 | return $this->callApi('searchMember', $data); 113 | } 114 | 115 | /** 116 | * Delete the member information from the specified site. 117 | * 118 | * @Input parameters. 119 | * 120 | * Member ID (会員 ID) 121 | * --MemberID string(60) not null. 122 | * 123 | * @Output parameters. 124 | * 125 | * Member ID (会員 ID) 126 | * --MemberID string(60) 127 | */ 128 | public function deleteMember($member_id) { 129 | $data = array('member_id' => $member_id); 130 | return $this->callApi('deleteMember', $data); 131 | } 132 | 133 | /** 134 | * Register the card information to the specified member. 135 | * 136 | * In addition, it confirms the effectiveness communicates 137 | * with the card company using a shop ID which is set on the site. 138 | * 139 | * Maximum only 10 records can be saved. 140 | * 141 | * @Input parameters. 142 | * 143 | * Member ID (会員 ID) 144 | * --MemberID string(60) not null. 145 | * 146 | * Card registration serial number mode (カード登録連番モード) 147 | * --SeqMode string(1) null default 0. 148 | * 149 | * Allowed values: 150 | * 0: Logical mode (default) 151 | * 1: Physical mode 152 | * 153 | * Card registration serial number (カード登録連番) 154 | * --CardSeq int(1) conditional null. 155 | * 156 | * This filed is conditional required. 157 | * Null value when create, not null when update. 158 | * 159 | * Default flag (デフォルトフラグ) 160 | * --DefaultFlag string(1) null default 0. 161 | * 162 | * Allowed values: 163 | * 0: it is not the default card (default) 164 | * 1: it will be the default card 165 | * 166 | * Card company abbreviation (カード会社略称) 167 | * --CardName string(10) null. 168 | * 169 | * Card number (カード番号) 170 | * --CardNo string(16) not null. 171 | * 172 | * Card password (カードパスワード) 173 | * --CardPass string(20) null. 174 | * 175 | * The card password is required for settlement. 176 | * 177 | * Expiration date (有効期限) 178 | * --Expire string(4) not null. 179 | * 180 | * Allowed format: YYMM 181 | * 182 | * Holder name (名義人) 183 | * --HolderName string(50) null. 184 | * 185 | * @Output parameters. 186 | * 187 | * Card registration serial number (カード登録連番) 188 | * --CardSeq integer(1) 189 | * 190 | * Card number (カード番号) 191 | * --CardNo string(16) 192 | * Asterisk with the exception of the last four digits. 193 | * 下 4 桁を除いて伏字 194 | * 195 | * Destination code (仕向先コード) 196 | * --Forward string(7) 197 | * Destination code when performing a validity check. 198 | * 有効性チェックを行ったときの仕向先 コード 199 | */ 200 | public function saveCard($member_id, $card_no, $expire, $data = array()) { 201 | if (!is_array($data)) { 202 | $data = array(); 203 | } 204 | $data['member_id'] = $member_id; 205 | $data['card_no'] = $card_no; 206 | $data['expire'] = $expire; 207 | return $this->callApi('saveCard', $data); 208 | } 209 | 210 | /** 211 | * Update the card information. 212 | * 213 | * See @saveCard. 214 | */ 215 | public function updateCard($card_seq, $member_id, $card_no, $expire, $data = array()) { 216 | if (!is_array($data)) { 217 | $data = array(); 218 | } 219 | $data['card_seq'] = $card_seq; 220 | return $this->saveCard($member_id, $card_no, $expire, $data); 221 | } 222 | 223 | /** 224 | * Search the card information of the specified member. 225 | * 226 | * @Input parameters. 227 | * 228 | * Member ID (会員 ID) 229 | * --MemberID string(60) not null. 230 | * 231 | * Card registration serial number mode (カード登録連番モード) 232 | * --SeqMode string(1) not null. 233 | * 234 | * Allowed values: 235 | * 0: Logical mode 236 | * 1: Physical mode 237 | * 238 | * Card registration serial number (カード登録連番) 239 | * --CardSeq int(1) null. 240 | * 241 | * Registration serial number of the referenced card. 242 | * 243 | * @Output parameters. 244 | * 245 | * Card registration serial number (カード登録連番) 246 | * --CardSeq integer(1) 247 | * 248 | * Default flag (デフォルトフラグ) 249 | * --DefaultFlag string(1) 250 | * 251 | * Card name (カード会社略称) 252 | * --CardName string(10) 253 | * 254 | * Card number (カード番号) 255 | * --CardNo string(16) 256 | * 257 | * Expiration date (有効期限) 258 | * --Expire string(4) 259 | * 260 | * Holder name (名義人) 261 | * --HolderName string(50) 262 | * 263 | * Delete flag (削除フラグ) 264 | * --DeleteFlag string(1) 265 | */ 266 | public function searchCard($member_id, $seq_mode, $data = array()) { 267 | if (!is_array($data)) { 268 | $data = array(); 269 | } 270 | $data['member_id'] = $member_id; 271 | $data['seq_mode'] = $seq_mode; 272 | return $this->callApi('searchCard', $data); 273 | } 274 | 275 | /** 276 | * Delete the card information of the specified member. 277 | * 278 | * @Input parameters. 279 | * 280 | * Member ID (会員 ID) 281 | * --MemberID string(60) not null. 282 | * 283 | * Card registration serial number mode (カード登録連番モード) 284 | * --SeqMode string(1) null. 285 | * 286 | * Allowed values: 287 | * 0: Logical mode 288 | * 1: Physical mode 289 | * 290 | * Card registration serial number (カード登録連番) 291 | * --CardSeq int(1) not null. 292 | * 293 | * Registration serial number of the referenced card. 294 | * 295 | * @Output parameters. 296 | * 297 | * Card registration serial number (カード登録連番) 298 | * --CardSeq integer(1) 299 | */ 300 | public function deleteCard($member_id, $card_seq, $data = array()) { 301 | if (!is_array($data)) { 302 | $data = array(); 303 | } 304 | $data['member_id'] = $member_id; 305 | $data['card_seq'] = $card_seq; 306 | return $this->callApi('deleteCard', $data); 307 | } 308 | 309 | /** 310 | * Release au OpenID of the specified member. 311 | * 312 | * Input parameters. 313 | * 314 | * Member ID (会員 ID) 315 | * --MemberID string(60) not null. 316 | * 317 | * @Output parameters. 318 | * 319 | * Site ID (サイト ID) 320 | * --SiteID string(13) 321 | * 322 | * Member ID (会員 ID) 323 | * --MemberID string(60) 324 | */ 325 | public function deleteAuOpenID($member_id) { 326 | $data = array('member_id' => $member_id); 327 | return $this->callApi('deleteAuOpenID', $data); 328 | } 329 | 330 | } 331 | -------------------------------------------------------------------------------- /src/Payment/ShopAndSiteApi.php: -------------------------------------------------------------------------------- 1 | 'value', ...) 26 | * It contains not required and conditional required fields. 27 | * 28 | * Return result 29 | * It will be return only one or multiple records. 30 | * Multiple records joined with '|' whatever success or failed. 31 | */ 32 | class ShopAndSiteApi extends Api { 33 | 34 | /** 35 | * Object constructor. 36 | */ 37 | public function __construct($host, $shop_id, $shop_pass, $site_id, $site_pass, $params = array()) { 38 | $params['shop_id'] = $shop_id; 39 | $params['shop_pass'] = $shop_pass; 40 | $params['site_id'] = $site_id; 41 | $params['site_pass'] = $site_pass; 42 | parent::__construct($host, $params); 43 | } 44 | 45 | /** 46 | * Register the card that was used to trade in the specified order ID. 47 | * 48 | * @Input parameters 49 | * 50 | * Order ID (オーダーID) 51 | * --OrderID string(27) not null. 52 | * 53 | * Member ID (会員 ID) 54 | * --MemberID string(60) not null. 55 | * 56 | * Card registration serial number mode (カード登録連番モード) 57 | * --SeqMode string(1) null default 0. 58 | * 59 | * Allowed values: 60 | * 0: Logical mode (default) 61 | * 1: Physical mode 62 | * 63 | * Default flag (デフォルトフラグ) 64 | * --DefaultFlag string(1) null default 0. 65 | * 66 | * Allowed values: 67 | * 0: it is not the default card (default) 68 | * 1: it will be the default card 69 | * 70 | * Holder name (名義人) 71 | * --HolderName string(50) null. 72 | * 73 | * @Output parameters 74 | * 75 | * Card registration serial number (カード登録連番) 76 | * --CardSeq integer(1) 77 | * 78 | * Card number (カード番号) 79 | * --CardNo string(16) 80 | * Asterisk with the exception of the last four digits. 81 | * 下 4 桁を除いて伏字 82 | * 83 | * Destination code (仕向先コード) 84 | * --Forward string(7) 85 | * Destination code when performing a validity check. 86 | * 有効性チェックを行ったときの仕向先 コード 87 | */ 88 | public function tradedCard($order_id, $member_id, $data = array()) { 89 | if (!is_array($data)) { 90 | $data = array(); 91 | } 92 | $data['order_id'] = $order_id; 93 | $data['member_id'] = $member_id; 94 | return $this->callApi('tradedCard', $data); 95 | } 96 | 97 | /** 98 | * It will return the token that is required in subsequent settlement deal. 99 | * 100 | * @Input parameters 101 | * 102 | * SiteID and SitePass are required if MemberID exist. 103 | * 104 | * Access ID (取引 ID) 105 | * --AccessID string(32) not null. 106 | * 107 | * Access Pass (取引パスワード) 108 | * --AccessPass string(32) not null. 109 | * 110 | * Order ID (オーダーID) 111 | * --OrderID string(27) not null. 112 | * 113 | * Member ID (会員 ID) 114 | * --MemberID string(60) conditional null. 115 | * 116 | * MemberID is required if need CreateMember. 117 | * 118 | * Member Name (会員名) 119 | * --MemberName string(255) null. 120 | * 121 | * Members create flag (会員作成フラグ) 122 | * --CreateMember string(1) conditional null. 123 | * 124 | * It will specify the operation when the member does not exist. 125 | * Allowed values: 126 | * 0: Don't create. If a member does not exist, it returns an error. 127 | * 1: Create member. If a member does not exist, I will create new. 128 | * 129 | * Client Field 1 (加盟店自由項目 1) 130 | * --ClientField1 string(100) null. 131 | * 132 | * Client Field 2 (加盟店自由項目 2) 133 | * --ClientField2 string(100) null. 134 | * 135 | * Client Field 3 (加盟店自由項目 3) 136 | * --ClientField3 string(100) null. 137 | * 138 | * Commodity (摘要) 139 | * --Commodity string(48) not null. 140 | * 141 | * Set the information of the products that customers buy. 142 | * And that is displayed at the time of the settlement in the KDDI center. 143 | * Possible characters are next to "double-byte characters". 144 | * お客様が購入する商品の情報を設定。KDDI センターでの決済時に表示される。 145 | * 設定可能な文字は「全角文字」となります。全角文字についての詳細は、「別 紙:制限事項一覧」を参照下さい。 146 | * 147 | * Settlement result back URL (決済結果戻し URL) 148 | * --RetURL string(256) not null. 149 | * 150 | * Set the result receiving URL for merchants to receive a 151 | * settlement result from this service. 152 | * 153 | * Customer authentication on the KDDI center, if you cancel the payment 154 | * operations and to send the results to the specified URL when you run 155 | * the settlement process in this service via a redirect. 156 | * 157 | * 加盟店様が本サービスからの決済結果を受信する為の結果受信 URL を設定。 158 | * KDDI センター上でお客様が認証、支払操作をキャンセルした場合や、 159 | * 本サービスにて決済処理を実行した場合に指定された URL に結果をリダイレクト経由で送信。 160 | * 161 | * Payment start date in seconds (支払開始期限秒) 162 | * --PaymentTermSec integer(5) null. 163 | * 164 | * Deadline of customers from the [settlement] run until 165 | * you call the [payment procedure completion IF]. 166 | * Up to 86,400 seconds (1 day) 167 | * If the call parameter is empty, it is processed in 120 seconds 168 | * お客様が【決済実行】から【支払手続き完了 IF】を呼び出すまでの期限。 169 | * 最大 86,400 秒(1 日) 170 | * 呼出パラメータが空の場合、120 秒で処理される 171 | * 172 | * Service Name (表示サービス名) 173 | * --ServiceName string(48) not null. 174 | * 175 | * Service names of merchants. Displayed on your purchase history. 176 | * Possible characters are next to "double-byte characters". 177 | * 加盟店様のサービス名称。お客様の購入履歴などに表示される。 178 | * 設定可能な文字は「全角文字」となります。 179 | * 180 | * Service Tel (表示電話番号) 181 | * --ServiceName string(15) not null. 182 | * 183 | * Telephone number of merchants. Displayed on your purchase history. 184 | * Possible characters are "single-byte numbers" - "(hyphen)". 185 | * 加盟店様の電話番号。お客様の購入履歴などに表示される。 186 | * 設定可能な文字は「半角数字と”-“(ハイフン)」となります。 187 | * 188 | * @Output parameters 189 | * 190 | * Access ID (アクセス ID) 191 | * --AccessID string(32) 192 | * 193 | * Token (トークン) 194 | * --Token string(256) 195 | * 196 | * Start URL (支払手続き開始 IF のURL) 197 | * --StartURL string(256) 198 | * 199 | * Start Limit Date (支払開始期限日時) 200 | * --StartLimitDate string(14) 201 | * Format: yyyyMMddHHmmss 202 | */ 203 | public function execTranAu($access_id, $access_pass, $order_id, $commodity, $ret_url, $service_name, $service_tel, $data = array()) { 204 | if (!is_array($data)) { 205 | $data = array(); 206 | } 207 | $data['access_id'] = $access_id; 208 | $data['access_pass'] = $access_pass; 209 | $data['order_id'] = $order_id; 210 | $data['commodity'] = $commodity; 211 | $data['ret_url'] = $ret_url; 212 | $data['service_name'] = $service_name; 213 | $data['service_tel'] = $service_tel; 214 | return $this->callApi('execTranAu', $data); 215 | } 216 | 217 | /** 218 | * It will return the token that is required in subsequent settlement deal. 219 | * 220 | * SiteID and SitePass are required if MemberID exist. 221 | * 222 | * @Input parameters 223 | * 224 | * Access ID (取引 ID) 225 | * --AccessID string(32) not null. 226 | * 227 | * Access Pass (取引パスワード) 228 | * --AccessPass string(32) not null. 229 | * 230 | * Order ID (オーダーID) 231 | * --OrderID string(27) not null. 232 | * 233 | * Member ID (会員 ID) 234 | * --MemberID string(60) conditional null. 235 | * 236 | * MemberID is required if need CreateMember. 237 | * 238 | * Member Name (会員名) 239 | * --MemberName string(255) null. 240 | * 241 | * Members create flag (会員作成フラグ) 242 | * --CreateMember string(1) conditional null. 243 | * 244 | * It will specify the operation when the member does not exist. 245 | * Allowed values: 246 | * 0: Don't create. If a member does not exist, it returns an error. 247 | * 1: Create member. If a member does not exist, I will create new. 248 | * 249 | * Client Field 1 (加盟店自由項目 1) 250 | * --ClientField1 string(100) null. 251 | * 252 | * Client Field 2 (加盟店自由項目 2) 253 | * --ClientField2 string(100) null. 254 | * 255 | * Client Field 3 (加盟店自由項目 3) 256 | * --ClientField3 string(100) null. 257 | * 258 | * Commodity (摘要) 259 | * --Commodity string(48) not null. 260 | * 261 | * Description of the end user can recognize the continued billing, 262 | * and I will specify the timing of billing. 263 | * Possible characters are next to "double-byte characters". 264 | * エンドユーザが継続課金を認識できる説明、および課金のタイミングを明記します。 265 | * 設定可能な文字は「全角文字」となります。 266 | * 267 | * Billing timing classification (課金タイミング区分) 268 | * --AccountTimingKbn string(2) not null. 269 | * 270 | * "01": specified in the accounting timing 271 | * "02": the end 272 | * “01”: 課金タイミングで指定 273 | * “02”: 月末 274 | * 275 | * Billing timing (課金タイミング) 276 | * --AccountTiming string(2) not null. 277 | * 278 | * Set in the 1-28. (29.30,31 can not be specified) 279 | * 1~28 で設定。(29.30,31 は指定不可) 280 | * 281 | * First billing date (初回課金日) 282 | * --FirstAccountDate string(8) not null. 283 | * 284 | * It specifies the day until six months away from 285 | * the day in yyyyMMdd format. 286 | * 287 | * Maximum value example of (6 months ahead) 288 | * 6/17 → 12 / 17,8 / 31 → 2/28 (29) 289 | * 290 | * 当日から 6 ヶ月先までの間の日を yyyyMMdd フォーマットで指定。 291 | * 最大値(6 ヶ月先)の例 6/17→12/17、8/31→2/28(29) 292 | * 293 | * Settlement result back URL (決済結果戻し URL) 294 | * --RetURL string(256) not null. 295 | * 296 | * Set the result receiving URL for merchants to receive a 297 | * settlement result from this service. 298 | * 299 | * Customer authentication on the KDDI center, if you cancel the payment 300 | * operations and to send the results to the specified URL when you run 301 | * the settlement process in this service via a redirect. 302 | * 303 | * 加盟店様が本サービスからの決済結果を受信する為の結果受信 URL を設定。 304 | * KDDI センター上でお客様が認証、支払操作をキャンセルした場合や、 305 | * 本サービスにて決済処理を実行した場合に指定された URL に結果をリダイレクト経由で送信。 306 | * 307 | * Payment start date in seconds (支払開始期限秒) 308 | * --PaymentTermSec integer(5) null. 309 | * 310 | * Deadline of customers from the [settlement] run until 311 | * you call the [payment procedure completion IF]. 312 | * Up to 86,400 seconds (1 day) 313 | * If the call parameter is empty, it is processed in 120 seconds 314 | * お客様が【決済実行】から【支払手続き完了 IF】を呼び出すまでの期限。 315 | * 最大 86,400 秒(1 日) 316 | * 呼出パラメータが空の場合、120 秒で処理される 317 | * 318 | * Service Name (表示サービス名) 319 | * --ServiceName string(48) not null. 320 | * 321 | * Service names of merchants. Displayed on your purchase history. 322 | * Possible characters are next to "double-byte characters". 323 | * 加盟店様のサービス名称。お客様の購入履歴などに表示される。 324 | * 設定可能な文字は「全角文字」となります。 325 | * 326 | * Service Tel (表示電話番号) 327 | * --ServiceName string(15) not null. 328 | * 329 | * Telephone number of merchants. Displayed on your purchase history. 330 | * Possible characters are "single-byte numbers" - "(hyphen)". 331 | * 加盟店様の電話番号。お客様の購入履歴などに表示される。 332 | * 設定可能な文字は「半角数字と”-“(ハイフン)」となります。 333 | * 334 | * @Output parameters 335 | * 336 | * Access ID (アクセス ID) 337 | * --AccessID string(32) 338 | * 339 | * Token (トークン) 340 | * --Token string(256) 341 | * 342 | * Start URL (支払手続き開始 IF のURL) 343 | * --StartURL string(256) 344 | * 345 | * Start Limit Date (支払開始期限日時) 346 | * --StartLimitDate string(14) 347 | * Format: yyyyMMddHHmmss 348 | */ 349 | public function execTranAuContinuance($access_id, $access_pass, $order_id, $commodity, $account_timing_kbn, $account_timing, $first_account_date, $ret_url, $service_name, $service_tel, $data = array()) { 350 | if (!is_array($data)) { 351 | $data = array(); 352 | } 353 | $data['access_id'] = $access_id; 354 | $data['access_pass'] = $access_pass; 355 | $data['order_id'] = $order_id; 356 | $data['commodity'] = $commodity; 357 | $data['account_timing_kbn'] = $account_timing_kbn; 358 | $data['account_timing'] = $account_timing; 359 | $data['first_account_date'] = $first_account_date; 360 | $data['ret_url'] = $ret_url; 361 | $data['service_name'] = $service_name; 362 | $data['service_tel'] = $service_tel; 363 | return $this->callApi('execTranAuContinuance', $data); 364 | } 365 | 366 | /** 367 | * Execute transcation. 368 | * 369 | * Customers using the information of the card number and the 370 | * expiration date you entered, and conducted a settlement to 371 | * communicate with the card company, and returns the result. 372 | * 373 | * @Input parameters 374 | * 375 | * Access ID (取引 ID) 376 | * --AccessID string(32) 377 | * 378 | * Access pass (取引パスワード) 379 | * --AccessPass string(32) 380 | * 381 | * Order ID (オーダーID) 382 | * --OrderID string(27) not null. 383 | * 384 | * Method (支払方法) 385 | * --Method string(1) conditional null. 386 | * 387 | * Allowed values: 388 | * 1: 一括 389 | * 2: 分割 390 | * 3: ボーナス一括 391 | * 4: ボーナス分割 392 | * 5: リボ 393 | * 394 | * Pay times (支払回数) 395 | * --PayTimes integer(2) conditional null. 396 | * 397 | * Card number (カード番号) 398 | * --CardNo string(16) not null. 399 | * 400 | * Expiration date (有効期限) 401 | * --Expire string(4) not null. 402 | * 403 | * Format: YYMM 404 | * 405 | * Security code (セキュリティーコード) 406 | * --SecurityCode string(4) null. 407 | * 408 | * Client field 1 (加盟店自由項目 1) 409 | * --ClientField1 string(100) null. 410 | * 411 | * Client field 2 (加盟店自由項目 2) 412 | * --ClientField2 string(100) null. 413 | * 414 | * Client field 3 (加盟店自由項目 3) 415 | * --ClientField3 string(100) null. 416 | * 417 | * @Output parameters 418 | * 419 | * ACS (ACS 呼出判定) 420 | * --ACS string(1) 421 | * 0: ACS call unnecessary(ACS 呼出不要) 422 | * 423 | * Order ID (オーダーID) 424 | * --OrderID string(27) 425 | * 426 | * Forward (仕向先コード) 427 | * --Forward string(7) 428 | * 429 | * Method (支払方法) 430 | * --Method string(1) 431 | * 432 | * Pay times (支払回数) 433 | * --PayTimes integer(2) 434 | * 435 | * Approve (承認番号) 436 | * --Approve string(7) 437 | * 438 | * Transcation ID (トランザクション ID) 439 | * --TransactionId string(28) 440 | * 441 | * Transcation date (決済日付) 442 | * --TranDate string(14) 443 | * Format: yyyyMMddHHmmss 444 | * 445 | * Check string (MD5 ハッシュ) 446 | * --CheckString string(32) 447 | * MD5 hash of OrderID ~ TranDate + shop password 448 | * OrderID~TranDate+ショップパスワー ドの MD5 ハッシュ 449 | * 450 | * Client field 1 (加盟店自由項目 1) 451 | * --ClientField1 string(100) 452 | * 453 | * Client field 2 (加盟店自由項目 2) 454 | * --ClientField2 string(100) 455 | * 456 | * Client field 3 (加盟店自由項目 3) 457 | * --ClientField3 string(100) 458 | */ 459 | public function execTran($access_id, $access_pass, $order_id, $data = array()) { 460 | // Disable shop id and shop pass. 461 | if (!is_array($data)) { 462 | $data = array(); 463 | } 464 | $data['access_id'] = $access_id; 465 | $data['access_pass'] = $access_pass; 466 | $data['order_id'] = $order_id; 467 | if (!isset($data['method']) || $data['method'] != 2 || $data['method'] != 4) { 468 | unset($data['pay_times']); 469 | } 470 | // If member id empty, unset site id and site pass. 471 | if (!isset($data['member_id']) || 0 > strlen($data['member_id'])) { 472 | $this->disableSiteIdAndPass(); 473 | } 474 | // If it doesn't exist cardseq. 475 | if (!isset($data['card_seq'])) { 476 | // Chekc CardNo, Expire, SecurityCode exist. 477 | } 478 | else { 479 | unset($data['card_no'], $data['expire'], $data['security_code']); 480 | } 481 | 482 | $this->addHttpParams(); 483 | 484 | return $this->callApi('execTran', $data); 485 | } 486 | 487 | } 488 | -------------------------------------------------------------------------------- /src/Payment/Api.php: -------------------------------------------------------------------------------- 1 | 'EntryTran.idPass', 68 | 'execTran' => 'ExecTran.idPass', 69 | 'alterTran' => 'AlterTran.idPass', 70 | 'tdVerify' => 'SecureTran.idPass', 71 | 'changeTran' => 'ChangeTran.idPass', 72 | 'saveCard' => 'SaveCard.idPass', 73 | 'deleteCard' => 'DeleteCard.idPass', 74 | 'searchCard' => 'SearchCard.idPass', 75 | 'tradedCard' => 'TradedCard.idPass', 76 | 'saveMember' => 'SaveMember.idPass', 77 | 'deleteMember' => 'DeleteMember.idPass', 78 | 'searchMember' => 'SearchMember.idPass', 79 | 'updateMember' => 'UpdateMember.idPass', 80 | 'bookSalesProcess' => 'BookSalesProcess.idPass', 81 | 'unbookSalesProcess' => 'UnbookSalesProcess.idPass', 82 | 'searchBookingInfo' => 'SearchBookingInfo.idPass', 83 | 'searchTrade' => 'SearchTrade.idPass', 84 | 'entryTranSuica' => 'EntryTranSuica.idPass', 85 | 'execTranSuica' => 'ExecTranSuica.idPass', 86 | 'entryTranEdy' => 'EntryTranEdy.idPass', 87 | 'execTranEdy' => 'ExecTranEdy.idPass', 88 | 'entryTranCvs' => 'EntryTranCvs.idPass', 89 | 'execTranCvs' => 'ExecTranCvs.idPass', 90 | 'entryTranPayEasy' => 'EntryTranPayEasy.idPass', 91 | 'execTranPayEasy' => 'ExecTranPayEasy.idPass', 92 | 'entryTranPaypal' => 'EntryTranPaypal.idPass', 93 | 'execTranPaypal' => 'ExecTranPaypal.idPass', 94 | 'paypalStart' => 'PaypalStart.idPass', 95 | 'cancelTranPaypal' => 'CancelTranPaypal.idPass', 96 | 'entryTranWebmoney' => 'EntryTranWebmoney.idPass', 97 | 'execTranWebmoney' => 'ExecTranWebmoney.idPass', 98 | 'webmoneyStart' => 'WebmoneyStart.idPass', 99 | 'paypalSales' => 'PaypalSales.idPass', 100 | 'cancelAuthPaypal' => 'CancelAuthPaypal.idPass', 101 | 'entryTranAu' => 'EntryTranAu.idPass', 102 | 'execTranAu' => 'ExecTranAu.idPass', 103 | 'auStart' => 'AuStart.idPass', 104 | 'auCancelReturn' => 'AuCancelReturn.idPass', 105 | 'auSales' => 'AuSales.idPass', 106 | 'deleteAuOpenID' => 'DeleteAuOpenID.idPass', 107 | 'entryTranDocomo' => 'EntryTranDocomo.idPass', 108 | 'execTranDocomo' => 'ExecTranDocomo.idPass', 109 | 'docomoStart' => 'DocomoStart.idPass', 110 | 'docomoCancelReturn' => 'DocomoCancelReturn.idPass', 111 | 'docomoSales' => 'DocomoSales.idPass', 112 | 'entryTranDocomoContinuance' => 'EntryTranDocomoContinuance.idPass', 113 | 'execTranDocomoContinuance' => 'ExecTranDocomoContinuance.idPass', 114 | 'docomoContinuanceSales' => 'DocomoContinuanceSales.idPass', 115 | 'docomoContinuanceCancelReturn' => 'DocomoContinuanceCancelReturn.idPass', 116 | 'docomoContinuanceUserChange' => 'DocomoContinuanceUserChange.idPass', 117 | 'docomoContinuanceUserEnd' => 'DocomoContinuanceUserEnd.idPass', 118 | 'docomoContinuanceShopChange' => 'DocomoContinuanceShopChange.idPass', 119 | 'docomoContinuanceShopEnd' => 'DocomoContinuanceShopEnd.idPass', 120 | 'docomoContinuanceStart' => 'DocomoContinuanceStart.idPass', 121 | 'entryTranJibun' => 'EntryTranJibun.idPass', 122 | 'execTranJibun' => 'ExecTranJibun.idPass', 123 | 'jibunStart' => 'JibunStart.idPass', 124 | 'entryTranSb' => 'EntryTranSb.idPass', 125 | 'execTranSb' => 'ExecTranSb.idPass', 126 | 'sbStart' => 'SbStart.idPass', 127 | 'sbCancel' => 'SbCancel.idPass', 128 | 'sbSales' => 'SbSales.idPass', 129 | 'entryTranAuContinuance' => 'EntryTranAuContinuance.idPass', 130 | 'execTranAuContinuance' => 'ExecTranAuContinuance.idPass', 131 | 'auContinuanceStart' => 'AuContinuanceStart.idPass', 132 | 'auContinuanceCancel' => 'AuContinuanceCancel.idPass', 133 | 'auContinuanceChargeCancel' => 'AuContinuanceChargeCancel.idPass', 134 | 'entryTranJcbPreca' => 'EntryTranJcbPreca.idPass', 135 | 'execTranJcbPreca' => 'ExecTranJcbPreca.idPass', 136 | 'jcbPrecaBalanceInquiry' => 'JcbPrecaBalanceInquiry.idPass', 137 | 'jcbPrecaCancel' => 'JcbPrecaCancel.idPass', 138 | 'searchTradeMulti' => 'SearchTradeMulti.idPass', 139 | ); 140 | 141 | protected $countRequestNumber = 0; 142 | 143 | /** 144 | * Input parameters mapping. 145 | */ 146 | public static $inputParams = array( 147 | 'access_id' => array( 148 | 'key' => 'AccessID', 149 | 'length' => 32, 150 | ), 151 | 'access_pass' => array( 152 | 'key' => 'AccessPass', 153 | 'length' => 32, 154 | ), 155 | 'account_timing_kbn' => array( 156 | 'key' => 'AccountTimingKbn', 157 | 'max-length' => 2, 158 | ), 159 | 'account_timing' => array( 160 | 'key' => 'AccountTiming', 161 | 'max-length' => 2, 162 | ), 163 | 'amount' => array( 164 | 'key' => 'Amount', 165 | 'max-length' => 6, 166 | 'integer' => TRUE, 167 | ), 168 | 'approve' => array( 169 | 'key' => 'Approve', 170 | 'max-length' => 7, 171 | ), 172 | 'approval_no' => array( 173 | 'key' => 'ApprovalNo', 174 | 'max-length' => 16, 175 | ), 176 | 'cancel_amount' => array( 177 | 'key' => 'CancelAmount', 178 | 'max-length' => 6, 179 | 'integer' => TRUE, 180 | ), 181 | 'cancel_tax' => array( 182 | 'key' => 'CancelTax', 183 | 'max-length' => 6, 184 | 'integer' => TRUE, 185 | ), 186 | 'card_name' => array( 187 | 'key' => 'CardName', 188 | 'max-length' => 10, 189 | ), 190 | 'card_no' => array( 191 | 'key' => 'CardNo', 192 | 'min-length' => 10, 193 | 'max-length' => 16, 194 | ), 195 | 'card_pass' => array( 196 | 'key' => 'CardPass', 197 | 'max-length' => 20, 198 | ), 199 | 'card_seq' => array( 200 | 'key' => 'CardSeq', 201 | 'allow' => array(0, 1), 202 | ), 203 | 'carry_info' => array( 204 | 'key' => 'CarryInfo', 205 | 'max-length' => 34, 206 | ), 207 | 'client_field_1' => array( 208 | 'key' => 'ClientField1', 209 | 'max-length' => 100, 210 | ), 211 | 'client_field_2' => array( 212 | 'key' => 'ClientField2', 213 | 'max-length' => 100, 214 | ), 215 | 'client_field_3' => array( 216 | 'key' => 'ClientField3', 217 | 'max-length' => 100, 218 | ), 219 | 'client_field_flag' => array( 220 | 'key' => 'ClientFieldFlag', 221 | 'allow' => array(0, 1), 222 | ), 223 | 'commodity' => array( 224 | 'key' => 'Commodity', 225 | 'max-length' => 48, 226 | ), 227 | 'confirm_base_date' => array( 228 | 'key' => 'ConfirmBaseDate', 229 | 'length' => 2, 230 | ), 231 | 'continuance_month' => array( 232 | 'key' => 'ContinuanceMonth', 233 | 'length' => 6, 234 | ), 235 | 'convenience' => array( 236 | 'key' => 'Convenience', 237 | 'max-length' => 5, 238 | ), 239 | 'create_member' => array( 240 | 'key' => 'CreateMember', 241 | 'allow' => array(0, 1), 242 | ), 243 | 'currency' => array( 244 | 'key' => 'Currency', 245 | 'allow' => '/^[a-zA-Z]{3}$/', 246 | ), 247 | 'customer_kana' => array( 248 | 'key' => 'CustomerKana', 249 | 'max-length' => 40, 250 | ), 251 | 'customer_name' => array( 252 | 'key' => 'CustomerName', 253 | 'max-length' => 40, 254 | ), 255 | 'default_flag' => array( 256 | 'key' => 'DefaultFlag', 257 | 'allow' => array(0, 1), 258 | ), 259 | 'delete_flag' => array( 260 | 'key' => 'DeleteFlag', 261 | 'allow' => array(0, 1), 262 | ), 263 | 'device_category' => array( 264 | 'key' => 'DeviceCategory', 265 | 'allow' => array(0, 1), 266 | ), 267 | 'disp_mail_address' => array( 268 | 'key' => 'DispMailAddress', 269 | 'max-length' => 100, 270 | ), 271 | 'disp_phone_number' => array( 272 | 'key' => 'DispPhoneNumber', 273 | 'max-length' => 13, 274 | ), 275 | 'disp_shop_name' => array( 276 | 'key' => 'DispShopName', 277 | 'max-length' => 50, 278 | ), 279 | 'display_date' => array( 280 | 'key' => 'DisplayDate', 281 | 'length' => 6, 282 | ), 283 | 'docomo_disp_1' => array( 284 | 'key' => 'DocomoDisp1', 285 | 'max-length' => 40, 286 | ), 287 | 'docomo_disp_2' => array( 288 | 'key' => 'DocomoDisp2', 289 | 'max-length' => 40, 290 | ), 291 | 'eddy_add_info_1' => array( 292 | 'key' => 'EdyAddInfo1', 293 | 'max-length' => 180, 294 | ), 295 | 'eddy_add_info_2' => array( 296 | 'key' => 'EdyAddInfo2', 297 | 'max-length' => 320, 298 | ), 299 | 'expire' => array( 300 | 'key' => 'Expire', 301 | 'allow' => '/^\d{4}$/', 302 | ), 303 | 'first_account_date' => array( 304 | 'key' => 'FirstAccountDate', 305 | 'allow' => '/^\d{8}$/', 306 | ), 307 | 'first_amount' => array( 308 | 'key' => 'FirstAmount', 309 | 'max-length' => 7, 310 | 'integer' => TRUE, 311 | ), 312 | 'first_tax' => array( 313 | 'key' => 'FirstTax', 314 | 'max-length' => 7, 315 | 'integer' => TRUE, 316 | ), 317 | 'first_month_free_flag' => array( 318 | 'key' => 'FirstMonthFreeFlag', 319 | 'allow' => array(0, 1), 320 | ), 321 | 'forward' => array( 322 | 'key' => 'Forward', 323 | 'max-length' => 7, 324 | ), 325 | 'holder_name' => array( 326 | 'key' => 'HolderName', 327 | 'max-length' => 50, 328 | ), 329 | 'http_accept' => array( 330 | 'key' => 'HttpAccept', 331 | ), 332 | 'http_user_agent' => array( 333 | 'key' => 'HttpUserAgent', 334 | ), 335 | 'item_code' => array( 336 | 'key' => 'ItemCode', 337 | 'max-length' => 7, 338 | ), 339 | 'item_name' => array( 340 | 'key' => 'ItemName', 341 | 'max-length' => 40, 342 | ), 343 | 'job_cd' => array( 344 | 'key' => 'JobCd', 345 | 'allow' => array(), 346 | ), 347 | 'last_month_free_flag' => array( 348 | 'key' => 'LastMonthFreeFlag', 349 | 'allow' => array(0, 1), 350 | ), 351 | 'md' => array( 352 | 'key' => 'MD', 353 | 'max-length' => 32, 354 | ), 355 | 'mail_address' => array( 356 | 'key' => 'MailAddress', 357 | 'max-length' => 256, 358 | ), 359 | 'member_id' => array( 360 | 'key' => 'MemberID', 361 | 'max-length' => 60, 362 | ), 363 | 'member_name' => array( 364 | 'key' => 'MemberName', 365 | 'max-length' => 255, 366 | ), 367 | 'member_no' => array( 368 | 'key' => 'MemberNo', 369 | 'max-length' => 20, 370 | ), 371 | 'method' => array( 372 | 'key' => 'Method', 373 | 'allow' => array(1, 2, 3, 4, 5), 374 | ), 375 | 'order_id' => array( 376 | 'key' => 'OrderID', 377 | 'max-length' => 27, 378 | ), 379 | 'pa_res' => array( 380 | 'key' => 'PaRes', 381 | ), 382 | 'process_date' => array( 383 | 'key' => 'ProcessDate', 384 | 'length' => 14, 385 | ), 386 | 'pay_description' => array( 387 | 'key' => 'PayDescription', 388 | 'max-length' => 40, 389 | ), 390 | 'pay_times' => array( 391 | 'key' => 'PayTimes', 392 | 'max-length' => 2, 393 | 'integer' => TRUE, 394 | ), 395 | 'pay_type' => array( 396 | 'key' => 'PayType', 397 | 'allow' => array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14), 398 | ), 399 | 'payment_term_day' => array( 400 | 'key' => 'PaymentTermDay', 401 | 'max-length' => 2, 402 | 'integer' => TRUE, 403 | ), 404 | 'payment_term_sec' => array( 405 | 'key' => 'PaymentTermSec', 406 | 'max' => 86400, 407 | 'integer' => TRUE, 408 | ), 409 | 'receipts_disp_1' => array( 410 | 'key' => 'ReceiptsDisp1', 411 | 'max-length' => 60, 412 | ), 413 | 'receipts_disp_2' => array( 414 | 'key' => 'ReceiptsDisp2', 415 | 'max-length' => 60, 416 | ), 417 | 'receipts_disp_3' => array( 418 | 'key' => 'ReceiptsDisp3', 419 | 'max-length' => 60, 420 | ), 421 | 'receipts_disp_4' => array( 422 | 'key' => 'ReceiptsDisp4', 423 | 'max-length' => 60, 424 | ), 425 | 'receipts_disp_5' => array( 426 | 'key' => 'ReceiptsDisp5', 427 | 'max-length' => 60, 428 | ), 429 | 'receipts_disp_6' => array( 430 | 'key' => 'ReceiptsDisp6', 431 | 'max-length' => 60, 432 | ), 433 | 'receipts_disp_7' => array( 434 | 'key' => 'ReceiptsDisp7', 435 | 'max-length' => 60, 436 | ), 437 | 'receipts_disp_8' => array( 438 | 'key' => 'ReceiptsDisp8', 439 | 'max-length' => 60, 440 | ), 441 | 'receipts_disp_9' => array( 442 | 'key' => 'ReceiptsDisp9', 443 | 'max-length' => 60, 444 | ), 445 | 'receipts_disp_10' => array( 446 | 'key' => 'ReceiptsDisp10', 447 | 'max-length' => 60, 448 | ), 449 | 'receipts_disp_11' => array( 450 | 'key' => 'ReceiptsDisp11', 451 | 'max-length' => 42, 452 | ), 453 | 'receipts_disp_12' => array( 454 | 'key' => 'ReceiptsDisp12', 455 | 'max-length' => 12, 456 | ), 457 | 'receipts_disp_13' => array( 458 | 'key' => 'ReceiptsDisp13', 459 | 'max-length' => 11, 460 | ), 461 | 'redirect_url' => array( 462 | 'key' => 'RedirectURL', 463 | 'max-length' => 200, 464 | ), 465 | 'register_disp_1' => array( 466 | 'key' => 'RegisterDisp1', 467 | 'max-length' => 32, 468 | ), 469 | 'register_disp_2' => array( 470 | 'key' => 'RegisterDisp2', 471 | 'max-length' => 32, 472 | ), 473 | 'register_disp_3' => array( 474 | 'key' => 'RegisterDisp3', 475 | 'max-length' => 32, 476 | ), 477 | 'register_disp_4' => array( 478 | 'key' => 'RegisterDisp4', 479 | 'max-length' => 32, 480 | ), 481 | 'register_disp_5' => array( 482 | 'key' => 'RegisterDisp5', 483 | 'max-length' => 32, 484 | ), 485 | 'register_disp_6' => array( 486 | 'key' => 'RegisterDisp6', 487 | 'max-length' => 32, 488 | ), 489 | 'register_disp_7' => array( 490 | 'key' => 'RegisterDisp7', 491 | 'max-length' => 32, 492 | ), 493 | 'register_disp_8' => array( 494 | 'key' => 'RegisterDisp8', 495 | 'max-length' => 32, 496 | ), 497 | 'reserve_no' => array( 498 | 'key' => 'ReserveNo', 499 | 'max-length' => 20, 500 | ), 501 | 'ret_url' => array( 502 | 'key' => 'RetURL', 503 | 'max-length' => 256, 504 | ), 505 | 'security_code' => array( 506 | 'key' => 'SecurityCode', 507 | 'max-length' => 4, 508 | ), 509 | 'seq_mode' => array( 510 | 'key' => 'SeqMode', 511 | 'allow' => array(0, 1), 512 | ), 513 | 'service_name' => array( 514 | 'key' => 'ServiceName', 515 | 'max-length' => 48, 516 | ), 517 | 'service_tel' => array( 518 | 'key' => 'ServiceTel', 519 | 'max-length' => 15, 520 | ), 521 | 'shop_id' => array( 522 | 'key' => 'ShopID', 523 | 'length' => 13, 524 | ), 525 | 'shop_mail_address' => array( 526 | 'key' => 'ShopMailAddress', 527 | 'max-length' => 256, 528 | ), 529 | 'shop_pass' => array( 530 | 'key' => 'ShopPass', 531 | 'length' => 10, 532 | ), 533 | 'site_id' => array( 534 | 'key' => 'SiteID', 535 | 'length' => 13, 536 | ), 537 | 'site_pass' => array( 538 | 'key' => 'SitePass', 539 | 'length' => 20, 540 | ), 541 | 'status' => array( 542 | 'key' => 'Status', 543 | 'max-length' => 15, 544 | ), 545 | 'suica_add_info_1' => array( 546 | 'key' => 'SuicaAddInfo1', 547 | 'max-length' => 256, 548 | ), 549 | 'suica_add_info_2' => array( 550 | 'key' => 'SuicaAddInfo2', 551 | 'max-length' => 256, 552 | ), 553 | 'suica_add_info_3' => array( 554 | 'key' => 'SuicaAddInfo3', 555 | 'max-length' => 256, 556 | ), 557 | 'suica_add_info_4' => array( 558 | 'key' => 'SuicaAddInfo4', 559 | 'max-length' => 256, 560 | ), 561 | 'tax' => array( 562 | 'key' => 'Tax', 563 | 'max-length' => 6, 564 | 'integer' => TRUE, 565 | ), 566 | 'td_flag' => array( 567 | 'key' => 'TdFlag', 568 | 'allow' => array(0, 1), 569 | ), 570 | 'td_tenant_name' => array( 571 | 'key' => 'TdTenantName', 572 | 'max-length' => 25, 573 | ), 574 | 'tel_no' => array( 575 | 'key' => 'TelNo', 576 | 'max-length' => 13, 577 | ), 578 | 'token' => array( 579 | 'key' => 'Token', 580 | 'max-length' => 256, 581 | ), 582 | 'tran_id' => array( 583 | 'key' => 'TranID', 584 | 'max-length' => 28, 585 | ), 586 | 'user' => array( 587 | 'key' => 'User', 588 | ), 589 | 'version' => array( 590 | 'key' => 'Version', 591 | ), 592 | ); 593 | 594 | /** 595 | * Output parameters mapping. 596 | */ 597 | public static $outputParams = array( 598 | 'AccessID' => 'access_id', 599 | 'AccessPass' => 'access_pass', 600 | 'ACS' => 'acs', 601 | 'AfterBalance' => 'after_balance', 602 | 'Amount' => 'amount', 603 | 'Approve' => 'approve', 604 | 'BeforeBalance' => 'before_balance', 605 | 'BkCode' => 'bk_code', 606 | 'CancelAmount' => 'cancel_amount', 607 | 'CancelTax' => 'cancel_tax', 608 | 'CardActivateStatus' => 'card_activate_status', 609 | 'CardInvalidStatus' => 'card_invalid_status', 610 | 'CardName' => 'card_name', 611 | 'CardNo' => 'card_no', 612 | 'CardSeq' => 'card_seq', 613 | 'CardTermStatus' => 'card_term_status', 614 | 'CardTypeCode' => 'card_type_code', 615 | 'CardValidLimit' => 'card_valid_limit', 616 | 'CardWebInquiryStatus' => 'card_web_inquiry_status', 617 | 'CheckString' => 'check_string', 618 | 'ClientField1' => 'client_field_1', 619 | 'ClientField2' => 'client_field_2', 620 | 'ClientField3' => 'client_field_3', 621 | 'ConfNo' => 'conf_no', 622 | 'ContinuanceMonth' => 'continuance_month', 623 | 'Convenience' => 'convenience', 624 | 'CustID' => 'cust_id', 625 | 'DefaultFlag' => 'default_flag', 626 | 'DeleteFlag' => 'delete_flag', 627 | 'EdyOrderNo' => 'edy_order_no', 628 | 'EncryptReceiptNo' => 'encrypt_receipt_no', 629 | 'Expire' => 'expire', 630 | 'Forward' => 'forward', 631 | 'HolderName' => 'holder_name', 632 | 'ItemCode' => 'item_code', 633 | 'JobCd' => 'job_cd', 634 | 'MemberID' => 'member_id', 635 | 'MemberName' => 'member_name', 636 | 'Method' => 'method', 637 | 'OrderID' => 'order_id', 638 | 'PaymentTerm' => 'payment_term', 639 | 'PayTimes' => 'pay_times', 640 | 'PayType' => 'pay_type', 641 | 'ProcessDate' => 'process_date', 642 | 'ReceiptNo' => 'receipt_no', 643 | 'SiteID' => 'site_id', 644 | 'StartLimitDate' => 'start_limit_date', 645 | 'StartURL' => 'start_url', 646 | 'Status' => 'status', 647 | 'SuicaOrderNo' => 'suica_order_no', 648 | 'Tax' => 'tax', 649 | 'Token' => 'token', 650 | 'TranDate' => 'tran_date', 651 | 'TranID' => 'tran_id', 652 | 'TransactionId' => 'transaction_id', 653 | ); 654 | 655 | /** 656 | * Verify field by condition before call api. 657 | */ 658 | public function verifyField($value, $condition) { 659 | $key = $condition['key']; 660 | // Check length. 661 | if (isset($condition['length'])) { 662 | if (strlen($value) != $condition['length']) { 663 | return sprintf('Field [%s] value length should be [%s].', $key, $condition['length']); 664 | } 665 | } 666 | else { 667 | if (isset($condition['min-length'])) { 668 | if (strlen($value) < $condition['min-length']) { 669 | return sprintf('Field [%s] value length should be more than [%s].', $key, $condition['min-length']); 670 | } 671 | } 672 | if (isset($condition['max-length'])) { 673 | if (strlen($value) > $condition['max-length']) { 674 | return sprintf('Field [%s] value length should not be more than [%s].', $key, $condition['max-length']); 675 | } 676 | } 677 | } 678 | // Check integer. 679 | if (isset($condition['integer']) && $condition['integer'] === TRUE) { 680 | if (!is_numberic($value)) { 681 | return sprintf('Field [%s] value should be integer.', $key); 682 | } 683 | } 684 | // Check allowed values. 685 | if (isset($condition['allow'])) { 686 | if (is_array($condition['allow'])) { 687 | if (!in_array($value, $condition['allow'])) { 688 | return sprintf('Field [%s] value should be one of [%s].', $key, implode(',', $condition['allow'])); 689 | } 690 | } 691 | else { 692 | if (!preg_match($condition['allow'], $value)) { 693 | return sprintf('Field [%s] value should be match regex [%s].', $key, $condition['allow']); 694 | } 695 | } 696 | } 697 | // Check allowed values. 698 | if (isset($condition['max'])) { 699 | $value = (int) $value; 700 | $max = (int) $condition['max']; 701 | if ($value > $max) { 702 | return sprintf('Field [%s] value should be larger than [%s].', $key, $max); 703 | } 704 | } 705 | 706 | return TRUE; 707 | } 708 | /** 709 | * Sandbox: https://pt01.mul-pay.jp/payment/. 710 | */ 711 | protected $host; 712 | /** 713 | * Example: https://pt01.mul-pay.jp/payment/EntryTran.idPass. 714 | */ 715 | protected $apiUrl; 716 | /** 717 | * Tran method: entry_tran -> EntryTran.idPass. 718 | */ 719 | protected $method; 720 | /** 721 | * Post parameters for api call. 722 | */ 723 | protected $params = array(); 724 | /** 725 | * Default parameters. 726 | */ 727 | protected $defaultParams = array(); 728 | /** 729 | * Input parameters mapping. 730 | */ 731 | protected $inputParamsMapping = array(); 732 | 733 | /** 734 | * Object constructor. 735 | */ 736 | public function __construct($host, $params = array()) { 737 | $this->host = trim($host, '/'); 738 | // Set default parameters. 739 | if ($params && is_array($params)) { 740 | $this->defaultParams = $params; 741 | } 742 | // Set input parameters mapping. 743 | $this->inputParamsMapping = self::$inputParams; 744 | } 745 | 746 | /** 747 | * Get input parameters mapping. 748 | */ 749 | protected function getParamsMapping() { 750 | return $this->inputParamsMapping; 751 | } 752 | 753 | /** 754 | * Check required parameters exist. 755 | */ 756 | protected function paramsExist() { 757 | // $required = self:getRequiredParams($this->method); 758 | $required = array(); 759 | $params = array(); 760 | foreach ($required as $key) { 761 | if (!array_key_exists($key, $this->params)) { 762 | $params[$key] = $key; 763 | } 764 | } 765 | 766 | return $params; 767 | } 768 | 769 | /** 770 | * Initial post parameters, such as user, version, api info. 771 | */ 772 | protected function initParams() { 773 | $this->params = array('user' => self::GMO_USER, 'version' => self::GMO_VERSION); 774 | $this->defaultParams(); 775 | } 776 | 777 | /** 778 | * Append default parameters. 779 | */ 780 | protected function defaultParams() { 781 | if ($this->defaultParams) { 782 | $this->params = array_merge($this->params, $this->defaultParams); 783 | } 784 | } 785 | 786 | /** 787 | * Add new parameters. 788 | */ 789 | public function addParams($params) { 790 | if ($params && is_array($params)) { 791 | $this->params = array_merge($this->params, $params); 792 | } 793 | } 794 | 795 | /** 796 | * Set param value. 797 | */ 798 | public function setParam($key, $value) { 799 | $this->params[$key] = $value; 800 | } 801 | 802 | /** 803 | * Get param value. 804 | */ 805 | public function getParam($key, $default = '') { 806 | if (array_key_exists($key, $this->params)) { 807 | return $this->params[$key]; 808 | } 809 | return $default; 810 | } 811 | 812 | /** 813 | * Post request with curl and return response. 814 | */ 815 | protected function request($uri, $params) { 816 | $response = $this->callCurl($uri, $params); 817 | // Process response before return. 818 | if ($response) { 819 | $response = self::processResponse($response); 820 | return $response; 821 | } 822 | 823 | return NULL; 824 | } 825 | 826 | /** 827 | * Call curl for request api 828 | * 829 | * @param $uri 830 | * @param $params 831 | * 832 | * @return mixed 833 | */ 834 | protected function callCurl($uri, $params) { 835 | $this->countRequestNumber++; 836 | $ch = curl_init($uri); 837 | curl_setopt($ch, CURLOPT_POST, TRUE); 838 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 839 | curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 840 | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 841 | curl_setopt($ch, CURLOPT_FAILONERROR, TRUE); 842 | // Append post fields. 843 | if ($params) { 844 | curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&')); 845 | } 846 | $response = curl_exec($ch); 847 | // Throw exception if curl error. 848 | $error = curl_error($ch); 849 | if ($error && $this->countRequestNumber <= 3) { 850 | $response = $this->callCurl($uri, $params); 851 | } 852 | // Close curl connect. 853 | curl_close($ch); 854 | 855 | return $response; 856 | } 857 | 858 | /** 859 | * Response separator. 860 | */ 861 | public static function responseSeparator($value) { 862 | return explode(self::RESPONSE_SEPARATOR, $value); 863 | } 864 | 865 | /** 866 | * Process curl response before return callback. 867 | */ 868 | public static function processResponse($response) { 869 | // mb_convert_encoding($value, 'UTF-8', 'SJIS'); 870 | parse_str($response, $data); 871 | // API error or success. 872 | $success = isset($data['ErrCode']) ? FALSE : TRUE; 873 | // Check single or multiple of API response. 874 | $multiple = FALSE; 875 | $first = current($data); 876 | $result = array(); 877 | if (strpos($first, self::RESPONSE_SEPARATOR) === FALSE) { 878 | foreach ($data as $key => $value) { 879 | if (isset(self::$outputParams[$key])) { 880 | $key = self::$outputParams[$key]; 881 | } 882 | $result[$key] = $value; 883 | } 884 | } 885 | else { 886 | $multiple = TRUE; 887 | // Rearrange data with new structure. 888 | $data = array_map('self::responseSeparator', $data); 889 | foreach ($data as $key => $value) { 890 | if (isset(self::$outputParams[$key])) { 891 | $key = self::$outputParams[$key]; 892 | } 893 | foreach ($value as $k => $v) { 894 | if (!isset($result[$k])) { 895 | $result[$k] = array(); 896 | } 897 | $result[$k][$key] = $v; 898 | } 899 | } 900 | } 901 | // Return readle values after processed. 902 | return array( 903 | 'success' => $success, 904 | 'multiple' => $multiple, 905 | 'response' => $response, 906 | 'result' => $result, 907 | ); 908 | } 909 | 910 | /** 911 | * Add http parameters. 912 | */ 913 | protected function addHttpParams() { 914 | // Add user agent. 915 | if (isset($_SERVER['HTTP_USER_AGENT'])) { 916 | $this->defaultParams['http_user_agent'] = $_SERVER['HTTP_USER_AGENT']; 917 | } 918 | else { 919 | $this->defaultParams['http_user_agent'] = self::HTTP_USER_AGENT; 920 | } 921 | // Add accept. 922 | if (isset($_SERVER['HTTP_ACCEPT'])) { 923 | $this->defaultParams['http_accept'] = $_SERVER['HTTP_ACCEPT']; 924 | } 925 | else { 926 | $this->defaultParams['http_accept'] = self::HTTP_ACCEPT; 927 | } 928 | } 929 | 930 | /** 931 | * Get api url. 932 | */ 933 | public function getApiUrl() { 934 | return $this->apiUrl; 935 | } 936 | 937 | /** 938 | * Execute api call method. 939 | */ 940 | public function callApi($method, $params = array()) { 941 | $this->call($method, $params); 942 | return $this->execute(); 943 | } 944 | 945 | /** 946 | * Pre-call api method. 947 | */ 948 | public function call($method, $params = array()) { 949 | // Check api method exist. 950 | if (!isset(self::$apiMethods[$method])) { 951 | throw new \Exception(sprintf('API method %s does not exist.', $method)); 952 | } 953 | $this->method = $method; 954 | $this->apiUrl = $this->host . '/' . self::$apiMethods[$method]; 955 | // Initinial parameters. 956 | $this->initParams(); 957 | // Add new params. 958 | $this->addParams($params); 959 | } 960 | 961 | /** 962 | * Execute call api and return results. 963 | */ 964 | public function execute() { 965 | $uri = $this->getApiUrl(); 966 | // Process parameters as GMO format. 967 | $params = $this->buildParams(); 968 | return $this->request($uri, $params); 969 | } 970 | 971 | /** 972 | * Process parameters as GMO format. 973 | */ 974 | protected function buildParams() { 975 | $params = array(); 976 | $mapping = $this->getParamsMapping(); 977 | foreach ($this->params as $key => $value) { 978 | if (isset($mapping[$key])) { 979 | $gmo_key = $mapping[$key]['key']; 980 | // Only convert fields which need to be convert. 981 | if (isset($mapping[$key]['encode']) && $mapping[$key]['encode'] === TRUE) { 982 | $value = mb_convert_encoding($value, 'SJIS', 'UTF-8'); 983 | } 984 | $params[$gmo_key] = $value; 985 | } 986 | } 987 | return $params; 988 | } 989 | 990 | } 991 | -------------------------------------------------------------------------------- /src/Payment/Consts.php: -------------------------------------------------------------------------------- 1 | '特になし', 30 | 'E01010001' => 'ショップIDが指定されていません。', 31 | 'E01010008' => 'ショップIDに半角英数字以外の文字が含まれているか、13文字を超えています。', 32 | 'E01010010' => 'ショップIDが一致しません。', 33 | 'E01020001' => 'ショップパスワードが指定されていません。', 34 | 'E01020008' => 'ショップパスワードに半角英数字以外の文字が含まれているか、10 文字を超えています。', 35 | 'E01030002' => '指定されたIDとパスワードのショップが存在しません。', 36 | 'E01040001' => 'オーダーIDが指定されていません。', 37 | 'E01040003' => 'オーダーIDが最大文字数を超えています。', 38 | 'E01040010' => '既にオーダーIDが存在しています。', 39 | 'E01040013' => 'オーダーIDに半角英数字と”-”以外の文字が含まれています。', 40 | 'E01050001' => '処理区分が指定されていません。', 41 | 'E01050002' => '指定された処理区分は定義されていません。', 42 | 'E01050004' => '指定した処理区分の処理は実行出来ません。', 43 | 'E01060001' => '利用金額が指定されていません。', 44 | 'E01060005' => '利用金額が最大桁数を超えています。', 45 | 'E01060006' => '利用金額に数字以外の文字が含まれています。', 46 | 'E01060010' => '取引の利用金額と指定した利用金額が一致していません。', 47 | 'E01070005' => '税送料が最大桁数を超えています。', 48 | 'E01070006' => '税送料に数字以外の文字が含まれています。', 49 | 'E01080007' => '3Dセキュア使用フラグに0,1以外の値が指定されています。', 50 | 'E01080010' => '管理画面の設定と一致しません。', 51 | 'E01080101' => '3D必須店舗にも関わらず3Dセキュア使用フラグがOFFになっています。', 52 | 'E01090001' => '取引IDが指定されていません。', 53 | 'E01090008' => '取引IDの書式が正しくありません。', 54 | 'E01100001' => '取引パスワードが指定されていません。', 55 | 'E01100008' => '取引パスワードの書式が正しくありません。', 56 | 'E01160001' => 'ボーナス分割回数が指定されていません。', 57 | 'E01110002' => '指定されたIDとパスワードの取引が存在しません。', 58 | 'E01160007' => 'ボーナス分割回数に数字以外の文字が含まれています。', 59 | 'E01110010' => '指定された取引は決済が完了していません。', 60 | 'E01130012' => 'カード会社略称が最大バイト数を超えています。', 61 | 'E01160010' => 'ボーナス分割回数に“2”以外を指定しています。', 62 | 'E01170001' => 'カード番号が指定されていません。', 63 | 'E01170003' => 'カード番号が最大文字数を超えています。', 64 | 'E01170006' => 'カード番号に数字以外の文字が含まれています。', 65 | 'E01170011' => 'カード番号が10桁~16桁の範囲ではありません。', 66 | 'E01180001' => '有効期限が指定されていません。', 67 | 'E01180003' => '有効期限が4桁ではありません。', 68 | 'E01180006' => '有効期限に数字以外の文字が含まれています。', 69 | 'E01190001' => 'サイトIDが指定されていません。', 70 | 'E01190008' => 'サイトIDの書式が正しくありません。', 71 | 'E01200001' => 'サイトパスワードが指定されていません。', 72 | 'E01200008' => 'サイトパスワードの書式が正しくありません。', 73 | 'E01210002' => '指定されたIDとパスワードのサイトが存在しません。', 74 | 'E01220001' => '会員IDが指定されていません。', 75 | 'E01220005' => '会員IDが最大桁数を超えています。', 76 | 'E01220008' => '会員IDの書式が正しくありません。', 77 | 'E01230006' => 'カード登録連番に数字以外の文字が含まれています。', 78 | 'E01230009' => 'カード登録連番が最大登録可能数を超えています。', 79 | 'E01240002' => '指定されたカードが存在しません。', 80 | 'E01240012' => '指定された会員IDがファイル内で重複しています(※洗替時)', 81 | 'E01250008' => 'カードパスワードの書式が正しくありません。', 82 | 'E01250010' => 'カードパスワードが一致しません。', 83 | 'E01260001' => '支払方法が指定されていません。', 84 | 'E01260002' => '指定された支払方法が存在しません。', 85 | 'E01260010' => '指定されたカード番号または支払方法が正しくありません。', 86 | 'E01270001' => '支払回数が指定されていません。', 87 | 'E01270005' => '支払回数が最大桁数を超えています。', 88 | 'E01270006' => '支払回数の数字以外の文字が含まれています。', 89 | 'E01270010' => '指定された支払回数はご利用できません。', 90 | 'E01290001' => 'HTTP_ACCEPTが指定されていません。', 91 | 'E01300001' => 'HTTP_USER_AGENTが指定されていません。', 92 | 'E01310002' => '使用端末が指定されていません。', 93 | 'E01310007' => '使用端末に”0”,”1”以外の値が指定されています。', 94 | 'E01320012' => '加盟店自由項目1の値が最大バイト数を超えています。', 95 | 'E01330012' => '加盟店自由項目2の値が最大バイト数を超えています。', 96 | 'E01340012' => '加盟店自由項目3の値が最大バイト数を超えています。', 97 | 'E01350001' => 'MDが指定されていません。', 98 | 'E01350008' => 'MDの書式が正しくありません。', 99 | 'E01360001' => 'PaResが指定されていません。', 100 | 'E01370008' => '3Dセキュア表示店舗名の書式が正しくありません。', 101 | 'E01370012' => '3Dセキュア表示店舗名の値が最大バイト数を超えています。', 102 | 'E01390002' => '指定されたサイトIDと会員IDの会員が存在しません。', 103 | 'E01390010' => '指定されたサイトIDと会員IDの会員が既に存在しています。', 104 | 'E01400007' => '加盟店自由項目返却フラグに”0”,”1”以外の値が指定されています。', 105 | 'E01410010' => '該当取引は操作禁止状態です。', 106 | 'E01420010' => '仮売上有効期間を超えています。', 107 | 'E01430012' => '会員名の値が最大バイト数を超えています。', 108 | 'E01440008' => '洗替・継続課金フラグの書式が正しくありません。', 109 | 'E01450008' => '商品コードの書式が正しくありません。', 110 | 'E01460008' => 'セキュリティコードの書式が正しくありません。', 111 | 'E01470008' => 'カード登録連番モードの書式が正しくありません。', 112 | 'E01480008' => '名義人の書式が正しくありません。', 113 | 'E01490005' => '利用金額・税送料の合計値が最大桁数を超えています。', 114 | 'E01500001' => 'ショップ情報文字列が設定されていません。', 115 | 'E01500005' => 'ショップ情報文字列の文字数が間違っています。', 116 | 'E01500012' => 'ショップ情報文字列が他の項目と矛盾しています。', 117 | 'E01510001' => '購買情報文字列が設定されていません。', 118 | 'E01510005' => '購買情報文字列の文字数が間違っています。', 119 | 'E01510010' => '利用日の書式が正しくありません。', 120 | 'E01510011' => '利用日の値が指定可能範囲外です。', 121 | 'E01510012' => '購買情報文字列が他の項目と矛盾しています。', 122 | 'E01520002' => 'ユーザー利用端末情報に無効な値が設定されています。', 123 | 'E01530001' => '決済結果戻り先URLが設定されていません。', 124 | 'E01530005' => '決済結果戻り先URLが最大文字数を越えています。', 125 | 'E01540005' => '決済キャンセル時URLが最大文字数を超えています。', 126 | 'E01550001' => '日時情報文字列が設定されていません。', 127 | 'E01550005' => '日時情報文字列の文字数が間違っています。', 128 | 'E01550006' => '日時情報文字列に無効な文字が含まれます。', 129 | 'E01590005' => '商品コードが最大桁数を超えています。', 130 | 'E01590006' => '商品コードに無効な文字が含まれます。', 131 | 'E01600001' => '会員情報チェック文字列が設定されていません。', 132 | 'E01600005' => '会員情報チェック文字列が最大文字数を超えています。', 133 | 'E01600012' => '会員情報チェック文字列が他の項目と矛盾しています。', 134 | 'E01610005' => 'リトライ回数が0~99の範囲外です。', 135 | 'E01610006' => 'リトライ回数に数字以外が設定されています。', 136 | 'E01620005' => 'セッションタイムアウト値が0~9999の範囲外です。', 137 | 'E01620006' => 'セッションタイムアウト値に数字以外が設定されています。', 138 | 'E01630010' => '取引後カード登録時、取引の会員IDとパラメータの会員IDが一致しません。', 139 | 'E01640010' => '取引後カード登録時、取引のサイトIDとパラメータのサイトIDが一致しません。', 140 | 'E01650012' => '指定されたショップは、指定されたサイトに属していません。', 141 | 'E01660013' => '言語パラメータにサポートされない値が設定されています。', 142 | 'E01670013' => '出力エンコーディングにサポートされない値が設定されています。', 143 | 'E01700001' => '項目数が誤っています。', 144 | 'E01710001' => '取引区分(継続課金)が設定されていません。', 145 | 'E01710002' => '指定された取引区分が存在しません。', 146 | 'E01730001' => 'ボーナス金額が指定されていません。', 147 | 'E01730005' => 'ボーナス金額が最大桁数を超えています。', 148 | 'E01730006' => '商品コードが”0000990”ではありません。', 149 | 'E01730007' => 'ボーナス金額に数字以外の文字が含まれています。', 150 | 'E01740001' => '端末処理通番が指定されていません。', 151 | 'E01740005' => '端末処理通番が最大桁数を超えています。', 152 | 'E01740007' => '端末処理通番に数字以外の文字が含まれています。', 153 | 'E01750001' => '利用日が指定されていません。', 154 | 'E01750008' => '利用日の書式が正しくありません。', 155 | 'E01800001' => '暗証番号が未入力です。', 156 | 'E01800008' => '暗証番号の書式が正しくありません。', 157 | 'E01800010' => '暗証番号は利用できません。', 158 | 'E11010001' => 'この取引は既に決済が終了しています。', 159 | 'E11010002' => '取引エラー/決済を中止して、取引が出来ない事を通知して下さい。', 160 | 'E11010003' => 'この取引は指定処理区分処理を行う事が出来ません。', 161 | 'E11010010' => '180日超えの取引のため、処理を行う事が出来ません。', 162 | 'E11010011' => '180日超えの取引のため、処理を行う事が出来ません。', 163 | 'E11010012' => '180日超えの取引のため、処理を行う事が出来ません。', 164 | 'E11010013' => '180日超えの取引のため、処理を行う事が出来ません。', 165 | 'E11010014' => '180日超えの取引のため、処理を行う事が出来ません。', 166 | 'E11010099' => 'このカードはご利用になれません。', 167 | 'E11010999' => '特になし', 168 | 'E11310001' => 'この取引はリンク決済を実行できません。', 169 | 'E11310002' => 'この取引はリンク決済を実行できません。', 170 | 'E11310003' => 'この取引はリンク決済を実行できません。', 171 | 'E11310004' => 'この取引はリンク決済を実行できません。', 172 | 'E11310005' => '既にカードを登録している会員は、取引後カード登録を実行できません。', 173 | 'E21010001' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直して下さい。', 174 | 'E21010007' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直して下さい。', 175 | 'E21010999' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直して下さい。', 176 | 'E21020001' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直して下さい。', 177 | 'E21020002' => '3Dセキュア認証がキャンセルされました。もう一度、購入画面からやり直して下さい。', 178 | 'E21020007' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直して下さい。', 179 | 'E21020999' => '3Dセキュア認証に失敗しました。もう一度、購入画面からやり直して下さい。', 180 | 'E21010201' => 'このカードでは取引をする事が出来ません。3Dセキュア認証に対応したカードをお使い下さい。', 181 | 'E21010202' => 'このカードでは取引をする事が出来ません。3Dセキュア認証に対応したカードをお使い下さい。', 182 | 'E31500014' => '-', 183 | 'E41170002' => '入力されたカード会社に対応していません。別のカード番号を入力して下さい。', 184 | 'E41170099' => 'カード番号に誤りがあります。再度確認して入力して下さい。', 185 | 'E61010001' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 186 | 'E61010002' => 'ご利用出来ないカードをご利用になったもしくはカード番号が誤っております。', 187 | 'E61010003' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 188 | 'E61020001' => '指定の決済方法は利用停止になっています。', 189 | 'E61030001' => 'ご契約内容エラー/現在のご契約では、ご利用になれません。', 190 | 'E82010001' => '実行中にエラーが発生しました。処理は開始されませんでした。', 191 | 'E90010001' => '現在処理を行っているのでもうしばらくお待ち下さい。', 192 | 'E91099996' => 'システムの内部エラーです。発生時刻や呼び出しパラメータをご確認のうえ、お問い合わせください。', 193 | 'E91099997' => 'リクエストされたAPIは存在しません。URLをお確かめください。', 194 | 'E91019999' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 195 | 'E91020001' => '通信タイムアウトが発生しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 196 | 'E91029998' => '決済処理に失敗しました。該当のお取引について、店舗までお問合せください。', 197 | 'E91029999' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 198 | 'E91050001' => '決済処理に失敗しました。', 199 | 'E91060001' => 'システムの内部エラーです。発生時刻や呼び出しパラメータをご確認のうえ、お問い合わせください。', 200 | 'E91099999' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 201 | 'E92000001' => '只今、大変込み合っていますので、しばらく時間をあけて再度決済を行ってください。', 202 | 'M01001005' => 'バージョンの文字数が最大文字数を超えています。', 203 | 'M01002001' => 'ショップIDが指定されていません。', 204 | 'M01002002' => '指定されたIDとパスワードのショップが存在しません。', 205 | 'M01002008' => 'ショップIDの書式が正しくありません。', 206 | 'M01003001' => 'ショップパスワードが指定されていません。', 207 | 'M01003008' => 'ショップパスワードの書式が正しくありません。', 208 | 'M01004001' => 'オーダーIDが指定されていません。', 209 | 'M01004002' => '指定されたオーダーIDの取引は登録されていません。', 210 | 'M01004010' => '既にオーダーIDが存在しています。', 211 | 'M01004012' => 'オーダーIDが最大文字数を超えています。', 212 | 'M01004013' => 'オーダーIDに不正な文字が含まれています。', 213 | 'M01004014' => '指定されたオーダーIDの取引は既に決済を依頼してます。', 214 | 'M01005001' => '利用金額が指定されていません。', 215 | 'M01005005' => '利用金額が最大桁数を超えています。', 216 | 'M01005006' => '利用金額に数字以外の文字が含まれています。', 217 | 'M01005011' => '利用金額が有効な範囲を超えています。', 218 | 'M01006005' => '税送料が最大桁数を超えています。', 219 | 'M01006006' => '税送料に数字以外の文字が含まれています。', 220 | 'M01007001' => '取引IDが指定されていません。', 221 | 'M01007008' => '取引IDの書式が正しくありません。', 222 | 'M01008001' => '取引Iパスワードが指定されていません。', 223 | 'M01008008' => '取引パスワードの書式が正しくありません。', 224 | 'M01009001' => '支払先コンビニコードが指定されていません。', 225 | 'M01009002' => '指定された支払先コンビニコードが正しくありません。', 226 | 'M01009005' => '支払先コンビニコードが最大文字数を超えています。', 227 | 'M01010001' => '氏名が指定されていません。', 228 | 'M01010012' => '氏名が最大バイト数を超えています。', 229 | 'M01010013' => '氏名に不正な文字が含まれています。', 230 | 'M01011001' => 'フリガナが指定されていません。', 231 | 'M01011012' => 'フリガナが最大バイト数を超えています。', 232 | 'M01011013' => 'フリガナに不正な文字が含まれています。', 233 | 'M01012001' => '電話番号が指定されていません。', 234 | 'M01012005' => '電話番号が最大文字数を超えています。', 235 | 'M01012008' => '電話番号の書式が正しくありません。', 236 | 'M01013005' => '支払期限日数が最大文字数を超えています。', 237 | 'M01013006' => '支払期限日数に数字以外の文字が指定されています。', 238 | 'M01013011' => '支払期限日数が有効な範囲ではありません。', 239 | 'M01014001' => '結果通知先メールアドレスが指定されていません。', 240 | 'M01014005' => '結果通知先メールアドレスが最大文字数を超えています。', 241 | 'M01014008' => '結果通知先メールアドレスの書式が正しくありません。', 242 | 'M01015005' => '加盟店メールアドレスが最大文字数を超えています。', 243 | 'M01015008' => '加盟店メールアドレスの書式が正しくありません。', 244 | 'M01016012' => '予約番号が最大バイト数を超えています。', 245 | 'M01016013' => '予約番号に不正な文字が含まれています。', 246 | 'M01017012' => '会員番号が最大バイト数を超えています。', 247 | 'M01017013' => '会員番号に不正な文字が含まれています。', 248 | 'M01018012' => 'POSレジ表示欄1が最大バイト数を超えています。', 249 | 'M01018013' => 'POSレジ表示欄1に不正な文字が含まれています。', 250 | 'M01019012' => 'POSレジ表示欄2が最大バイト数を超えています。', 251 | 'M01019013' => 'POSレジ表示欄2に不正な文字が含まれています。', 252 | 'M01020012' => 'POSレジ表示欄3が最大バイト数を超えています。', 253 | 'M01020013' => 'POSレジ表示欄3に不正な文字が含まれています。', 254 | 'M01021012' => 'POSレジ表示欄4が最大バイト数を超えています。', 255 | 'M01021013' => 'POSレジ表示欄4に不正な文字が含まれています。', 256 | 'M01022012' => 'POSレジ表示欄5が最大バイト数を超えています。', 257 | 'M01022013' => 'POSレジ表示欄5に不正な文字が含まれています。', 258 | 'M01023012' => 'POSレジ表示欄6が最大バイト数を超えています。', 259 | 'M01023013' => 'POSレジ表示欄6に不正な文字が含まれています。', 260 | 'M01024012' => 'POSレジ表示欄7が最大バイト数を超えています。', 261 | 'M01024013' => 'POSレジ表示欄7に不正な文字が含まれています。', 262 | 'M01025012' => 'POSレジ表示欄8が最大バイト数を超えています。', 263 | 'M01025013' => 'POSレジ表示欄8に不正な文字が含まれています。', 264 | 'M01026012' => 'レシート表示欄1が最大バイト数を超えています。', 265 | 'M01026013' => 'レシート表示欄1に不正な文字が含まれています。', 266 | 'M01027012' => 'レシート表示欄2が最大バイト数を超えています。', 267 | 'M01027013' => 'レシート表示欄2に不正な文字が含まれています。', 268 | 'M01028012' => 'レシート表示欄3が最大バイト数を超えています。', 269 | 'M01028013' => 'レシート表示欄3に不正な文字が含まれています。', 270 | 'M01029012' => 'レシート表示欄4が最大バイト数を超えています。', 271 | 'M01029013' => 'レシート表示欄4に不正な文字が含まれています。', 272 | 'M01030012' => 'レシート表示欄5が最大バイト数を超えています。', 273 | 'M01030013' => 'レシート表示欄5に不正な文字が含まれています。', 274 | 'M01031012' => 'レシート表示欄6が最大バイト数を超えています。', 275 | 'M01031013' => 'レシート表示欄6に不正な文字が含まれています。', 276 | 'M01032012' => 'レシート表示欄7が最大バイト数を超えています。', 277 | 'M01032013' => 'レシート表示欄7に不正な文字が含まれています。', 278 | 'M01033012' => 'レシート表示欄8が最大バイト数を超えています。', 279 | 'M01033013' => 'レシート表示欄8に不正な文字が含まれています。', 280 | 'M01034012' => 'レシート表示欄9が最大バイト数を超えています。', 281 | 'M01034013' => 'レシート表示欄9に不正な文字が含まれています。', 282 | 'M01035012' => 'レシート表示欄10が最大バイト数を超えています。', 283 | 'M01035013' => 'レシート表示欄10に不正な文字が含まれています。', 284 | 'M01036001' => 'お問合せ先が指定されていません。', 285 | 'M01036012' => 'お問合せ先が最大バイト数を超えています。', 286 | 'M01036013' => 'お問合せ先に不正な文字が含まれています。', 287 | 'M01037001' => 'お問合せ先電話番号が指定されていません。', 288 | 'M01037005' => 'お問合せ先電話番号が最大文字数を超えています。', 289 | 'M01037008' => 'お問合せ先電話番号に数字、-以外の文字が指定されています。', 290 | 'M01038001' => 'お問合せ先受付時間が指定されていません。', 291 | 'M01038005' => 'お問合せ先受付時間が最大文字数を超えています。', 292 | 'M01038008' => 'お問合せ先受付時間に数字、”:、””-“以外の文字が指定されています。', 293 | 'M01039012' => '加盟店自由項目1が最大バイト数を超えています。', 294 | 'M01039013' => '加盟店自由項目1に不正な文字が含まれています。', 295 | 'M01040012' => '加盟店自由項目2が最大バイト数を超えています。', 296 | 'M01040013' => '加盟店自由項目2に不正な文字が含まれています。', 297 | 'M01041012' => '加盟店自由項目3が最大バイト数を超えています。', 298 | 'M01041013' => '加盟店自由項目3に不正な文字が含まれています。', 299 | 'M01042005' => '結果返却方法フラグが最大文字数を超えています。', 300 | 'M01042011' => '結果返却方法フラグに”0”,”1”以外の値が指定されています。', 301 | 'M01043001' => '商品・サービス名が指定されていません。', 302 | 'M01043012' => '商品・サービス名が最大バイト数を超えています。', 303 | 'M01043013' => '商品・サービス名に不正な文字が含まれています。', 304 | 'M01044012' => '決済開始メール付加情報が最大バイト数を超えています。', 305 | 'M01044013' => '決済開始メール付加情報に不正な文字が含まれています。', 306 | 'M01045012' => '決済完了メール付加情報が最大バイト数を超えています。', 307 | 'M01045013' => '決済完了メール付加情報に不正な文字が含まれています。', 308 | 'M01046012' => '決済内容確認画面付加情報が最大バイト数を超えています。', 309 | 'M01046013' => '決済内容確認画面付加情報に不正な文字が含まれています。', 310 | 'M01047012' => '決済完了画面付加情報が最大バイト数を超えています。', 311 | 'M01047013' => '決済完了画面付加情報に不正な文字が含まれています。', 312 | 'M01048005' => '支払期限秒数が最大文字数を超えています。', 313 | 'M01048006' => '支払期限秒数に数字以外の文字が指定されています。', 314 | 'M01048011' => '支払期限秒数が有効な範囲ではありません。', 315 | 'M01049012' => '決済開始メール付加情報が最大バイト数を超えています。', 316 | 'M01049013' => '決済開始メール付加情報に不正な文字が含まれています。', 317 | 'M01050012' => '決済完了メール付加情報が最大バイト数を超えています。', 318 | 'M01050013' => '決済完了メール付加情報に不正な文字が含まれています。', 319 | 'M01051001' => '決済方法が指定されていません。', 320 | 'M01051005' => '決済方法が最大文字数を超えています。', 321 | 'M01051011' => '決済方法が有効な範囲ではありません。', 322 | 'M01052011' => '支払期限日を超えています。', 323 | 'M01053002' => '指定されたコンビニはご利用できません。', 324 | 'M01054001' => '処理区分が指定されていません。', 325 | 'M01054004' => '取引の現状態に対して、処理可能な操作ではありません。', 326 | 'M01054010' => '指定された処理区分は定義されていません。', 327 | 'M01055010' => '取引の利用金額・税送料の合計値が、指定された利用金額・税送料の合計値と一致しません。', 328 | 'M01055011' => '指定された利用金額・税送料の合計値が取引の利用金額・税送料の合計値を超えています。', 329 | 'M01056001' => 'リダイレクトURLが指定されていません。', 330 | 'M01056012' => 'リダイレクトURLが最大文字数を超えています。', 331 | 'M01057010' => '取消可能な期間を超えています。', 332 | 'M01058002' => '指定された取引が存在しません。', 333 | 'M01058010' => '取引のショップIDが、指定されたショップIDと一致しません。', 334 | 'M01059001' => '戻り先URLが設定されていません。', 335 | 'M01059005' => '戻り先URLが最大文字数を超えています。', 336 | 'M01059012' => '戻り先URLが最大文字数を超えています。', 337 | 'M01060010' => '仮売上有効期間を超えています。', 338 | 'M01061001' => '金融機関コードが設定されていません。', 339 | 'M01061002' => '存在しない金融機関コードが設定されました。', 340 | 'M01061005' => '金融機関コードが最大桁数を超えています。', 341 | 'M01062001' => '支店コードが設定されていません。', 342 | 'M01062002' => '存在しない支店コードが設定されました。', 343 | 'M01062005' => '支店コードが最大桁数を超えています。', 344 | 'M01063001' => '会員登録区分が設定されていません。', 345 | 'M01063002' => '存在しない会員登録区分が設定されました。', 346 | 'M01064001' => '口座名義人(姓:漢字)が設定されていません。', 347 | 'M01064003' => '口座名義人(姓:漢字)が最大文字数を超えています。', 348 | 'M01064013' => '口座名義人(姓:漢字)に利用できない文字が含まれています。', 349 | 'M01065001' => '口座名義人(姓:読み)が設定されていません。', 350 | 'M01065003' => '口座名義人(姓:読み)が最大文字数を超えています。', 351 | 'M01065013' => '口座名義人(姓:読み)に利用できない文字が含まれています。', 352 | 'M01066001' => '口座名義人(名:漢字)が設定されていません。', 353 | 'M01066003' => '口座名義人(名:漢字)が最大文字数を超えています。', 354 | 'M01066013' => '口座名義人(名:漢字)に利用できない文字が含まれています。', 355 | 'M01067001' => '口座名義人(名:読み)が設定されていません。', 356 | 'M01067003' => '口座名義人(名:読み)が最大文字数を超えています。', 357 | 'M01067013' => '口座名義人(名:読み)に利用できない文字が含まれています。', 358 | 'M01068001' => '口座名義人(法人名漢字)が設定されていません。', 359 | 'M01068003' => '口座名義人(法人名漢字)が最大文字数を超えています。', 360 | 'M01068013' => '口座名義人(法人名漢字)に利用できない文字が含まれています。', 361 | 'M01069001' => '口座名義人(法人名読み)が設定されていません。', 362 | 'M01069003' => '口座名義人(法人名読み)が最大文字数を超えています。', 363 | 'M01069013' => '口座名義人(法人名読み)に利用できない文字が含まれています。', 364 | 'M01070001' => '口座番号が設定されていません。', 365 | 'M01070002' => '存在しない預金種目が設定されました。', 366 | 'M01071001' => '口座番号が設定されていません。', 367 | 'M01071005' => '口座番号が最大桁数を超えています。', 368 | 'M01071006' => '口座番号に数字以外の文字が含まれています。', 369 | 'M01073001' => 'トランザクションIDが設定されていません。', 370 | 'M01073002' => '存在しないトランザクションIDが指定されました。', 371 | 'M01073004' => '指定した申込処理は実行出来ません。', 372 | 'M01074090' => 'トークンが不正です。', 373 | 'M01075001' => '口座名義が設定されていません。', 374 | 'M01075005' => '口座名義が最大文字数を超えています。', 375 | 'M01075013' => '口座名義に利用できない文字が含まれています。', 376 | 'M01076001' => 'ユーザ利用端末が設定されていません。', 377 | 'M01076010' => '指定されたユーザ利用端末は定義されていません。', 378 | 'M01077005' => '口座名義漢字が最大文字数を超えています。', 379 | 'M01077013' => '口座名義漢字に利用できない文字が含まれています。', 380 | 'M01078005' => '通貨コードの桁数が間違っています。', 381 | 'M01078010' => '利用可能な通貨コードではありません。', 382 | 'M01079010' => '利用可能なロケールではありません。', 383 | 'M01080001' => '摘要が設定されていません。', 384 | 'M01080005' => '摘要が最大文字数を超えています。', 385 | 'M01080013' => '摘要に利用できない文字が含まれています。', 386 | 'M01081011' => '決済結果URL有効期限秒が有効な範囲ではありません。', 387 | 'M01081013' => '決済結果URL有効期限秒に利用できない文字が含まれています。', 388 | 'M01082001' => 'サービス名が設定されていません。', 389 | 'M01082005' => 'サービス名が最大文字数を超えています。', 390 | 'M01082013' => 'サービス名に利用できない文字が含まれています。', 391 | 'M01083001' => 'サービス電話番号が設定されていません。', 392 | 'M01084002' => '存在しないOpenIDが指定されました。', 393 | 'M01085001' => 'キャンセル金額が指定されていません。', 394 | 'M01085005' => 'キャンセル金額が最大桁数を超えています。', 395 | 'M01085006' => 'キャンセル金額に数字以外の文字が含まれています。', 396 | 'M01085010' => 'オーソリ時の金額とキャンセル金額が一致しません。', 397 | 'M01085011' => 'キャンセル金額がオーソリ時の金額を超えています。', 398 | 'M01086005' => 'キャンセル税送料が最大桁数を超えています。', 399 | 'M01086006' => 'キャンセル税送料に数字以外の文字が含まれています。', 400 | 'M01087012' => 'ドコモ表示項目1が最大桁数を超えています。', 401 | 'M01087013' => 'ドコモ表示項目1に利用できない文字が含まれています。', 402 | 'M01088012' => 'ドコモ表示項目2が最大桁数を超えています。', 403 | 'M01088013' => 'ドコモ表示項目2に利用できない文字が含まれています。', 404 | 'M01089010' => '処理要求実施最終期限を超えています。', 405 | 'M01091001' => '確定日が設定されていません。', 406 | 'M01091010' => '利用可能な確定日ではありません。', 407 | 'M01092001' => '初月利用料無料区分が設定されていません。', 408 | 'M01092010' => '利用可能な初月利用料無料区分ではありません。', 409 | 'M01093001' => '終了月利用料無料区分が設定されていません。', 410 | 'M01093004' => '該当取引は確定中のため終了月無料は設定できません。', 411 | 'M01093010' => '利用可能な終了月利用料無料区分ではありません。', 412 | 'M01094001' => '継続課金月が設定されていません。', 413 | 'M01094008' => '継続課金月の書式が正しくありません。', 414 | 'M01095010' => '当月分の課金データが生成されていないため処理できません。しばらくたってから再度実行してください。', 415 | 'M01096010' => '前回実行した処理から規定時間が経過していません。しばらくたってから再度実行してください。', 416 | 'M01097010' => 'ショップからの継続課金変更・終了処理は月末20:00~24:00の間は受付できません。', 417 | 'M01100012' => '振込内容が最大桁数を超えています。', 418 | 'M01100013' => '振込内容に利用できない文字が含まれています。', 419 | 'M01101001' => '初回課金利用金額が設定されていません。', 420 | 'M01107010' => '指定可能な初回課金日ではありません。', 421 | 'M01120001' => 'NET CASH決済方法が指定されていません。', 422 | 'M01120010' => 'NET CASH決済方法が不正です。', 423 | 'M01120012' => 'NET CASH決済方法が最大バイト数を超えています。', 424 | 'M01120013' => 'NET CASH決済方法に不正な文字が含まれています。', 425 | 'M01500001' => 'ショップ情報文字列が設定されていません。', 426 | 'M01500005' => 'ショップ情報文字列の文字数が間違っています。', 427 | 'M01500012' => 'ショップ情報文字列が他の項目と矛盾しています。', 428 | 'M01510001' => '購買情報文字列が設定されていません。', 429 | 'M01510005' => '購買情報文字列の文字数が間違っています。', 430 | 'M01510012' => '購買情報文字列が他の項目と矛盾しています。', 431 | 'M01520002' => 'ユーザー利用端末情報に無効な値が設定されています。', 432 | 'M01530001' => '決済結果戻り先URLが設定されていません。', 433 | 'M01530005' => '決済結果戻り先URLが最大文字数を越えています。', 434 | 'M01540005' => '決済キャンセル時URLが最大文字数を超えています。', 435 | 'M01550001' => '日時情報文字列が設定されていません。', 436 | 'M01550005' => '日時情報文字列の文字数が間違っています。', 437 | 'M01550006' => '日時情報文字列に無効な文字が含まれます。', 438 | 'M01590005' => '商品コードが最大桁数を超えています。', 439 | 'M01590006' => '商品コードに無効な文字が含まれます。', 440 | 'M01600001' => '会員情報チェック文字列が設定されていません。', 441 | 'M01600005' => '会員情報チェック文字列が最大文字数を超えています。', 442 | 'M01600012' => '会員情報チェック文字列が他の項目と矛盾しています。', 443 | 'M01610005' => 'リトライ回数が0~99の範囲外です。', 444 | 'M01610006' => 'リトライ回数に数字以外が設定されています。', 445 | 'M01620005' => 'セッションタイムアウト値が0~9999の範囲外です。', 446 | 'M01620006' => 'セッションタイムアウト値に数字以外が設定されています。', 447 | 'M01630010' => '取引後カード登録時、取引の会員IDとパラメータの会員IDが一致しません。', 448 | 'M01640010' => '取引後カード登録時、取引のサイトIDとパラメータのサイトIDが一致しません。', 449 | 'M01650012' => '指定されたショップは、指定されたサイトに属していません。', 450 | 'M01660013' => '言語パラメータにサポートされない値が設定されています。', 451 | 'M01670013' => '出力エンコーディングにサポートされない値が設定されています。', 452 | 'M01680001' => '決済利用フラグが設定されていません。', 453 | 'M01680008' => '決済利用フラグに”0”,”1”以外の値が指定されています。', 454 | 'M01700001' => 'メールリンクのご利用契約が無いか、利用停止中です。', 455 | 'M01701002' => '呼び出したメールリンクデータは存在しません。', 456 | 'M01702003' => '呼び出したメールリンクデータは有効期限切れです。', 457 | 'M01703001' => 'ユニーク文字列が指定されていません。', 458 | 'M01703005' => 'ユニーク文字列の長さが32バイト以外です。', 459 | 'M01704005' => 'テンプレート番号が1桁を超えています。', 460 | 'M01704006' => 'テンプレート番号に数字以外が設定されています。', 461 | 'M11010099' => 'この取引は決済が終了していません。', 462 | 'M11010999' => '特になし', 463 | 'M91099999' => '決済処理に失敗しました。', 464 | '42C010000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 465 | '42C030000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 466 | '42C120000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 467 | '42C130000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 468 | '42C140000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 469 | '42C150000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 470 | '42C500000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 471 | '42C510000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 472 | '42C530000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 473 | '42C540000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 474 | '42C550000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 475 | '42C560000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 476 | '42C570000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 477 | '42C580000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 478 | '42C600000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 479 | '42C700000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 480 | '42C710000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 481 | '42C720000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 482 | '42C730000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 483 | '42C740000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 484 | '42C750000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 485 | '42C760000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 486 | '42C770000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 487 | '42C780000' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 488 | '42G020000' => 'カード残高が不足しているために、決済を完了する事が出来ませんでした。', 489 | '42G030000' => 'カード限度額を超えているために、決決済を完了する事が出来ませんでした。', 490 | '42G040000' => 'カード残高が不足しているために、決済を完了する事が出来ませんでした。', 491 | '42G050000' => 'カード限度額を超えているために、決済を完了する事が出来ませんでした。', 492 | '42G120000' => 'このカードでは取引をする事が出来ません。', 493 | '42G220000' => 'このカードでは取引をする事が出来ません。', 494 | '42G300000' => 'このカードでは取引をする事が出来ません。', 495 | '42G420000' => '暗証番号が誤っていた為に、決済を完了する事が出来ませんでした。', 496 | '42G440000' => 'セキュリティーコードが誤っていた為に、決済を完了する事が出来ませんでした。', 497 | '42G450000' => 'セキュリティーコードが入力されていない為に、決済を完了する事が出来ませんでした。', 498 | '42G540000' => 'このカードでは取引をする事が出来ません。', 499 | '42G550000' => 'カード限度額を超えているために、決済を完了する事が出来ませんでした。', 500 | '42G560000' => 'このカードでは取引をする事が出来ません。', 501 | '42G600000' => 'このカードでは取引をする事が出来ません。', 502 | '42G610000' => 'このカードでは取引をする事が出来ません。', 503 | '42G650000' => 'カード番号に誤りがあるために、決済を完了する事が出来ませんでした。', 504 | '42G670000' => '商品コードに誤りがあるために、決済を完了する事が出来ませんでした。', 505 | '42G680000' => '金額に誤りがあるために、決済を完了する事が出来ませんでした。', 506 | '42G690000' => '税送料に誤りがあるために、決済を完了する事が出来ませんでした。', 507 | '42G700000' => 'ボーナス回数に誤りがあるために、決済を完了する事が出来ませんでした。', 508 | '42G710000' => 'ボーナス月に誤りがあるために、決済を完了する事が出来ませんでした。', 509 | '42G720000' => 'ボーナス額に誤りがあるために、決済を完了する事が出来ませんでした。', 510 | '42G730000' => '支払開始月に誤りがあるために、決済を完了する事が出来ませんでした。', 511 | '42G740000' => '分割回数に誤りがあるために、決済を完了する事が出来ませんでした。', 512 | '42G750000' => '分割金額に誤りがあるために、決済を完了する事が出来ませんでした。', 513 | '42G760000' => '初回金額に誤りがあるために、決済を完了する事が出来ませんでした。', 514 | '42G770000' => '業務区分に誤りがあるために、決済を完了する事が出来ませんでした。', 515 | '42G780000' => '支払区分に誤りがあるために、決済を完了する事が出来ませんでした。', 516 | '42G790000' => '照会区分に誤りがあるために、決済を完了する事が出来ませんでした。', 517 | '42G800000' => '取消区分に誤りがあるために、決済を完了する事が出来ませんでした。', 518 | '42G810000' => '取消取扱区分に誤りがあるために、決済を完了する事が出来ませんでした。', 519 | '42G830000' => '有効期限に誤りがあるために、決済を完了する事が出来ませんでした。', 520 | '42G920000' => 'このカードでは取引をする事が出来ません。', 521 | '42G950000' => 'このカードでは取引をする事が出来ません。', 522 | '42G960000' => 'このカードでは取引をする事が出来ません。', 523 | '42G970000' => 'このカードでは取引をする事が出来ません。', 524 | '42G980000' => 'このカードでは取引をする事が出来ません。', 525 | '42G990000' => 'このカードでは取引をする事が出来ません。', 526 | 'B01000002' => '【決済結果問合せ】楽天Edyセンタから発信する決済開始メールが不達となりました。不達の原因は、携帯端末側のメールアドレス変更、ドメイン拒否等が考えられます。', 527 | 'B01000003' => '【決済結果問合せ】楽天Edyセンタに該当の注文番号が存在しません。', 528 | 'B01000100' => '決済申込みで指定した注文番号は、既に楽天Edyセンタに登録されています。', 529 | 'B01001011' => '指定したモールIDに誤りがあります(タグ自体がない)', 530 | 'B01001012' => '指定したモールIDに誤りがあります(値なし)', 531 | 'B01001013' => '指定したモールIDに誤りがあります(サイズエラー)', 532 | 'B01001014' => '指定したモールIDに誤りがあります(属性エラー)', 533 | 'B01001021' => '指定した注文番号に誤りがあります(タグ自体がない)', 534 | 'B01001022' => '指定した注文番号に誤りがあります(値なし)', 535 | 'B01001023' => '指定した注文番号に誤りがあります(サイズエラー)', 536 | 'B01001024' => '指定した注文番号に誤りがあります(属性エラー)', 537 | 'B01001031' => '指定した購入金額の範囲が誤っています(タグ自体がない)', 538 | 'B01001032' => '指定した購入金額の範囲が誤っています(値がない)', 539 | 'B01001033' => '指定した購入金額の範囲が誤っています(サイズエラー)', 540 | 'B01001034' => '指定した購入金額の範囲が誤っています(属性エラー)', 541 | 'B01001035' => '指定した購入金額の範囲が誤っています(値エラー)', 542 | 'B01001041' => '指定したユーザメールアドレスの範囲が誤っています(タグ自体がない)', 543 | 'B01001042' => '指定したユーザメールアドレスの範囲が誤っています(値がない)', 544 | 'B01001043' => '指定したユーザメールアドレスの範囲が誤っています(サイズエラー)', 545 | 'B01001044' => 'To日付時刻指定(属性エラー)', 546 | 'B01001045' => '指定したユーザメールアドレスの範囲が誤っています(値エラー)', 547 | 'B01001055' => '指定した<検索条件>が指定範囲を超えています', 548 | 'B01001064' => '指定した予備に誤りがあります(属性エラー)', 549 | 'B01001083' => '請求書メール付加の指定に誤りがあります(サイズエラー)', 550 | 'B01001111' => '決済終了通知の指定に誤りがあります(タグ自体がない)', 551 | 'B01001112' => '決済終了通知の指定に誤りがあります(値がない)', 552 | 'B01001113' => '決済終了通知の指定に誤りがあります(サイズエラー)', 553 | 'B01001114' => '決済終了通知の指定に誤りがあります(属性エラー)', 554 | 'B01001121' => '指定した有効期限に誤りがあります(タグ自体がない)', 555 | 'B01001122' => '指定した有効期限に誤りがあります(値がない)', 556 | 'B01001123' => '指定した有効期限に誤りがあります(サイズエラー)', 557 | 'B01001124' => '指定した有効期限に誤りがあります(属性エラー)', 558 | 'B01001125' => '指定した有効期限に誤りがあります(値エラー)', 559 | 'B01002001' => '楽天Edyセンタのサービスが停止しています', 560 | 'B01002010' => '指定された加盟店IDは利用できない状態です(未登録)', 561 | 'B01002011' => '指定された加盟店IDは利用できない状態です(閉塞状態)', 562 | 'B01002012' => '指定された加盟店IDは利用できない状態です(適用期間外)', 563 | 'B01003001' => 'システムエラー1', 564 | 'B01003002' => 'システムエラー2', 565 | 'B01003007' => 'システムエラー3', 566 | 'B01003008' => 'システムエラー4', 567 | 'B01003009' => 'システムエラー5', 568 | 'B01004001' => 'クライアント証明書の情報と異なる加盟店IDが指定されました', 569 | 'B01007001' => '決済完了URLの指定に誤りがあります(タグ自体がない)', 570 | 'B01007002' => '決済完了URLの指定に誤りがあります(値がない)', 571 | 'B01007003' => '決済完了URLの指定に誤りがあります(サイズエラー)', 572 | 'B01007004' => '決済完了URLの指定に誤りがあります(属性エラー)', 573 | 'B01007005' => '決済完了URLの指定に誤りがあります(値エラー)', 574 | 'B01007011' => '指定したユーザメールアドレスに誤りがあります(属性エラー)', 575 | 'B01007021' => '指定したモールメールアドレスに誤りがあります(属性エラー)', 576 | 'B01009000' => '【決済申込み】加盟店IDの指定に誤りがあります', 577 | 'B01009001' => '【決済申込み】パスワードの指定に誤りがあります', 578 | 'B01009002' => '【決済申込み】注文番号の指定に誤りがあります', 579 | 'B01009003' => '【決済申込み】金額の指定に誤りがあります', 580 | 'B01009004' => '【決済申込み】ユーザメールアドレスの指定に誤りがあります', 581 | 'B01009005' => '【決済申込み】加盟店様メールアドレスの指定に誤りがあります', 582 | 'B01009006' => '【決済申込み】予備の指定に誤りがあります', 583 | 'B01009007' => '【決済申込み】顧客名の指定に誤りがあります', 584 | 'B01009008' => '【決済申込み】請求書メール付加情報の指定に誤りがあります', 585 | 'B01009009' => '【決済申込み】決済完了メール付加情報の指定に誤りがあります', 586 | 'B01009010' => '【決済申込み】店舗名の指定に誤りがあります', 587 | 'B01009011' => '【決済申込み】決済終了通知URLの指定に誤りがあります', 588 | 'B01009012' => '【決済申込み】有効期限の指定に誤りがあります', 589 | 'B01009013' => '【決済申込み】XML の書式に誤りがあります', 590 | 'B01009014' => '【決済申込み】HTML エラー楽天Edyセンタから受信した内容が想定外の内容です', 591 | 'B01009050' => '【決済結果問合せ】加盟店IDの指定に誤りがあります', 592 | 'B01009051' => '【決済結果問合せ】パスワードの指定に誤りがあります', 593 | 'B01009052' => '【決済結果問合せ】注文番号の指定に誤りがあります', 594 | 'B01009053' => '【決済結果問合せ】From日付時刻の指定に誤りがあります', 595 | 'B01009054' => '【決済結果問合せ】To日付時刻の指定に誤りがあります', 596 | 'B01009055' => '【決済結果問合せ】検索パターンの指定に誤りがあります', 597 | 'B01009056' => '【決済結果問合せ】XML エラー', 598 | 'B01009057' => '【決済結果問合せ】HTML エラー', 599 | 'B01009100' => 'センタから受信したHTTP レスポンスコードが異常でした (100)HTTP-Status-Continue', 600 | 'B01009101' => 'センタから受信したHTTP レスポンスコードが異常でした (101)HTTP-Status-SwitchingProtocol', 601 | 'B01009201' => 'センタから受信したHTTP レスポンスコードが異常でした (201)HTTP-Status-Created', 602 | 'B01009202' => 'センタから受信したHTTP レスポンスコードが異常でした (202)HTTP-Status-Accepted', 603 | 'B01009203' => 'センタから受信したHTTP レスポンスコードが異常でした (203)HTTP-Status-NonAuthoritative Infomation', 604 | 'B01009204' => 'センタから受信したHTTP レスポンスコードが異常でした (204)HTTP-Status-NoContent', 605 | 'B01009205' => 'センタから受信したHTTP レスポンスコードが異常でした (205)HTTP-Status-ResetContent', 606 | 'B01009206' => 'センタから受信したHTTP レスポンスコードが異常でした (206)HTTP-Status-PartialContent', 607 | 'B01009300' => '(300)HTTP-Status-MultipleChoices', 608 | 'B01009301' => '(301)HTTP-Status-MovePermanently', 609 | 'B01009302' => '(302)HTTP-Status-MovedTemporarily', 610 | 'B01007600' => 'サーバ閉塞中です', 611 | 'B01009303' => '(303)HTTP-Status-SeeOther', 612 | 'B01009304' => '(304)HTTP-Status-NotModified', 613 | 'B01009305' => '(305)HTTP-Status-UseProxy', 614 | 'B01009400' => '(400)HTTP-Status-BadRequest', 615 | 'B01009401' => '(401)HTTP-Status-Unauthorized', 616 | 'B01009402' => '(402)HTTP-Status-PaymentRequired', 617 | 'B01009403' => '(403)HTTP-Status-Forbidden', 618 | 'B01009404' => '(404)HTTP-Status-NotFound', 619 | 'B01009405' => '(405)HTTP-Status-MethodNotAllowed', 620 | 'B01009406' => '(406)HTTP-Status-NotAcceptable', 621 | 'B01009407' => '(407)HTTP-Status-ProxyAuthenticationRequired', 622 | 'B01009408' => '(408)HTTP-Status-RequestTimeout', 623 | 'B01009409' => '(409)HTTP-Status-Conflict', 624 | 'B01009410' => '(410)HTTP-Status-Gone', 625 | 'B01009411' => '(411)HTTP-Status-LengthRequired', 626 | 'B01009412' => '(412)HTTP-Status-PreconditionFailed', 627 | 'B01009413' => '(413)HTTP-Status-RequestEntityTooLarge', 628 | 'B01009414' => '(414)HTTP-Status-RequestURITooLong', 629 | 'B01009415' => '(415)HTTP-Status-UnsupportedMediaType', 630 | 'B01009500' => '(500)HTTP-Status-InternalServerError', 631 | 'B01009501' => '(501)HTTP-Status-NotInplemented', 632 | 'B01009502' => '(502)HTTP-Status-BadGateway', 633 | 'B01009503' => '(503)HTTP-Status-ServiceUnavailable', 634 | 'B01009504' => '(504)HTTP-Status-GatewayTimeout', 635 | 'B01009505' => '(505)HTTP-Status-HTTPVersionNotSupported', 636 | 'B01009600' => 'センタとの通信開始に失敗しました', 637 | 'B01009601' => 'センタとの通信開始(名前解決)に失敗しました', 638 | 'B01009602' => 'センタとの通信開始(IP Address解決)に失敗しました', 639 | 'B01009603' => 'センタとの通信開始(connect)に失敗しました', 640 | 'B01009604' => 'センタとの通信中にエラーが発生しました', 641 | 'B01009605' => 'センタとの通信中(受信時)にエラーが発生しました', 642 | 'B01009606' => 'センタとの通信中(送信時)にエラーが発生しました', 643 | 'B01009607' => 'センタからの受信内容(HTTP Header部)が異常でした', 644 | 'B01009610' => 'Proxyサーバとの通信開始に失敗しました', 645 | 'B01009611' => 'Proxyサーバとの通信開始(名前解決)に失敗しました', 646 | 'B01009612' => 'Proxyサーバとの通信開始(IP Address解決)に失敗しました', 647 | 'B01009613' => 'Proxyサーバとの通信開始(connect) に失敗しました', 648 | 'B01009614' => 'Proxyサーバとの通信中にエラーが発生しました', 649 | 'B01009615' => 'Proxyサーバとの通信中(受信時)にエラーが発生しました', 650 | 'B01009616' => 'Proxyサーバとの通信中(送信時)にエラーが発生しました', 651 | 'B01009617' => 'Proxyサーバからの受信内容が異常でした', 652 | 'B01009620' => 'SSL通信の初期化中にエラーが発生しました', 653 | 'B01009621' => 'SSL通信の初期化中にエラーが発生しました', 654 | 'B01009622' => 'SSL通信の初期化中にエラーが発生しました', 655 | 'B01009623' => 'SSL通信の初期化中にエラーが発生しました', 656 | 'B01009624' => 'SSL通信の初期化中にエラーが発生しました', 657 | 'B01009625' => 'SSL通信の初期化中にエラーが発生しました', 658 | 'B01009626' => 'SSL通信のハンドシェイク時にエラーが発生しました', 659 | 'B01009627' => 'SSL通信のハンドシェイク時にエラーが発生しました', 660 | 'B01009628' => 'SSL通信のハンドシェイク時にエラーが発生しました', 661 | 'B01009629' => 'SSL通信の受信時にエラーが発生しました', 662 | 'B01009630' => 'SSL通信の送信時にエラーが発生しました', 663 | 'B01009700' => '定義ファイル読込み時にエラーが発生しました(socket定義ファイル)', 664 | 'B01009701' => '定義ファイル読込み時にエラーが発生しました(通信定義ファイル)', 665 | 'B01009702' => '定義ファイル読込み時にエラーが発生しました(ログ定義ファイル)', 666 | 'B01009900' => '楽天Edy決済プログラムの内部エラーが発生しました', 667 | 'B01009901' => 'URLの解釈中にエラーが発生しました', 668 | 'B01009902' => '文字コードの変換中にエラーが発生しました', 669 | 'B01009903' => 'URLのプロトコルエラー', 670 | 'B01009904' => 'SIGTERMを受信しました', 671 | 'B01009999' => 'XML文字列の解釈に失敗しました', 672 | 'S01000002' => 'モバイルSuicaアプリのネット決済一覧から決済を行ってください。', 673 | 'S01001001' => '決済依頼処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 674 | 'S01001002' => '決済依頼処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 675 | 'S01001006' => 'モバイルSuica決済は利用できません。', 676 | 'S01001007' => 'モバイルSuicaの登録が終わってから、再度購入画面からやり直してください。', 677 | 'S01001008' => 'モバイルSuica決済の決済依頼件数がオーバーしています。モバイルSuicaアプリのネット決済一覧確認してから、再度購入画面からやり直してください。', 678 | 'S01001010' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 679 | 'S01001012' => '登録データなし', 680 | 'S01001015' => 'モバイルSuicaの登録状況を確認した後、再度購入画面からやり直してください。', 681 | 'S01001016' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 682 | 'S01001017' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 683 | 'S01009901' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 684 | 'S01009902' => '決済処理に失敗しました。申し訳ございませんが、しばらく時間をあけて購入画面からやり直してください。', 685 | 'W0100W001' => 'データ種別不正', 686 | 'W0100W002' => 'UserId/Passwordが存在しない', 687 | 'W0100W003' => '収納処理企業コード/支払いコードが一致しない', 688 | 'W0100W004' => '2DBC処理事業者番号/契約案件番号が一致しない', 689 | 'W0100W005' => '入金処理企業コード/支払いコードが一致しない', 690 | 'W0100W090' => 'キーデータ取得時エラー', 691 | 'W0100W600' => '収納処理 項目チェック時エラー (不正な値)', 692 | 'W0100W601' => '収納処理 項目チェック時エラー (支払いコード未設定)', 693 | 'W0100W602' => '収納処理 項目チェック時エラー (支払いコード桁不足)', 694 | 'W0100W603' => '収納処理 項目チェック時エラー (受付番号未設定)', 695 | 'W0100W604' => '収納処理 項目チェック時エラー (受付番号桁不足)', 696 | 'W0100W605' => '収納処理 項目チェック時エラー (企業コード未設定)', 697 | 'W0100W606' => '収納処理 項目チェック時エラー (企業コード桁不足)', 698 | 'W0100W607' => '収納処理 項目チェック時エラー (電話番号未設定)', 699 | 'W0100W608' => '収納処理 項目チェック時エラー (漢字氏名未設定)', 700 | 'W0100W609' => '収納処理 項目チェック時エラー (支払期限未設定)', 701 | 'W0100W610' => '収納処理 項目チェック時エラー (支払期限 数字以外の値)', 702 | 'W0100W611' => '収納処理 項目チェック時エラー (支払期限桁不正)', 703 | 'W0100W612' => '収納処理 項目チェック時エラー (支払期限 日時の値不正)', 704 | 'W0100W613' => '収納処理 項目チェック時エラー (支払期限 過去日付不正)', 705 | 'W0100W614' => '収納処理 項目チェック時エラー (支払金額未設定)', 706 | 'W0100W615' => '収納処理 項目チェック時エラー (支払金額値不正)', 707 | 'W0100W616' => '収納処理 項目チェック時エラー (支払金額 ≦0)', 708 | 'W0100W617' => '収納処理 項目チェック時エラー (支払金額 > 999999)', 709 | 'W0100W640' => '収納情報重複エラー', 710 | 'W0100W641' => '収納情報論理削除済みエラー', 711 | 'W0100W670' => '収納DB OPEN時エラー', 712 | 'W0100W671' => '収納DB READ時エラー', 713 | 'W0100W672' => '収納DB INSERT時エラー', 714 | 'W0100W680' => 'ケータイ決済番号用シーケンスNoを取得できない', 715 | 'W0100W700' => '入金処理 項目チェックエラー(支払コード未設定)', 716 | 'W0100W701' => '入金処理 項目チェックエラー(企業コード未設定)', 717 | 'W0100W730' => '入金処理 未入金エラー', 718 | 'W0100W731' => '入金処理 未送信データなしエラー', 719 | 'W0100W740' => '入金処理 入金情報なしエラー', 720 | 'W0100W741' => '入金処理 入金情報論理削除済みエラー', 721 | 'W0100W770' => '入金処理 READ要求 入金DB OPEN時エラー', 722 | 'W0100W771' => '入金処理 READ要求 入金DB READ時エラー', 723 | 'W0100W772' => '入金処理 READ要求 入金DB UPDATE時エラー', 724 | 'W0100W773' => '入金処理 SEARCH要求 入金DB OPEN時エラー', 725 | 'W0100W774' => '入金処理 SEARCH要求 入金DB READ時エラー', 726 | 'W0100W775' => '入金処理 SEARCH要求 入金DB UPDATE時エラー', 727 | 'D01000001' => 'システムエラー(通信)/取引失敗を表示し、お問い合わせ下さい。', 728 | 'D01000002' => 'システムエラー(通信)/取引失敗を表示し、お問い合わせ下さい。', 729 | 'D01000099' => 'システムエラー(通信)/取引失敗を表示し、お問い合わせ下さい。', 730 | 'F01001001' => 'ショップIDが指定されていません。', 731 | 'F01001008' => 'ショップIDに半角英数字以外の文字が含まれているか、13 文字を超えています。', 732 | 'F01002001' => 'ショップパスワードが指定されていません。', 733 | 'F01002008' => 'ショップパスワードに半角英数字以外の文字が含まれているか、10文字を超えています。', 734 | 'F01003002' => '指定されたIDのショップが存在しません。', 735 | 'F01004001' => '照会IDが指定されていません。', 736 | 'F01004002' => '指定されたIDの照会が存在しません。', 737 | 'F01004005' => '照会IDが最大桁数を超えています。', 738 | 'F01010001' => '住所(都道府県)が指定されていません。', 739 | 'F01010012' => '住所(都道府県)が最大バイト数を超えています。', 740 | 'F01011001' => '住所(市区町村)が指定されていません。', 741 | 'F01011012' => '住所(市区町村)が最大バイト数を超えています。', 742 | 'F01012001' => '住所(地名)が指定されていません。', 743 | 'F01012012' => '住所(地名)が最大バイト数を超えています。', 744 | 'F01013001' => '住所(番地・丁目)が指定されていません。', 745 | 'F01013012' => '住所(番地・丁目)が最大バイト数を超えています。', 746 | 'F01014012' => '住所(号室)が最大バイト数を超えています。', 747 | 'F01015005' => '電話番号が最大文字数を超えています。', 748 | 'F01015008' => '電話番号に数字、-以外の文字が指定されています。', 749 | 'F01020008' => 'レコード区分にHD以外の値が指定されています。', 750 | 'F01021008' => 'レコード区分にDT以外の値が指定されています。', 751 | 'F01022008' => 'レコード区分にFT以外の値が指定されています。', 752 | 'F01023008' => '項目数が誤っています。', 753 | 'F01024008' => '項目数が誤っています。', 754 | 'F01025008' => '項目数が誤っています。', 755 | 'F01026008' => '項目数が誤っています。', 756 | 'F01030001' => 'データレコード件数が指定されていません。', 757 | 'F01030006' => 'データレコード件数に数字以外の文字が含まれています。', 758 | 'F01030011' => 'データレコード件数が1~20 000の範囲ではありません。', 759 | 'F01040010' => 'ヘッダレコードのレコード件数とデータレコードの件数が一致しません。', 760 | 'F01050001' => '同一ショップ内で照会I/Fの照会実行中に照会データ登録が実行されました。', 761 | 'F01060001' => '照会機能が利用停止になっています。', 762 | 'F01070001' => '照会データが指定されていません。', 763 | 'F01090999' => '照会実行中にエラーが発生しました。', 764 | 'P01010001' => '内部エラーが発生しました。', 765 | 'P01010002' => 'APIの認証に失敗しました。', 766 | 'P01010003' => '通信パラメータが不正です。', 767 | 'P01010004' => '通信パラメータが不正です。', 768 | 'P01010005' => '指定オプションが不正です。', 769 | 'P01010006' => '指定バージョンが不正です。', 770 | 'P01010007' => 'API呼出し権限がありません。', 771 | 'P01010008' => 'セキュリティーヘッダーが不正です。', 772 | 'P01010009' => '預金口座状態が不正です。', 773 | 'P01010010' => '通信パラメータが不正です。', 774 | 'P01010011' => '指定取引は無効です。', 775 | 'P01010101' => 'APIが一時的に使用不可になっています。', 776 | 'P01010102' => '指定オプションが一時的に使用不可になっています。', 777 | 'P01010103' => '指定オプションが一時的に使用不可になっています。', 778 | 'P01010202' => '取引数が月間の最大数を超えています。', 779 | 'P01010400' => '注文合計が不正です。', 780 | 'P01010401' => '注文合計が不正です。', 781 | 'P01010402' => '加盟店の設定が認証オプションを使用できない契約になっています。', 782 | 'P01010404' => '戻りURLが不正です。', 783 | 'P01010405' => 'キャンセル時のURLが不正です。', 784 | 'P01010406' => '顧客IDが無効です。', 785 | 'P01010407' => '顧客のメールアドレスが無効です。', 786 | 'P01010408' => 'トークンが不正です。', 787 | 'P01010409' => 'トークンが不正です。', 788 | 'P01010410' => 'トークンが無効です。', 789 | 'P01010411' => 'トークンの有効期限が切れました。', 790 | 'P01010412' => '請求番号が重複しています。', 791 | 'P01010413' => '商品の合計金額が不正です。', 792 | 'P01010414' => '取引の金額上限を超えています。', 793 | 'P01010415' => '指定取引は処理済みです。', 794 | 'P01010416' => '再処理の最大試行回数を超えています。', 795 | 'P01010417' => '支払方法が無効です。', 796 | 'P01010418' => '通貨コードが不正です。', 797 | 'P01010419' => '顧客IDが不正です。', 798 | 'P01010420' => '支払オプションが不正です。', 799 | 'P01010421' => 'トークンが無効です。', 800 | 'P01010422' => '顧客の資金源が不正です。', 801 | 'P01010424' => '配送先住所が無効です。', 802 | 'P01010425' => '加盟店の設定がAPIを使用できない契約になっています。', 803 | 'P01010426' => '商品の合計金額が無効です。', 804 | 'P01010427' => '送料の合計が無効です。', 805 | 'P01010428' => '手数料の合計が無効です。', 806 | 'P01010429' => '税金の合計が無効です。', 807 | 'P01010430' => '商品金額が不正です。', 808 | 'P01010431' => '商品金額が無効です。', 809 | 'P01010432' => '請求番号の桁数オーバーです。', 810 | 'P01010433' => '商品説明の一部が省略されました。', 811 | 'P01010434' => '自由項目の一部が省略されました。', 812 | 'P01010435' => '承認が未処理です。', 813 | 'P01010436' => 'ページスタイル名の桁数オーバーです。', 814 | 'P01010437' => 'ヘッダーイメージURLの桁数オーバーです。', 815 | 'P01010438' => 'ヘッダーイメージURLの桁数オーバーです。', 816 | 'P01010439' => 'ヘッダーイメージURLの桁数オーバーです。', 817 | 'P01010440' => 'ヘッダーイメージURLの桁数オーバーです。', 818 | 'P01010441' => '通知先URLの桁数オーバーです。', 819 | 'P01010442' => '識別コードの桁数オーバーです。', 820 | 'P01010443' => '支払オプションが不正です。', 821 | 'P01010444' => '通貨コードが不正です。', 822 | 'P01010445' => '指定取引の処理を続行できません。', 823 | 'P01010446' => '支払オプションが不正です。', 824 | 'P01010457' => 'eBayのAPIの初期化に失敗しました。', 825 | 'P01010458' => 'eBayのAPIでエラーが発生しました。', 826 | 'P01010459' => 'eBayのAPIでエラーが発生しました。', 827 | 'P01010460' => 'eBayの通信でエラーが発生しました。', 828 | 'P01010461' => '商品数が不正です。', 829 | 'P01010462' => '注文が存在しません。', 830 | 'P01010463' => 'eBayの接続情報が不正です。', 831 | 'P01010464' => '商品番号と取引IDが不整合です。', 832 | 'P01010465' => 'eBayの接続情報が無効です。', 833 | 'P01010467' => '商品番号が重複しています。', 834 | 'P01010468' => '注文IDが重複しています。', 835 | 'P01010469' => '指定オプションが一時的に使用不可になっています。', 836 | 'P01010470' => '指定オプションが無効です。', 837 | 'P01010471' => '戻りURLが不正です。', 838 | 'P01010472' => 'キャンセル時のURLが不正です。', 839 | 'P01010473' => '指定パラメータはサポート対象外です。', 840 | 'P01010474' => '指定取引の処理を続行できません。', 841 | 'P01010475' => '支払オプションが不正です。', 842 | 'P01010476' => '無効なデータです。', 843 | 'P01010477' => '無効なデータです。', 844 | 'P01010478' => '無効なデータです。', 845 | 'P01010479' => '無効なデータです。', 846 | 'P01010480' => '無効なデータです。', 847 | 'P01010481' => '支払オプションが不正です。', 848 | 'P01010482' => '支払オプションが不正です。', 849 | 'P01010537' => 'リスク管理設定により、該当取引が拒否されました。', 850 | 'P01010538' => 'リスク管理設定により、該当取引が拒否されました。', 851 | 'P01010539' => 'リスク管理設定により、支払いが拒否されました。', 852 | 'P01010600' => '承認が取消されました。', 853 | 'P01010601' => '承認期間の有効期限が切れました。', 854 | 'P01010602' => '承認は既に完了しています。', 855 | 'P01010603' => '顧客のアカウントに制限が掛けられています。', 856 | 'P01010604' => '承認処理を続行できません。', 857 | 'P01010605' => 'サポート対象外の通貨コードです。', 858 | 'P01010606' => '取引が拒否されました。', 859 | 'P01010607' => '承認と回収機能が使用できません。', 860 | 'P01010608' => '顧客の資金源が不正です。', 861 | 'P01010609' => '取引IDが無効です。', 862 | 'P01010610' => '指定された金額の上限を超えています。', 863 | 'P01010611' => '加盟店の設定が承認と回収機能を使用できない契約になっています。', 864 | 'P01010612' => '決済可能な最大数に達しました。', 865 | 'P01010613' => '通貨コードが不正です。', 866 | 'P01010614' => '取消の承認番号が不正です。', 867 | 'P01010615' => '再承認の指定方法が不正です。', 868 | 'P01010616' => '承認に許される再承認の最大数に達しました。', 869 | 'P01010617' => '保証期間中に再承認が呼出されました。', 870 | 'P01010618' => '取引が取消、又は期限切れの状態です。', 871 | 'P01010619' => '請求番号の桁数オーバーです。', 872 | 'P01010620' => '注文の状態が取消、期限切れ、又は完了状態です。', 873 | 'P01010621' => '注文の有効期限が切れました。', 874 | 'P01010622' => '注文が取消されました。', 875 | 'P01010623' => '注文に許される承認の最大数に達しました。', 876 | 'P01010624' => '請求番号が重複しています。', 877 | 'P01010625' => '取引の金額上限を超えています。', 878 | 'P01010626' => '取引がリスクモデルによって拒否されました。', 879 | 'P01010627' => 'サポート対象外のパラメータです。', 880 | 'P01010628' => '指定取引の処理を続行できません。', 881 | 'P01010629' => '再承認の指定方法が不正です。', 882 | 'P01010630' => '商品金額が無効です。', 883 | 'P01010725' => '配送先住所が不正です。', 884 | 'P01010726' => '配送先住所が不正です。', 885 | 'P01010727' => '配送先住所が不正です。', 886 | 'P01010728' => '配送先住所が不正です。', 887 | 'P01010729' => '配送先住所が不正です。', 888 | 'P01010730' => '配送先住所が不正です。', 889 | 'P01010731' => '配送先住所が不正です。', 890 | 'P01010736' => '配送先住所の照会に失敗しました。', 891 | 'P01010800' => '無効なデータです。', 892 | 'P01011001' => '桁数オーバーです。', 893 | 'P01011094' => '指定承認の取消、再承認、回収はできません。', 894 | 'P01011547' => '指定オプションが一時的に使用不可になっています。', 895 | 'P01011601' => '請求先住所が不正です。', 896 | 'P01011602' => '請求先住所が不正です。', 897 | 'P01011610' => '支払が保留されています。', 898 | 'P01011611' => '取引が中止されました。', 899 | 'P01011612' => '取引の処理を続行できません。', 900 | 'P01011801' => '無効なデータです。', 901 | 'P01011802' => '無効なデータです。', 902 | 'P01011803' => '無効なデータです。', 903 | 'P01011804' => '無効なデータです。', 904 | 'P01011805' => '無効なデータです。', 905 | 'P01011806' => '無効なデータです。', 906 | 'P01011807' => '無効なデータです。', 907 | 'P01011810' => '無効なデータです。', 908 | 'P01011811' => '無効なデータです。', 909 | 'P01011812' => '無効なデータです。', 910 | 'P01011813' => '無効なデータです。', 911 | 'P01011814' => '無効なデータです。', 912 | 'P01011815' => '無効なデータです。', 913 | 'P01011820' => '無効なデータです。', 914 | 'P01011821' => '無効なオプションです。', 915 | 'P01011822' => 'オプションの指定に誤りがあります。', 916 | 'P01011823' => 'オプションの指定に誤りがあります。', 917 | 'P01011824' => 'オプションの指定に誤りがあります。', 918 | 'P01011825' => 'オプションの指定に誤りがあります。', 919 | 'P01011826' => '送料の合計が無効です。', 920 | 'P01011827' => 'オプションの指定に誤りがあります。', 921 | 'P01011828' => 'オプションの指定に誤りがあります。', 922 | 'P01011829' => 'オプションの指定に誤りがあります。', 923 | 'P01011830' => 'オプションの指定に誤りがあります。', 924 | 'P01011831' => 'URLの桁数オーバーです。', 925 | 'P01011832' => '注文合計が不正です。', 926 | 'P01012109' => '無効なオプションです。', 927 | 'P01012124' => '無効なオプションです。', 928 | 'P01012200' => '顧客IDが不正です。', 929 | 'P01012201' => 'オプションの指定に誤りがあります。', 930 | 'P01012202' => 'オプションの指定に誤りがあります。', 931 | 'P01012203' => '保留状態の為、支払が失敗しました。', 932 | 'P01012204' => 'エラーが発生した為、取引は戻されました。', 933 | 'P01012205' => 'オプションの指定に誤りがあります。', 934 | 'P01012206' => 'オプションの指定に誤りがあります。', 935 | 'P01012207' => 'オプションの指定に誤りがあります。', 936 | 'P01012208' => '商品金額が一致しません。', 937 | 'P01020000' => '支払状況が不正です。 (None)', 938 | 'P01020001' => '支払状況が不正です。 (Canceled-Reversal)', 939 | 'P01020003' => '支払状況が不正です。 (Denied)', 940 | 'P01020004' => '支払状況が不正です。 (Expired)', 941 | 'P01020005' => '支払状況が不正です。 (Failed)', 942 | 'P01020006' => '支払状況が不正です。 (In-Progress)', 943 | 'P01020007' => '支払状況が不正です。 (Partially-Refunded)', 944 | 'P01020008' => '支払状況が不正です。 (Pending)', 945 | 'P01020009' => '支払状況が不正です。 (Refunded)', 946 | 'P01020010' => '支払状況が不正です。 (Reversed)', 947 | 'P01020011' => '支払状況が不正です。 (Processed)', 948 | 'P01020012' => '支払状況が不正です。 (Voided)', 949 | 'P01029999' => '支払状況が不正です。', 950 | 'P01081000' => '無効なパラメータです。', 951 | 'P01081001' => '無効なパラメータです。', 952 | 'P01081002' => '指定メソッドはサポートされていません。', 953 | 'P01081003' => 'メソッドが指定されていません。', 954 | 'P01081004' => 'リクエストパラメータが指定されていません。', 955 | 'P01081100' => 'パラメータが指定されていません。 (Amt)', 956 | 'P01081101' => 'パラメータが指定されていません。 (MaxAmt)', 957 | 'P01081102' => 'パラメータが指定されていません。 (ReturnURL)', 958 | 'P01081103' => 'パラメータが指定されていません。 (NotifyURL)', 959 | 'P01081104' => 'パラメータが指定されていません。 (CancelURL)', 960 | 'P01081105' => 'パラメータが指定されていません。 (ShipToStreet)', 961 | 'P01081106' => 'パラメータが指定されていません。 (ShipToStreet2)', 962 | 'P01081107' => 'パラメータが指定されていません。 (ShipToCity)', 963 | 'P01081108' => 'パラメータが指定されていません。 (ShipToState)', 964 | 'P01081109' => 'パラメータが指定されていません。 (ShipToZip)', 965 | 'P01081110' => 'パラメータが指定されていません。 (Country)', 966 | 'P01081111' => 'パラメータが指定されていません。 (ReqConfirmShipping)', 967 | 'P01081112' => 'パラメータが指定されていません。 (NoShipping)', 968 | 'P01081113' => 'パラメータが指定されていません。 (AddrOverride)', 969 | 'P01081114' => 'パラメータが指定されていません。 (LocaleCode)', 970 | 'P01081115' => 'パラメータが指定されていません。 (PaymentAction)', 971 | 'P01081116' => 'パラメータが指定されていません。 (Email)', 972 | 'P01081117' => 'パラメータが指定されていません。 (Token)', 973 | 'P01081118' => 'パラメータが指定されていません。 (PayerID)', 974 | 'P01081119' => 'パラメータが指定されていません。 (ItemAmt)', 975 | 'P01081120' => 'パラメータが指定されていません。 (ShippingAmt)', 976 | 'P01081121' => 'パラメータが指定されていません。 (HandlingAmt)', 977 | 'P01081122' => 'パラメータが指定されていません。 (TaxAmt)', 978 | 'P01081123' => 'パラメータが指定されていません。 (IPAddress)', 979 | 'P01081124' => 'パラメータが指定されていません。 (ShipToName)', 980 | 'P01081125' => 'パラメータが指定されていません。 (L_Amt)', 981 | 'P01081126' => 'パラメータが指定されていません。 (Amt)', 982 | 'P01081127' => 'パラメータが指定されていません。 (L_TaxAmt)', 983 | 'P01081128' => 'パラメータが指定されていません。 (AuthorizationID)', 984 | 'P01081129' => 'パラメータが指定されていません。 (CompleteType)', 985 | 'P01081130' => 'パラメータが指定されていません。 (CurrencyCode)', 986 | 'P01081131' => 'パラメータが指定されていません。 (TransactionID)', 987 | 'P01081132' => 'パラメータが指定されていません。 (TransactionEntity)', 988 | 'P01081133' => 'パラメータが指定されていません。 (Acct)', 989 | 'P01081134' => 'パラメータが指定されていません。 (ExpDate)', 990 | 'P01081135' => 'パラメータが指定されていません。 (FirstName)', 991 | 'P01081136' => 'パラメータが指定されていません。 (LastName)', 992 | 'P01081137' => 'パラメータが指定されていません。 (Street)', 993 | 'P01081138' => 'パラメータが指定されていません。 (Street2)', 994 | 'P01081139' => 'パラメータが指定されていません。 (City)', 995 | 'P01081140' => 'パラメータが指定されていません。 (State)', 996 | 'P01081141' => 'パラメータが指定されていません。 (Zip)', 997 | 'P01081142' => 'パラメータが指定されていません。 (CountryCode)', 998 | 'P01081143' => 'パラメータが指定されていません。 (RefundType)', 999 | 'P01081144' => 'パラメータが指定されていません。 (StartDate)', 1000 | 'P01081145' => 'パラメータが指定されていません。 (EndDate)', 1001 | 'P01081146' => 'パラメータが指定されていません。 (MPID)', 1002 | 'P01081147' => 'パラメータが指定されていません。 (CreditCardType)', 1003 | 'P01081148' => 'パラメータが指定されていません。 (User)', 1004 | 'P01081149' => 'パラメータが指定されていません。 (Pwd)', 1005 | 'P01081150' => 'パラメータが指定されていません。 (Version)', 1006 | 'P01081200' => '無効なパラメータです。 (Amt)', 1007 | 'P01081201' => '無効なパラメータです。 (MaxAmt)', 1008 | 'P01081203' => '無効なパラメータです。 (NotifyURL)', 1009 | 'P01081205' => '無効なパラメータです。 (ShipToStreet)', 1010 | 'P01081206' => '無効なパラメータです。 (ShipToStreet2)', 1011 | 'P01081207' => '無効なパラメータです。 (ShipToCity)', 1012 | 'P01081208' => '無効なパラメータです。 (ShipToState)', 1013 | 'P01081209' => '無効なパラメータです。 (ShipToZip)', 1014 | 'P01081210' => '無効なパラメータです。 (Country)', 1015 | 'P01081211' => '無効なパラメータです。 (ReqConfirmShipping)', 1016 | 'P01081212' => '無効なパラメータです。 (Noshipping)', 1017 | 'P01081213' => '無効なパラメータです。 (AddrOverride)', 1018 | 'P01081214' => '無効なパラメータです。 (LocaleCode)', 1019 | 'P01081215' => '無効なパラメータです。 (PaymentAction)', 1020 | 'P01081219' => '無効なパラメータです。 (ItemAmt)', 1021 | 'P01081220' => '無効なパラメータです。 (ShippingAmt)', 1022 | 'P01081221' => '無効なパラメータです。 (HandlingTotal Amt)', 1023 | 'P01081222' => '無効なパラメータです。 (TaxAmt)', 1024 | 'P01081223' => '無効なパラメータです。 (IPAddress)', 1025 | 'P01081224' => '無効なパラメータです。 (ShipToName)', 1026 | 'P01081225' => '無効なパラメータです。 (L_Amt)', 1027 | 'P01081226' => '無効なパラメータです。 (Amt)', 1028 | 'P01081227' => '無効なパラメータです。 (L_TaxAmt)', 1029 | 'P01081229' => '無効なパラメータです。 (CompleteType)', 1030 | 'P01081230' => '無効なパラメータです。 (CurrencyCode)', 1031 | 'P01081232' => '無効なパラメータです。 (TransactionEntity)', 1032 | 'P01081234' => '無効なパラメータです。 (ExpDate)', 1033 | 'P01081235' => '無効なパラメータです。 (FirstName)', 1034 | 'P01081236' => '無効なパラメータです。 (LastName)', 1035 | 'P01081237' => '無効なパラメータです。 (Street)', 1036 | 'P01081238' => '無効なパラメータです。 (Street2)', 1037 | 'P01081239' => '無効なパラメータです。 (City)', 1038 | 'P01081243' => '無効なパラメータです。 (RefundType)', 1039 | 'P01081244' => '無効なパラメータです。 (StartDate)', 1040 | 'P01081245' => '無効なパラメータです。 (EndDate)', 1041 | 'P01081247' => '無効なパラメータです。 (CreditCardType)', 1042 | 'P01081248' => '無効なパラメータです。 (Username)', 1043 | 'P01081249' => '無効なパラメータです。 (Password)', 1044 | 'P01081250' => '無効なパラメータです。 (Version)', 1045 | 'P01081251' => '内部エラーが発生しました。', 1046 | 'P02000001' => 'PayPalセンターとの通信に失敗しました。', 1047 | 'P02000002' => 'PayPalセンターとの通信に失敗しました。', 1048 | 'P03000003' => 'PayPalの支払操作をユーザがキャンセルしました。', 1049 | 'N01001001' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1050 | 'N01001002' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1051 | 'N01001003' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1052 | 'N01001004' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1053 | 'N01001005' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1054 | 'N01001006' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1055 | 'N01001007' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1056 | 'N01001008' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1057 | 'N01001009' => '実行中にエラーが発生しました。処理は開始されませんでした。', 1058 | 'N10000001' => '該当する取引がありません。', 1059 | 'N0C030C01' => 'しばらくしてからやり直してください。', 1060 | 'N0C030C03' => 'しばらくしてからやり直してください。', 1061 | 'N0C030C12' => 'しばらくしてからやり直してください。', 1062 | 'N0C030C13' => 'しばらくご利用になれません。', 1063 | 'N0C030C14' => 'しばらくしてからやり直してください。', 1064 | 'N0C030C15' => 'しばらくしてからやり直してください。', 1065 | 'N0C030C16' => 'しばらくしてからやり直してください。', 1066 | 'N0C030C33' => 'しばらくしてからやり直してください。', 1067 | 'N0C030C34' => 'しばらくしてからやり直してください。', 1068 | 'N0C030C49' => 'しばらくしてからやり直してください。', 1069 | 'N0C030C50' => 'しばらくしてからやり直してください。', 1070 | 'N0C030C51' => 'もう一度やり直してください。', 1071 | 'N0C030C53' => 'しばらくしてからやり直してください。', 1072 | 'N0C030C54' => 'しばらくしてからやり直してください。', 1073 | 'N0C030C55' => 'しばらくしてからやり直してください。', 1074 | 'N0C030C56' => 'しばらくしてからやり直してください。', 1075 | 'N0C030C57' => 'しばらくしてからやり直してください。', 1076 | 'N0C030C58' => 'しばらくしてからやり直してください。', 1077 | 'N0C030C60' => 'しばらくしてからやり直してください。', 1078 | 'N0C030G03' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1079 | 'N0C030G12' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1080 | 'N0C030G30' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1081 | 'N0C030G54' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1082 | 'N0C030G55' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1083 | 'N0C030G56' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1084 | 'N0C030G60' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1085 | 'N0C030G61' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1086 | 'N0C030G65' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1087 | 'N0C030G67' => 'しばらくしてからやり直してください。', 1088 | 'N0C030G83' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1089 | 'N0C030G85' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1090 | 'N0C030G95' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1091 | 'N0C030G96' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1092 | 'N0C030G97' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1093 | 'N0C030G98' => 'もう一度やり直してください。', 1094 | 'N0C030G99' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1095 | 'N0N010007' => 'お客様の携帯電話ではサービスをご利用いただけません。', 1096 | 'N0N010008' => 'お客様の携帯電話ではサービスをご利用いただけません。', 1097 | 'N0N010009' => 'お客様の携帯電話ではサービスをご利用いただけません。', 1098 | 'N0N010013' => 'しばらくご利用になれません。店舗までお問合せください。', 1099 | 'N0N010024' => 'しばらくご利用になれません。店舗までお問合せください。', 1100 | 'N0N010032' => 'しばらくご利用になれません。店舗までお問合せください。', 1101 | 'N0N020014' => 'エラーが発生しました。店舗までお問合せください。', 1102 | 'N0N020017' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1103 | 'N0N020018' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1104 | 'N0N020019' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1105 | 'N0N020020' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1106 | 'N0N020021' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1107 | 'N0N020022' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1108 | 'N0N020023' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1109 | 'N0N030038' => '在このカードはお取扱できません。カード会社にお問合せください。', 1110 | 'N0N040014' => 'エラーが発生しました。店舗までお問合せください。', 1111 | 'N0K040026' => 'もう一度やり直してください。', 1112 | 'N0K040027' => 'エラーが発生しました。店舗までお問合せください。', 1113 | 'N0K040028' => 'エラーが発生しました。店舗までお問合せください。', 1114 | 'N0K040029' => 'エラーが発生しました。店舗までお問合せください。', 1115 | 'N0N040031' => 'しばらくご利用になれません。店舗までお問合せください。', 1116 | 'N0K040037' => 'しばらくご利用になれません。店舗までお問合せください。', 1117 | 'N0T000001' => 'もう一度やり直してください。', 1118 | 'N0T000002' => 'ご利用可能なカードが設定されていないため、お支払を継続できません。なお、iDでお支払いただくには事前にカードを設定いただく必要がありますj。', 1119 | 'N0T000003' => 'ご利用可能なカードが設定されていないため、お支払を継続できません。なお、iDでお支払いただくには事前にカードを設定いただく必要がありますj。', 1120 | 'N0T000004' => 'パスワード入力間違いが規定回数を超えたため、iDでのお支払を継続できません。なお、iDを再度ご利用いただくには、iDアプリを再度起動しリセットを実行した後、カードを設定しなおしていただく必要があります。', 1121 | 'N0T000005' => 'ICカードロックを設定されている場合は、一旦iDアプリを終了し、ICカードロックを解除してから再度iDアプリを起動してください。ICカードロックを解除してもご利用いただけない場合はカード会社へお問合せください。', 1122 | 'N0T000006' => 'エラーが発生しました。店舗までお問合せください。', 1123 | 'N0T000007' => 'もう一度やり直してください。', 1124 | 'N0T000008' => 'もう一度やり直してください。', 1125 | 'N0T000009' => '現在このカードはお取扱できません。カード会社にお問合せください。', 1126 | 'N0T000010' => 'もう一度やり直してください。', 1127 | 'WM1000001' => '【決済要求】後続決済センターとの通信パラメータでエラーが発生しました。(メッセージダイジェスト)', 1128 | 'WM1000002' => '【決済要求】後続決済センターで許可されていない接続です。', 1129 | 'WM1000003' => '【決済要求】後続決済センターで決済モジュールの実行に失敗しました。', 1130 | 'WM1000004' => '【決済要求】後続決済センターとの通信パラメータでエラーが発生しました。(受信パラメータ)', 1131 | 'WM1000005' => '【決済要求】後続決済センターとの通信に失敗しました。', 1132 | 'WM1000006' => '【決済結果受信】後続決済センターとの通信パラメータでエラーが発生しました。(受信パラメータ)', 1133 | 'WM1000007' => '【決済結果受信】後続決済センターで二重入金が発生しました。', 1134 | 'WM1000008' => '【決済結果受信】内部エラーが発生しました。(遷移)', 1135 | 'WM1000009' => '【ユーザーキャンセル受信】入金済みの取引に対し、ユーザーの支払操作がキャンセルされた通知を受信しました。', 1136 | 'WM1000010' => '【ユーザーキャンセル受信】内部エラーが発生しました。(遷移)', 1137 | 'AU1000001' => '【決済要求】後続決済センターとの通信に失敗しました。', 1138 | 'AU1000002' => '【決済要求】後続決済センターとの通信パラメータでエラーが発生しました。(受信パラメータ)', 1139 | 'AU1000003' => '【決済要求】後続決済センターで障害取消が実施されました。', 1140 | 'AU1000004' => '【決済要求】auかんたんOpenID連携解除でエラーが発生しました。', 1141 | 'AU1000005' => '【操作キャンセル】auかんたん決済でお客様がお支払をキャンセルしました。', 1142 | 'AMPL40505' => '有効なクレジットカードではありません。', 1143 | 'AMPL40506' => '後続センターにてシステムエラーが発生しました。', 1144 | 'AMPL90000' => '後続センターにてシステムエラーが発生しました。', 1145 | 'AU1000001' => '【決済要求】後続決済センターとの通信に失敗しました。', 1146 | 'AU1000002' => '【決済要求】後続決済センターとの通信パラメータでエラーが発生しました。(受信パラメータ)', 1147 | 'AU1000003' => '【決済要求】後続決済センターで処理取消が実施されました。', 1148 | 'AU1000004' => '【決済要求】auかんたんOpenID連携解除でエラーが発生しました。', 1149 | 'AU1000005' => '【操作キャンセル】auかんたん決済でお客様がお支払をキャンセルしました。', 1150 | 'AU1000006' => '【決済要求】後続決済センターで処理取消を実行し、取消に失敗しました。', 1151 | 'AMPL40505' => '有効なクレジットカードではありません。', 1152 | 'AMPL40506' => '後続センターにてシステムエラーが発生しました。', 1153 | 'AMPL90000' => '後続センターにてシステムエラーが発生しました。', 1154 | 'AMPL40010' => '後続センターにて処理取消エラーが発生し、有効な初回課金が残りました。', 1155 | 'DC1000001' => '【決済要求】後続決済センターで確定処理が失敗しました。', 1156 | 'DC1000002' => '【取消要求】後続決済センターで取消処理が失敗しました。', 1157 | 'DC1000003' => '【決済中止】お客様がドコモケータイ払いを中止しました。', 1158 | 'DC1000004' => '【決済失敗】ドコモケータイ払いが失敗しました。', 1159 | 'DC1000005' => '【決済中止】お客様がドコモ継続課金の申込を中止しました。', 1160 | 'DC1000006' => '【変更中止】お客様がドコモ継続課金の変更を中止しました。', 1161 | 'DC1000007' => '【終了中止】お客様がドコモ継続課金の終了を中止しました。', 1162 | 'DC1000008' => '【決済失敗】ドコモ継続課金の申込が失敗しました。', 1163 | 'DC1000009' => '【変更失敗】ドコモ継続課金の変更が失敗しました。', 1164 | 'DC1000010' => '【終了失敗】ドコモ継続課金の終了が失敗しました。', 1165 | 'SB1000001' => '【決済要求】後続決済センターで確定処理が失敗しました。', 1166 | 'SB1000002' => '【取消要求】後続決済センターで取消処理が失敗しました。', 1167 | 'SB1000003' => '【決済中止】お客様がソフトバンクまとめて支払い(B)を中止しました。', 1168 | 'SB1000004' => '【決済失敗】ソフトバンクまとめて支払い(B)が失敗しました。', 1169 | 'SB1000005' => '【決済要求】後続決済センターとの通信に失敗しました。', 1170 | 'J01000001' => '【決済失敗】後続決済センターで決済が失敗しました。', 1171 | 'J01000002' => '【決済中止】お客様がじぶん銀行決済を中止しました。', 1172 | 'J01000003' => '【決済失敗】後続決済センターで名義不一致により決済が失敗しました。', 1173 | 'J01100001' => '【決済失敗】後続決済センターで原因不明エラーにより決済が失敗しました。', 1174 | 'J01100002' => '【決済失敗】想定外のエラーコードが返却されました。', 1175 | 'JP1000001' => '残高不足', 1176 | 'JP1000002' => '入金金額オーバー', 1177 | 'JP1000003' => '未アクティベート', 1178 | 'JP1000004' => '利用開始前', 1179 | 'JP1000005' => '認証番号エラー', 1180 | 'JP1000006' => '無効カード', 1181 | 'JP1000007' => '会員番号エラー', 1182 | 'JP1000008' => '有効期限エラー', 1183 | 'JP1000009' => 'サービス対象外カード:券種コードエラー', 1184 | 'JP1000010' => 'サービス対象外カード:アライアンス期間外', 1185 | 'JP1000011' => 'サービス対象外カード:アライアンス無効', 1186 | 'JP1000012' => 'サービス対象外カード:アライアンス許可取引外', 1187 | 'JP1000013' => 'サービス対象外カード:その他アライアンス取引エラー', 1188 | 'JP1000014' => 'サービス対象外カード:その他アライアンス取引エラー', 1189 | 'JP1000015' => 'サービス対象外カード:JCBセンター会社未登録エラー', 1190 | 'JP1000016' => 'サービス対象外カード:JCBPOS支店チェックエラー', 1191 | 'JP1000017' => 'サービス対象外カード:JCB加盟店有効エラー', 1192 | 'JP1000018' => 'サービス対象外カード:JETS端末エラー', 1193 | 'JP1000019' => '取消対象取引エラー:取消対象取引なし', 1194 | 'JP1000020' => '取消対象取引エラー:既に取消済み', 1195 | 'JP1000021' => '取消対象取引エラー:取消対象取引が直近ではない', 1196 | 'JP1000022' => '取消対象取引エラー:取消可能時間超過', 1197 | 'JP1000023' => '取消対象取引エラー:その他取消対象取引エラー', 1198 | 'JP1000024' => '取消対象取引エラー:その他取消対象取引エラー', 1199 | 'JP1000025' => '取消対象取引エラー:その他取消対象取引エラー', 1200 | 'JP1000026' => '該当自社対象業務エラー:システムエラー', 1201 | 'JP1000027' => '該当自社対象業務エラー:システムエラー', 1202 | 'JP1000028' => '該当自社対象業務エラー:システムエラー', 1203 | 'JP1000029' => '該当自社対象業務エラー:システムエラー', 1204 | 'JP1000030' => '該当自社対象業務エラー:システムエラー', 1205 | 'JP1000031' => '該当自社対象業務エラー:システムエラー', 1206 | 'JP1000032' => '該当自社対象業務エラー:システムエラー', 1207 | 'JP1000033' => '接続要求自社受付拒否:発行会社コードエラー', 1208 | 'JP1000034' => '接続要求自社受付拒否:発行会社無効', 1209 | 'JP1000035' => '接続要求自社受付拒否:有効期限区分が不正', 1210 | 'JP1000036' => '接続要求自社受付拒否:リクエストバリデーションエラー', 1211 | 'JP1000037' => '接続要求自社受付拒否:認証キー不一致', 1212 | 'JP1000038' => '接続要求自社受付拒否:認証キーが有効時間外', 1213 | 'JP1000039' => '接続要求自社受付拒否:IPアドレスエラー', 1214 | 'JP1000040' => '接続要求自社受付拒否:その他接続要求エラー', 1215 | 'JP1000041' => '接続要求自社受付拒否:その他接続要求エラー', 1216 | 'JP1000042' => '接続要求自社受付拒否:その他接続要求エラー', 1217 | 'JP1000043' => '接続要求自社受付拒否:その他接続要求エラー', 1218 | 'JP1000044' => '障害取消対象取引エラー:障害取消対象が直近ではない', 1219 | 'JP1000045' => '障害取消対象取引エラー:障害取消可能時間超過', 1220 | 'JP1000046' => '障害取消対象取引エラー:その他障害取消対象取引エラー', 1221 | 'JP1000047' => '障害取消対象取引エラー:その他障害取消対象取引エラー', 1222 | 'JP1000048' => '予期しないエラー', 1223 | 'JP1000049' => 'JCBプリカ決済センターとの通信失敗', 1224 | 'JP1000050' => 'JCBプリカ決済センターからの戻り値不正', 1225 | 'FL1001001' => '会員認証中断', 1226 | 'FL1001002' => '会員認証ユーザID形式不正中断', 1227 | 'FL1001003' => '会員認証パスワード形式不正中断', 1228 | 'FL1001004' => '会員認証リトライ中断', 1229 | 'FL1001005' => '会員認証異常', 1230 | 'FL1001006' => 'コンテンツ購入不可状態による中断', 1231 | 'FL1001007' => '利用者利用停止異常', 1232 | 'FL1001008' => '回線認証異常(認証)', 1233 | 'FL1001009' => 'SSO認証不正', 1234 | 'FL1001998' => '事業者間通信タイムアウト異常', 1235 | 'FL1001999' => '事業者による処理中断', 1236 | 'FL1002001' => '会員認証中断', 1237 | 'FL1002002' => '会員認証ユーザID不形式不正中断', 1238 | 'FL1002003' => '会員認証パスワード形式不正中断', 1239 | 'FL1002004' => '会員認証リトライ中断', 1240 | 'FL1002005' => '会員認証異常', 1241 | 'FL1002006' => 'コンテンツ購入不可状態による中断', 1242 | 'FL1002007' => '利用者利用停止異常', 1243 | 'FL1002008' => '回線認証異常(認証)', 1244 | 'FL1002009' => '回線認証異常(課金依頼)', 1245 | 'FL1002010' => '課金依頼情報中断', 1246 | 'FL1002011' => '課金依頼確認中断', 1247 | 'FL1002012' => '上限値超過警告中断', 1248 | 'FL1002013' => '上限値超過異常', 1249 | 'FL1002014' => '購入確認メール送信中断【NTT東日本単独】', 1250 | 'FL1002016' => '購入確認メールチェック不正中断【NTT東日本単独】', 1251 | 'FL1002017' => '購入確認メールチェック不正中断【NTT東日本単独】', 1252 | 'FL1002018' => '購入確認メールチェック不正中断【NTT東日本単独】', 1253 | 'FL1002019' => '購入確認メールチェック不正中断【NTT東日本単独】', 1254 | 'FL1002020' => '課金依頼処理の重複検知警告で中断', 1255 | 'FL1002021' => '購入確認メールからの課金依頼キャンセル中断【NTT東日本単独】', 1256 | 'FL1002023' => '購入確認メール送付', 1257 | 'FL1002024' => '処理順の不正エラー', 1258 | 'FL1002025' => 'SSO認証不正', 1259 | 'FL1002026' => '上限値警告超過', 1260 | 'FL1002027' => 'ユーザー未承諾', 1261 | 'FL1002996' => 'NGN情報料回収代行システムエラーによる中断', 1262 | 'FL1002997' => 'ログイン状態異常', 1263 | 'FL1002998' => '事業者間通信タイムアウト異常', 1264 | 'FL1002999' => '事業者による処理中断', 1265 | 'FL1003001' => '会員認証中断', 1266 | 'FL1003002' => '会員認証コンテンツ購入ID不形式不正中断', 1267 | 'FL1003003' => '会員認証パスワード形式不正中断', 1268 | 'FL1003004' => '会員認証リトライ中断', 1269 | 'FL1003005' => '会員認証異常', 1270 | 'FL1003006' => 'コンテンツ購入不可状態による中断', 1271 | 'FL1003007' => '利用者利用停止異常', 1272 | 'FL1003008' => '回線認証異常(認証)', 1273 | 'FL1003009' => '購入確認メール送付', 1274 | 'FL1003011' => '利用解除確認中断', 1275 | 'FL1003014' => '解約確認メール送信中断【NTT東日本単独】', 1276 | 'FL1003016' => '解約確認メールチェック不正中断【NTT東日本単独】', 1277 | 'FL1003017' => '解約確認メールチェック不正中断【NTT東日本単独】', 1278 | 'FL1003019' => '解約確認メールチェック不正中断【NTT東日本単独】', 1279 | 'FL1003020' => '利用解除処理の重複検知警告で中断', 1280 | 'FL1003021' => '処理順の不正エラー', 1281 | 'FL1003022' => 'SSO認証不正', 1282 | 'FL1003996' => 'NGN情報料回収代行システムエラーによる中断', 1283 | 'FL1003997' => 'ログイン状態異常', 1284 | 'FL1003998' => '事業者間通信タイムアウト異常', 1285 | 'FL1003999' => '事業者による処理中断', 1286 | 'FL1004001' => 'XMLフォーマットチェックエラー', 1287 | 'FL1004002' => 'API認証エラー', 1288 | 'FL1004101' => 'IF規定違反', 1289 | 'FL1004102' => 'IF規定違反', 1290 | 'FL1004103' => 'IF規定違反', 1291 | 'FL1004104' => 'IF規定違反', 1292 | 'FL1004105' => 'IF規定違反', 1293 | 'FL1004106' => 'IF規定違反', 1294 | 'FL1004107' => 'IF規定違反', 1295 | 'FL1004108' => 'IF規定違反', 1296 | 'FL1004109' => 'IF規定違反', 1297 | 'FL1004110' => 'IF規定違反', 1298 | 'FL1004201' => '処理依頼通番重複エラー', 1299 | 'FL1004202' => '処理依頼通番連携順序エラー', 1300 | 'FL1004203' => 'コンテンツ非存在エラー', 1301 | 'FL1004204' => '仮実売上コンテンツエラー', 1302 | 'FL1004205' => '事業者ID不一致エラー', 1303 | 'FL1004206' => '申込日時エラー', 1304 | 'FL1004207' => 'オーダ整合性エラー', 1305 | 'FL1004208' => 'コンテンツ購入ID存在チェックエラー', 1306 | 'FL1004209' => 'ユーザ状態コードチェックエラー', 1307 | 'FL1004210' => 'ユーザ状態コードチェックエラー', 1308 | 'FL1004211' => '上限値超過エラー', 1309 | 'FL1004901' => '回収代行サーバ定期メンテナンス中', 1310 | 'FL1004902' => '回収代行サーバ緊急メンテナンス中', 1311 | 'FL1004903' => '回収代行サーバスレッド取得エラー', 1312 | 'FL1004904' => '回収代行サーバ処理時間タイムアウト', 1313 | 'FL1004905' => '回収代行サーバDBエラー', 1314 | 'FL1004906' => '回収代行サーバ内部タイムアウト', 1315 | 'FL1004999' => '回収代行サーバその他異常', 1316 | 'FL1009001' => 'システムメンテナンス', 1317 | 'FL1009002' => '送信パラメータ不正', 1318 | 'FL1009901' => 'ログアウトエラー', 1319 | 'FL1009999' => 'その他エラー', 1320 | 'NC1000001' => '取引IDチェックエラー', 1321 | 'NC1000002' => '取引の存在チェックエラー', 1322 | 'NC1000003' => 'トークンチェックエラー', 1323 | 'NC1000004' => '状態遷移チェックエラー (入金済み)', 1324 | 'NC1000005' => '状態遷移チェックエラー (期限切れ)', 1325 | 'NC1000006' => '状態遷移チェックエラー (不正な遷移)', 1326 | 'NC1000007' => '有効期限切れ', 1327 | 'NC1000008' => '状態遷移エラー', 1328 | 'NC1000009' => '決済NG', 1329 | 'NC1000010' => 'MD5チェックエラー', 1330 | 'NC1000011' => '決済情報取得エラー', 1331 | 'NC1000012' => '決済結果パラメータチェックエラー(決済結果に対しての決済日時の有無)', 1332 | 'NC1000013' => '購入情報内容チェックエラー時URLへ遷移', 1333 | 'NC2000001' => '決済の不整合(決済が失敗した取引に対しての結果通知)', 1334 | 'NC2000002' => 'ショップ特定不可', 1335 | 'NC2000003' => 'SCD未設定', 1336 | 'NC2000004' => 'NET CASH契約タイプ未設定', 1337 | 'NC2000005' => '利用停止チェックエラー', 1338 | 'NC2000006' => '紐づく取引が存在しない(購入情報出力)', 1339 | 'NC2000007' => '紐づく取引が存在しない(決済結果通知)', 1340 | ); 1341 | 1342 | } 1343 | --------------------------------------------------------------------------------