2016-03-26 6 views
1

私は自分のウェブサイトに "DoDirectPayment"メソッドを実装しようとしています。 私はpaypalサンドボックスアカウントを持っており、paypal apiを持っています。 通貨を「USD」に設定すると、コードから成功メッセージが返されます。 しかし、「HKD」通貨を設定すると、「この取引はサポートされていない通貨のために処理できません」というメッセージが返されます。通貨 'HKD'はpaypalの「DoDirectPayment」メソッドでサポートされていますか?

ここに私のコードを添付しました。確認して解決策を教えてください。ここで

$api_version = '78.0'; 
$api_endpoint = 'https://api-3t.sandbox.paypal.com/nvp'; 

$api_username = 'platfo_1255077030_biz_api1.gmail.com'; 
$api_password = '1255077037'; 
$api_signature = 'Abg0gYcQyxQvnf2HDJkKtA-p6pqhA1k-KTYE0Gcy1diujFio4io5Vqjf'; 



$creditcardtype = 'VISA'; 
$cardno = '4854897648835021'; 
$expdate = '112020'; 
$cvv = '176'; 
$PRICE = '50.00'; 
$currency_code = 'HKD'; 
$request_params = array(
         'USER' => $api_username, 
         'PWD' => $api_password, 
         'SIGNATURE' => $api_signature, 
         'VERSION' => $api_version, 
         'PAYMENTACTION' => 'SALE',     
         'CREDITCARDTYPE' => $creditcardtype, 
         'ACCT' => $cardno,       
         'EXPDATE' => $expdate,   
         'CVV2' => $cvv, 
         'AMT' => $PRICE, 
         'CURRENCYCODE' => $currency_code, 
         'FIRSTNAME'=>'James', 
         'LASTNAME'=>'Smith', 
         'STREET'=>'FirstStreet', 
         'CITY'=>'SanJose', 
         'STATE'=>'CA', 
         'COUNTRYCODE'=>'US', 
         'ZIP'=>95131 
        ); 
$request_params['METHOD'] = 'DoDirectPayment'; 


$nvp_string = ''; 
foreach($request_params as $var=>$val) 
{ 
    $nvp_string .= '&'.$var.'='.urlencode($val);  
} 

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
curl_setopt($curl, CURLOPT_URL, $api_endpoint); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $nvp_string); 

$result = curl_exec($curl);  
curl_close($curl); 
$response = NVPToArray($result); 
echo '<pre>'; 
print_r($response); 
echo '</pre>'; 


function NVPToArray($NVPString) 
{ 
    $proArray = array(); 
    while(strlen($NVPString)) 
    { 
     $keypos= strpos($NVPString,'='); 
     $keyval = substr($NVPString,0,$keypos); 
     $valuepos = strpos($NVPString,'&') ? strpos($NVPString,'&'): strlen($NVPString); 
     $valval = substr($NVPString,$keypos+1,$valuepos-$keypos-1); 
     $proArray[$keyval] = urldecode($valval); 
     $NVPString = substr($NVPString,$valuepos+1,strlen($NVPString)); 
    } 
    return $proArray; 
} 

がサンドボックスアカウントの国はUSDである場合には、事前

答えて

関連する問題