KG이니시스 알리페이에서 영문과 숫자 이외의 상품명은 모두 ILLEGAL_SIGN 에러가 나옴... 알리페이 인데 중국어도 에러.... 온리 영문만... urlencoding을 처리하지 않는건가? PayGate는 잘 되던데...
Alipay URL Example
https://forexprod.alipay.com/exterfaceAssign.htm?alipay_exterface_invoke_assign_client_ip=xxx.xxx.xxx.xxx&subject=HanKeul+JaSo+ByeonHwan+HapNiDa.+Korea(%2B2)&.....//유니코드를 이용 한글 초성, 중성, 종성으로 쪼개기 - 한글/영문 변환
function utf8_to_unicode( $str )
{
$unicode = array();
$values = array();
$lookingFor = 1;
for ($i = 0; $i < strlen( $str ); $i++ )
{
$thisValue = ord( $str[ $i ] );
if ( $thisValue < 128 )
{
$unicode[] = $thisValue;
}else{
if ( count( $values ) == 0 ) $lookingFor = ( $thisValue < 224 ) ? 2 : 3;
$values[] = $thisValue;
if ( count( $values ) == $lookingFor )
{
$number = ( $lookingFor == 3 ) ?
( ( $values[0] % 16 ) * 4096 ) + ( ( $values[1] % 64 ) * 64 ) + ( $values[2] % 64 ):
( ( $values[0] % 32 ) * 64 ) + ( $values[1] % 64 );
$unicode[] = $number;
$values = array();
$lookingFor = 1;
}
}
}
return $unicode;
}
function unicode_to_utf8( $str )
{
$utf8 = '';
foreach( $str as $unicode )
{
if ( $unicode < 128 )
{
$utf8.= chr( $unicode );
}
elseif ( $unicode < 2048 )
{
$utf8.= chr( 192 + ( ( $unicode - ( $unicode % 64 ) ) / 64 ) );
$utf8.= chr( 128 + ( $unicode % 64 ) );
} else {
$utf8.= chr( 224 + ( ( $unicode - ( $unicode % 4096 ) ) / 4096 ) );
$utf8.= chr( 128 + ( ( ( $unicode % 4096 ) - ( $unicode % 64 ) ) / 64 ) );
$utf8.= chr( 128 + ( $unicode % 64 ) );
}
}
return $utf8;
}
/* 변환하고자 하는 언어 예제 - UTF-8로 바꾸기 위해서 iconv 함수를 사용했다. */
function han2eng($str1)
{
/* 초중성에 대응하는 영문 알파벳 배열화 */
$LCtable = array("ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ");
$MVtable = array("ㅏ","ㅐ","ㅑ","ㅒ","ㅓ","ㅔ","ㅕ","ㅖ","ㅗ","ㅘ","ㅙ","ㅚ","ㅛ","ㅜ","ㅝ","ㅞ","ㅟ","ㅠ","ㅡ","ㅢ","ㅣ");
$TCtable = array("","ㄱ","ㄲ","ㄳ","ㄴ","ㄵ","ㄶ","ㄷ","ㄹ","ㄺ","ㄻ","ㄼ","ㄽ","ㄾ","ㄿ","ㅀ","ㅁ","ㅂ","ㅄ","ㅅ","ㅆ","ㅇ","ㅈ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ");
$LCetable = array("k","kk","n","d","tt","l","m","b","pp","s","ss","","j","jj","ch","k","t","p","h");
$MVetable = array("a","ae","ya","yae","eo","e","yeo","ye","o","wa","wae","oe","yo","u","wo","we","wi","yu","eu","ui","i");
$TCetable = array("","g","kk","k","n","n","n","t","l","l","l","l","l","l","l","l","m","p","p","s","ss","ng","j","ch","k","t","p","h");
$returnValue = '';
//$str1 = iconv("EUC-KR","UTF-8", $str1);
/* UTF-8로 변환된 문장을 유니코드로 변환한다. */
$result = utf8_to_unicode($str1);
/* 유니코드로 변환된 글이 한글코드 안에 있으면 초중성으로 분리한다
원본에서 약간 수정함. 한글 외 글자에서 중복패턴이 나오는 부분 수정함.
단 한글외 [0-9a-Z]는 확인했지만 그 외 문자에서는 확인 해 보지 않음.
*/
foreach( $result AS $key => $val)
{
if($val >= 44032 && $val <= 55203)
{
$chr = "";
$code = "";
$temp1 = "";
$code = $val;
$temp1 = $code - 44032;
$T = (int) $temp1 % 28;
$temp1 /= 28;
$V = (int) $temp1 % 21;
$temp1 /= 21;
$L = (int) $temp1;
$chr .= $LCetable[$L].$MVetable[$V].$TCetable[$T];
$returnValue .= ucfirst($chr);
} else {
//$returnValue .= unicode_to_utf8($val);
$returnValue .= chr($val);
}
}
return $returnValue;
}
/**
* echo han2eng("한글 자소 변환 합니다. Korea");
*/
반응형
'lang > php' 카테고리의 다른 글
PHP 웹 사이트 IDE 개발툴 (0) | 2015.06.01 |
---|---|
window xampp 속도문제 - 가속엔진이 없을 경우 (0) | 2015.05.29 |
CodeIgniter Email SMTP 451 Error (0) | 2015.01.30 |
CodeIgniter Rest Server Format jsonp,cvs Error (0) | 2014.12.12 |
CodeIgniter Straight Model (0) | 2014.12.09 |