2017-07-31 12 views
0

PHPでのPayPalの統合は初めてです。 tutorialが見つかりました。 は今、私はサンドボックスに問題を抱えている:PHPでのPayPal EWPの実装

The email address for the business is not present in the encrypted blob. Please contact your merchant.

私は、電子メールや商人、私のサンドボックスアカウントのIDが、運を送信しようとしています。

マイコード:

$form = array('cmd' => '_s-xclick', 
     'cert_id' => '*************', 
     'business' => $bussiness_id, 
     'custom' => 'test', 
     //'invoice' => '...', 
     'currency_code' => 'EUR', 
     'no_shipping' => '1', 
     'item_name' => 'TestItem', 
     'item_number' => '12345', 
     'amount' => '10' 
    ); 

$encrypted = paypal_encrypt($form); 

function paypal_encrypt($hash) 
{ 

    ...trimmed... 

    $data = ""; 
    foreach ($hash as $key => $value) { 
     if ($value != "") { 
      //echo "Adding to blob: $key=$value\n"; 
      $data .= "$key=$value\n"; 
     } 
    } 

    $openssl_cmd = "($OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " . 
         "-outform der -nodetach -binary <<_EOF_\n$data\n_EOF_\n) | " . 
         "$OPENSSL smime -encrypt -des3 -binary -outform pem $PAYPAL_CERT_FILE"; 

    exec($openssl_cmd, $output, $error); 

    ...trimmed... 
}; 
?> 

PayPalのフォームがある:暗号化される

define("SANDBOX", 1); 

$bussiness_id="[email protected]***********"; 
if(SANDBOX) $bussiness_id="***********"; 

データ

<form action="https://<?php if(SANDBOX) echo "www.sandbox"; else echo "www"; ?>.paypal.com/cgi-bin/webscr" method="post" target=_blank> 
<input type="hidden" name="cmd" value="_s-xclick"> 
<input type="hidden" name="encrypted" value="<?php echo $encrypted; ?>"> 
<input type="submit" value="Pay"> 
</form> 

コードは、チュートリアルからサンプルだけで、Iあまり編集していない

+0

このメールアドレスをサンドボックスアカウントに追加しましたか? –

+0

@SirGalahadでした。これはサンドボックスアカウントの唯一のメールです。 –

+0

um、私はそれを見て、それはいくつかの問題を抱えている可能性があります:1.証明書またはキーファイルが正しく読み取られない可能性があります(許可が欠けているなど)2.あなたのOPENSSLバージョンに問題があるかもしれません。番号1の場合、変数2を変数にダンプすると、コマンドラインにコマンドをコピーして何が出てくるのかを確認するだけです –

答えて

0

IPNリクエストを確認している限り、暗号化は必要でないことがわかりました。

私は暗号化なしで支払いフォームを実装しました.IPNが来たときに、私はデータベースとPayPalに対してそれをチェックします。

すべてが一致した場合は、DBを更新し、注文を有料としてマークします。違いがある場合は、すべてをログに記録し、問題について自分自身にメールしてください。

関連する問題