5

PHP Paypal SDK を使用しています: https://github.com/paypal/PayPal-PHP-SDK

PHP SDK を介して PayPal REST API を参照すると、「受信 JSON 要求が API 要求にマップされません」が返される

https://stackoverflow.com/questions/39827032/paypal-how-to-get-payment-id-on-basis-of-transaction-idに進みます

すでに利用可能なトランザクション ID に基づいて、支払い ID を取得する必要があります

以下のコードを試しました

require __DIR__ . '/bootstrap.php';

use PayPal\Api\Amount;
use PayPal\Api\Details;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\CreditCard;
use PayPal\Api\Payer;
use PayPal\Api\Payment;
use PayPal\Api\FundingInstrument;
use PayPal\Api\Transaction;
// Extra Code
use PayPal\Api\PaymentDetail;

$payer = new Payer();
$payer->setPaymentMethod('paypal');

$transaction = new PaymentDetail(
        '{
          "method" : "CASH",
          "date" : "2014-07-06 03:30:00 PST",
          "note" : "Cash received."
        }'
);

$transaction->setTransactionId("3NT32794KF4824703");

$payment = new Payment();
$payment->setIntent("sale")
        ->setPayer($payer)
        ->setTransactions(array($transaction));

// For Sample Purposes Only.
$request = clone $payment;

try {
    $payment->create($apiContext);
} catch (\PayPal\Exception\PayPalConnectionException $ex) {
    echo $ex->getData();
}

echo "<pre>";
print_r($payment);
exit;

上記のコードを実行すると、以下のようなエラーが発生します

{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"aa8bfa2a41f1f"}

PayPal\Api\Payment Object
(
    [_propMap:PayPal\Common\PayPalModel:private] => Array
        (
            [intent] => sale
            [payer] => PayPal\Api\Payer Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [payment_method] => paypal
                        )

                )

            [transactions] => Array
                (
                    [0] => PayPal\Api\PaymentDetail Object
                        (
                            [_propMap:PayPal\Common\PayPalModel:private] => Array
                                (
                                    [method] => CASH
                                    [date] => 2014-07-06 03:30:00 PST
                                    [note] => Cash received.
                                    [transaction_id] => 3NT32794KF4824703
                                )

                        )

                )

        )

)

上記のエラーを解決するには?ガイドしてください

Paypal テクニカル サポートからの返信

開発チームとの話し合いとテストの後、TransactionId を使用して PaymentId を取得できないことが確認されました。PaymentId は、最初の REST API 呼び出し時に生成されます。これは REST API でのみ発生します。

トランザクション ID は、REST API が支払いを実行した後、クラシック API [NVP/SOAP] DoEC API または通常のボタンの支払いが完了した後に生成できます。支払い ID を見つけるために検索を逆にすることは決して機能しません。

今のところ、唯一の回避策は、失敗したか、PaymentId を追跡しないかに関係なく、各 REST API 要求をログに記録することです。

達成の必要性: 支払いが完了すると、保留されます。X 日後に処理されます。処理されると、金額は顧客の口座から差し引かれます。

4

1 に答える 1