gmopg
E61040001
composer require sanmai/ gmopg
API를 구성하는 방법에는 두 가지가 있습니다.
전역 상수를 사용합니다. 즉, 다음을 정의해야 합니다.
// ショップ情報
define ( ' GMO_SHOP_ID ' , ' tshop0000001 ' ); // ショップID
define ( ' GMO_SHOP_PASSWORD ' , ' qwerty ' ); // ショップ名
define ( ' GMO_SHOP_NAME ' , ' My Shop ' ); // ショップパスワード
define ( ' GMO_TRIAL_MODE ' , false );
처음 세 개는 관리 패널이나 GMO PG의 이메일에서 얻을 수 있습니다.
테스트 상점 비밀번호를 사용하는 경우 마지막 상수 GMO_TRIAL_MODE
true
로 설정해야 합니다.
이러한 정적 메서드를 호출하면 다음과 같습니다.
GMO API Defaults:: setShopID ( $ shopId );
GMO API Defaults:: setShopName ( $ shopName );
GMO API Defaults:: setPassword ( $ shopPassword );
// When using a test password, this constant is mandatory
//define('GMO_TRIAL_MODE', true);
현재는 true
로 설정된 상수 GMO_TRIAL_MODE
정의하는 것 외에 테스트 모드를 활성화할 수 있는 다른 방법이 없습니다.
define ( ' GMO_TRIAL_MODE ' , true );
테스트 환경 자격 증명으로 직접 입력한 카드 번호로 결제를 테스트하려면 설명서에 설명된 대로 결제를 활성화해야 합니다.
// A wrapper object that does everything for you.
$ payment = new GMO ImmediatePayment ();
// Unique ID for every payment; probably should be taken from an auto-increment field from the database.
$ payment -> paymentId = 123 ;
$ payment -> amount = 1000 ;
// This card number can be used for tests.
$ payment -> cardNumber = ' 4111111111111111 ' ;
// A date in the future.
$ payment -> cardYear = ' 2020 ' ;
$ payment -> cardMonth = ' 7 ' ;
$ payment -> cardCode = ' 123 ' ;
// Returns false on an error.
if (! $ payment -> execute ()) {
$ errors = $ payment -> getErrors ();
foreach ( $ errors as $ errorCode => $ errorDescription ) {
// Show an error code and a description to the customer? Your choice.
// Probably you want to log the error too.
}
return ;
}
// Success!
$ response = $ payment -> getResponse ();
/** @var GMOAPIResponseExecTranResponse $response */
// You would probably want to save the response in the database for future reference.
// The response can be used to query details about a transaction, make refunds and so on.
$errors
배열은 다음과 유사한 형식으로 제공됩니다.
array(1) {
'E01040010' =>
string(34) "This order ID was used previously."
}
가장 잘 알려진 오류 코드 목록입니다. 읽을 수 있는 형태로. 그리고 또 하나.
일반적인 $response
다음과 같습니다:
class GMOAPIResponseExecTranResponse#1 (9) {
public $ACS =>
string(1) "0"
public $OrderID =>
string(10) "1517000000"
public $Forward =>
string(7) "0afd1200"
public $Method =>
string(1) "1"
public $PayTimes =>
string(0) ""
public $Approve =>
string(7) "0112234"
public $TranID =>
string(28) "180111111111111111111344439"
public $TranDate =>
string(14) "20221222213141"
public $CheckString =>
string(32) "68b329da9893e34099c7d8ad5cb9c940"
}
결제 객체는 신용 카드 정보 대신 JavaScript API에서 받은 토큰을 허용할 수 있습니다.
$ payment = new GMO ImmediatePayment ();
$ payment -> paymentId = 123 ; // Unique ID for every payment; see above
$ payment -> amount = 1000 ;
// Card details are unnecessary in this case
$ payment -> token = $ _POST [ ' token ' ];
if (! $ payment -> execute ()) {
// ... same as above
}
// ... same as above
심각한 오류 E61040001이 발생하는 경우 위의 결제 방법을 사용해야 합니다.
이제 자연스럽게 현재 결제에 대한 거래 세부정보를 로드하려고 합니다.
$ searchTrade = new GMO API Call SearchTrade ();
$ searchTrade -> OrderID = $ payment -> getResponse ()-> OrderID ;
// Copy credential from the original payment
$ payment -> setupOther ( $ searchTrade );
$ response = $ searchTrade -> dispatch ();
이 $response
에는 다음 필드가 있습니다.
class GMOAPIResponseSearchTradeResponse#4950 (21) {
public $AccessID =>
string(32) "b026324c6904b2a9cb4b88d6d61c81d1"
public $AccessPass =>
string(32) "26ab0db90d72e28ad0ba1e22ee510510"
public $OrderID =>
string(10) "1517000000"
public $Status =>
string(5) "SALES"
public $ProcessDate =>
string(14) "20221222213141"
public $JobCd =>
string(5) "SALES"
public $ItemCode =>
string(7) "0000000"
public $Amount =>
string(4) "4999"
public $Tax =>
string(1) "0"
public $SiteID =>
string(0) ""
public $MemberID =>
string(0) ""
public $CardNo =>
string(16) "************1111"
public $Expire =>
string(4) "2307"
public $Method =>
string(1) "1"
public $PayTimes =>
string(0) ""
public $Forward =>
string(7) "0afd1200"
public $TranID =>
string(28) "180111111111111111111344439"
public $Approve =>
string(7) "0112234"
public $ClientField1 =>
string(0) ""
public $ClientField2 =>
string(0) ""
public $ClientField3 =>
string(0) ""
}
GMO-PG는 아무런 이유 없이 매우 비밀스러워 보이며(이는 Stripe와 정반대입니다) 일반적으로 비공개 계약에 서명한 경우에만 해당 문서에 액세스할 수 있습니다.