私は自分のウェブサイトに "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である場合には、事前