0

私はサイトを作成していて、支払いを追加しているだけです。
私はPaypal SDKを使用しており、SetExpressCheckout().

これが応答です。

object(SetExpressCheckoutResponseType)[72]
  public 'Token' => null
  public 'Timestamp' => string '2012-08-23T15:21:15Z' (length=20)
  public 'Ack' => string 'Failure' (length=7)
  public 'CorrelationID' => string 'e0278e8e18b4f' (length=13)
  public 'Errors' => 
    object(ErrorType)[78]
      public 'ShortMessage' => string 'Transaction refused because of an invalid argument. See additional error messages for details.' (length=94)
      public 'LongMessage' => string 'CancelURL is invalid.' (length=21)
      public 'ErrorCode' => string '10472' (length=5)
      public 'SeverityCode' => string 'Error' (length=5)
      public 'ErrorParameters' => null
  public 'Version' => string '93.0' (length=4)
  public 'Build' => string '3556406' (length=7)

どうしたのかわからない。のCancelURLように見えますurlencode('https://www.example.com/users/account/');。末尾のスラッシュを含めましたが、これが無効になる可能性があると考える人もいます。

考えられる唯一のことは、私のサイトはどこにもオンラインではないため、Paypal がそのページにアクセスできないということです。ダミーページを作成/users/account/してサーバーにアップロードしたので、到達可能でまだ何もありません。etc/hostsまた、トラフィックをローカルホストにルーティングするためのエントリもあり、example.comこれは Facebook Auth ビットで正常に機能しました。

CancelURL の制限と、Paypal が私の要求を無効にする理由について、何か考えがある人はいますか?


リクエスト生成

$int = new PayPalAPIInterfaceServiceService();

$amount = new BasicAmountType();
$amount->currencyID = CakeSession::read('Locale.currency');
$amount->value = Configure::read('Subscription.price.'.CakeSession::read('Locale.shortname'));

$req_details_type = new SetExpressCheckoutRequestDetailsType();

$req_details_type->OrderTotal = $amount;
$req_details_type->ReturnURL = urlencode('https://www.example.com/paypal/getExpressCheckoutDetails');
$req_details_type->CancelURL = urlencode('https://www.example.com/users/account/');
$req_details_type->MaxAmount = $amount;
$req_details_type->OrderDescription = "Monthly subscription to Example.com Pro";
$req_details_type->ReqConfirmShipping = 0;
$req_details_type->NoShipping = 1;
$req_details_type->LocaleCode = CakeSession::read('Locale.shortname') == 'usa'? 'US' : 'GB';
$req_details_type->PaymentAction = 'Authorization';
$req_details_type->BuyerEmail = AuthComponent::user('email');
$req_details_type->BrandName = urlencode("Example.com");

$req_type = new SetExpressCheckoutRequestType();
$req_type->SetExpressCheckoutRequestDetails = $req_details_type;

$req = new SetExpressCheckoutReq();
$req->SetExpressCheckoutRequest = $req_type;


$response = $int->SetExpressCheckout($req);

var_dump($response);
4

1 に答える 1

0

変更する必要があります:

$req_details_type->ReturnURL = urlencode('https://www.example.com/paypal/getExpressCheckoutDetails');
$req_details_type->CancelURL = urlencode('https://www.example.com/users/account/');

に :

$req_details_type->ReturnURL = 'https://www.example.com/paypal/getExpressCheckoutDetails';
$req_details_type->CancelURL = 'https://www.example.com/users/account/';

urlencode(); ここでは必要ありませんそれはあなたのURLを文字列に変換します

于 2012-08-23T16:17:35.887 に答える