CiviContributeのバグ – PayPal Expressは定期的な寄付には役に立たない

私はテストPayPay
Express支払いプロセッサーをセットアップし、ユーザーが定期的な寄付を作成できる投稿ページを作成しました。

このページを使用すると、「PayPal Checkout」ボタンが表示され、PayPalに移動します。
PayPalの画面ですべてのことが期待どおり進められ、私は自分のサイトに戻ってきて、「投稿する」ボタンをクリックする必要があると言われます。私はそれをして、言うページを戻す:

Notice: Undefined index: returnURL in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 372 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: cancelURL in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 373 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: installments in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 380 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: transactionid in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 399 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: amt in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 400 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: feeamt in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 401 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: settleamt in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 402 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: paymentstatus in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 406 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: pendingreason in CRM_Core_Payment_PayPalImpl->createRecurringPayments() (line 407 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Core/Payment/PayPalImpl.php).
Notice: Undefined index: payment_status_id in CRM_Contribute_BAO_Contribution_Utils::processConfirm() (line 198 of /var/www/html/SOTS/sites/all/modules/civicrm/CRM/Contribute/BAO/Contribution/Utils.php).

それはまた、支払いが成功したと言いますが、私はCiviCRMでそれを見て、それは
“保留中”のステータスを持っており、私のPayPalアカウントは通知が送信されなかったことを示しています。

私はいくつかの掘削を行った。
“投稿する”ボタンを押すと、アプリケーションはPayPalImpl.php、createRecurringPayments(…)で終わります。これは決して$
param
[‘payment_status_id’]を設定しません。後で、アプリケーションはConfirm.php、completeTransaction()に到達し、$
result [‘payment_status_id’] =
1を検索します。これが真である場合にのみ、トランザクションは完了としてマークされます。

だから、問題は、createRecurringPayments()はpayment_status_idを設定する必要があります、そして何に?

1回の寄付で試しても問題ないです(つまり、トランザクションは完了としてマークされています)。

ありがとう

ベストアンサー

さて、私は最後にこれの底にいたと思います。

まず、問題の1つは、PayPal(mea culpa)で支払い通知を設定していないということでした。

ただし、これを修正しても通知は処理されませんでした。これをPayPalProIPN.phpのhandlePaymentExpress()メソッドに絞り込んだ。ここでは2つのエラーがあり、どちらも「テストです」ステータスに関連しています。行578で、コントリビューションレコードを取得しようとします。しかし、呼び出し:

   $result = civicrm_api3('contribution', 'getsingle', array('invoice_id' => $input['invoice']));

ライブ寄付のためだけに働きますが、テスト寄付は見つかりません。

もう1つのエラーは597行目です:

    $paymentProcessorID = self::getPayPalPaymentProcessorID();

繰り返しますが、これはテストではなくライブでのみ有効です。

私はCiviCRMウェブサイトでこの問題を記録したいと思っていますが、アカウントに対する2つのリクエストは無視されています。しかたがない。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です