2016-06-22 18 views
1

私はPaypal NVP APIとREST APIのどちらを決定するのにも苦労しています。取引後にお客様の詳細を取得

REST APIの方が新しいと思われますが、トランザクションが発生した後に顧客の詳細を取得する方法が見つかりません。

基本的に、定期支払いの請求プランを設定してから、APIを使用して顧客の詳細を取得して、自分のウェブサイトから入力する必要はありません。

Paypal Expressのチェックアウトは、私がここで使うべきものと思われます。

NVP APIには、これらの詳細を取得するためのGetExpressCheckoutDetailsメソッドがあります。

私はREST APIに類似したものは見つかりませんでした。

REST APIもExpress Checkoutを経由しているようですが、解決策が必要です。

請求契約書を有効にした後で顧客の詳細を取得するにはどうすればよいですか?

答えて

0

私はこの1ヶ月前と同じ問題を抱えていましたが、ドキュメントを読んだ後は、現在REST APIでこれを達成する方法はありません。方法がある場合、それは文書化されていません。

これを行うために私が見つけた唯一の方法は、NVP APIとおそらくSOAP APIです。 NVP APIを使用すると、ほとんどのフィールドを元に戻すことができますが、トランザクションのカスタムフィールドを格納している場合は、カスタムフィールドのうち3つしか表示されませんが、それらのすべて(奇妙なもの)ではありません。

私はNVPメソッドGetExpressCheckoutDetailsを試していませんが、GetTransactionDetailsメソッドを使用しました。それはあなたに取引の詳細を返すでしょう。解析する必要があるテキストブロックを返します。各フィールドはURLエンコードされ、アンパサンドで区切られます。ここではPHPでの例です:

<?php 

// Get cURL resource 
$ch = curl_init(); 

// Set url 
curl_setopt($ch, CURLOPT_URL, 'https://api-3t.paypal.com/nvp/'); 

// Set method 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 

// Set options 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// Set headers 
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 
    "Content-Type: application/x-www-form-urlencoded; charset=utf-8", 
    ] 
); 
// Create body 
$body = [ 
    "VERSION" => "204.0", 
    "METHOD" => "GetTransactionDetails", 
    "USER" => "nvp_api_username_here", 
    "PWD" => "nvp_api_password_here", 
    "SIGNATURE" => "nvp_api_signature_here", 
    "TRANSACTIONID" => "some_paypal_transaction_id_here", 
]; 
$body = http_build_query($body); 

// Set body 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 

// Send the request and save response to $resp 
$resp = curl_exec($ch); 

if(!$resp) { 
    die('Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch)); 
} else { 
    parse_str($resp, $formated_response); 
    print_r($formated_response); 
} 

// Close request to clear up some resources 
curl_close($ch); 

は、ここでフォーマットされたリターン体です:

Array 
(
    [RECEIVERBUSINESS] => [email protected] 
    [RECEIVEREMAIL] => [email protected] 
    [RECEIVERID] => 1111111111111 
    [EMAIL] => [email protected] 
    [PAYERID] => 55551 
    [PAYERSTATUS] => verified 
    [COUNTRYCODE] => US 
    [BUSINESS] => buyers_business_name_here 
    [ADDRESSOWNER] => PayPal 
    [ADDRESSSTATUS] => None 
    [SALESTAX] => 0.00 
    [SHIPAMOUNT] => 0.00 
    [SHIPHANDLEAMOUNT] => 0.00 
    [SHIPDISCOUNT] => 0.00 
    [INSURANCEAMOUNT] => 0.00 
    [GIFTRECEIPT] => 0 
    [TIMESTAMP] => 2016-08-02T17:04:58Z 
    [CORRELATIONID] => 55552 
    [ACK] => Success 
    [VERSION] => 204.0 
    [BUILD] => 22386173 
    [FIRSTNAME] => Foo 
    [LASTNAME] => Bar 
    [TRANSACTIONID] => 55553 
    [TRANSACTIONTYPE] => webaccept 
    [PAYMENTTYPE] => instant 
    [ORDERTIME] => 2016-08-01T20:49:28Z 
    [AMT] => 1.00 
    [TAXAMT] => 0.00 
    [CURRENCYCODE] => USD 
    [PAYMENTSTATUS] => Completed 
    [PENDINGREASON] => None 
    [REASONCODE] => None 
    [SHIPPINGMETHOD] => Default 
    [PROTECTIONELIGIBILITY] => Ineligible 
    [PROTECTIONELIGIBILITYTYPE] => None 
    [L_QTY0] => 0 
    [L_TAXAMT0] => 0.00 
    [L_SHIPPINGAMT0] => 0.00 
    [L_HANDLINGAMT0] => 0.00 
    [L_CURRENCYCODE0] => USD 
    [L_OPTIONSNAME0] => first_custom_field_label_here 
    [L_OPTIONSVALUE0] => first_custom_field_value_here 
    [L_OPTIONSNAME1] => second_custom_field_label_here 
    [L_OPTIONSVALUE1] => second_custom_field_value_here 
    [L_OPTIONS1NAME0] => second_custom_field_label_here_duplicate 
    [L_OPTIONS1VALUE0] => second_custom_field_value_here_duplicate 
    [L_TAXABLE0] => false 
    [L_TAXRATE0] => 0.0 
    [L_AMT0] => 1.00 
    [INSURANCEOPTIONSELECTED] => 0 
    [SHIPPINGOPTIONISDEFAULT] => 0 
) 

警告:あなたはPayPalの取引でカスタムフィールドを保存している場合

にのみ適用されます。

トランザクションに最大7つのカスタムフィールドを保存することはできますが、PayPalのNVP APIはトランザクションのカスタムフィールドを最大3つまで返します。よりクレイジーでも、それが返すカスタムフィールドの1つは、の第2のカスタムフィールドの複製です。少なくとも、それはトランザクションからカスタムフィールドを取得しようとする場合です。

+1

一部の研究の後、私はREST APIが以前のAPIとは異なることを発見しました。実際に支払いを受ける前に、API経由でカスタムリンクを生成し、そのリンクにユーザーをリダイレクトする必要があります。ユーザーが購入を確認した後、APIを使用して手動で支払いを実行する必要があります。また、https://developer.paypal.com/docs/api/payments/#payment_executeからお金が送信されません。この応答には顧客情報も含まれます。 – maddo7

+0

うん。それは便利です。だからあなたは実際に顧客のPayPal支払いを処理するものでなければならないのですか?トランザクションID番号だけに基づいてトランザクション情報を取得する方法があることを願っています。 –

関連する問題