0

私はYiiを使用して、PayPalによる支払いを必要とするアプリケーションを構築しています。何度も調べた結果、ExpressCheckoutが使用する方法であることがわかりました。以下のコードは、PHP SDKのバージョン1.2.95を使用して、しばらく前(数週間前、PayPalが新しい開発者プラットフォームを展開する前だと思います)に正常に機能しました。現在、最新バージョンv.2.2.98を使用すると、コードは失敗します。

require_once(Yii::getPathOfAlias('application.libraries.paypal') . '/PPBootStrap.php');
$logger = new PPLoggingManager('SetExpressCheckout');

$PaymentDetails = new PaymentDetailsType();
$PaymentDetails->OrderTotal =  $PaymentDetails->ItemTotal =
  new BasicAmountType('USD', $subscription->price);
$PaymentDetails->PaymentAction = "Sale";
$PaymentDetails->OrderDescription = $subscription->description;

$setECReqDetails = new SetExpressCheckoutRequestDetailsType();
$setECReqDetails->PaymentDetails[0] = $PaymentDetails;
$setECReqDetails->CancelURL = 'someCancelUrl';
$setECReqDetails->ReturnURL = 'someReturnUrl';

$setECReqType = new SetExpressCheckoutRequestType();
$setECReqType->SetExpressCheckoutRequestDetails = $setECReqDetails;

$setECReq = new SetExpressCheckoutReq();
$setECReq->SetExpressCheckoutRequest = $setECReqType;

$paypalService = new PayPalAPIInterfaceServiceService();

$ok = TRUE;
try {
  $setECResponse = $paypalService->SetExpressCheckout($setECReq);
  if($setECResponse && strtoupper($setECResponse->Ack) =='SUCCESS') {
    $token = $setECResponse->Token;
    // Redirect to paypal.com here
    $this->redirect(
      'https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=' . $token);
  }
}
catch (Exception $ex) {
  Yii::trace(__METHOD__ . ': Exception while interacting with PayPal API, error: '
    . $ex->getMessage());
  $ok = FALSE;
}

問題のある行は次のとおりです。

$setECResponse = $paypalService->SetExpressCheckout($setECReq);

PayPalAPIInterfaceServiceService :: SetExpressCheckout()では、次の2行があります。

$resp = $this->call('PayPalAPIAA', 'SetExpressCheckout', $setExpressCheckoutReq, $apiCredential);
$ret->init(PPUtils::xmlToArray($resp));

問題です。$respnullであるため、次の行はPPUtils::xmlToArray($resp)メソッド呼び出しで失敗します。

明らかに、私はここで何かが足りないか、PayPalが何か間違ったことをします。

何か助けはありますか?

4

1 に答える 1

0

多くのデバッグの後、問題の原因は、service.EndPoint.PayPalAPIパラメータが で定義されていないことでしたsdk_config.ini。覚えていない何らかの理由で、このパラメーターは以前のバージョンの作業構成ファイルから削除されました。

現在、最新の 2.3.100 バージョンの API を使用しても、エクスプレス チェックアウト メソッドは正常に機能します。

于 2013-03-28T21:07:45.313 に答える