2017-10-25 9 views
0

これは私がmerchantidを交換し、実際の値必須フィールドがないことを示すrealex:[/ request/sha1hash]。エラーメッセージ

$ merchantid =「merchantid」でアカウントDCCを使用しています完全なソースコードです。 $ secret = "secret"; $ account = 'account';

これは私がハッシュ

以下
$tmp = "$timestamp.$merchantid.$orderid.$amountinCents.$currency.$cardnumber"; 
$md5hash = md5($tmp); 
$tmp = "$md5hash.$secret"; 
$md5hash = md5($tmp); 

を作成していますどのようにそれは私を返すコード

$xml = "<request type='auth' timestamp='$timestamp'> 
    <merchantid>$merchantid</merchantid> 
    <account>$account</account> 
    <orderid>$orderid</orderid> 
    <amount currency='$currency'>$amountinCents</amount> 
    <DCC_ENABLE>1</DCC_ENABLE> 
    <card> 
     <number>$cardnumber</number> 
     <expdate>$expdate</expdate> 
     <type>$cardtype</type> 
     <chname>$cardname</chname> 
     <cvn> 
      <number>$cvvno</number> 
      <presind>1</presind> 
     </cvn> 
    </card> 
    <dccinfo> 
     <ccp>euroconex</ccp> 
     <type>1</type> 
     <ratetype>S</ratetype> 
     <amount currency='$currency'>$amountinCents</amount> 
    </dccinfo> 
    <autosettle flag='1'/> 
    <md5hash>$md5hash</md5hash> 
    <tssinfo> 
     <address type=\"billing\"> 
      <country>ie</country> 
     </address> 
    </tssinfo> 
</request>"; 

// Send the request array to Realex Payments 
$ch = curl_init();  
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.realexpayments.com/epage-remote.cgi"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "payandshop.com php version 0.9"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //This should always be set to 'TRUE' when in production to ensure the SSL is enabled. 
$response = curl_exec ($ch);  
curl_close ($ch); 
$parseXML = simplexml_load_string($response); 
echo "<pre>";print_r($parseXML);die(); 

を送信するXMLである "320内部エラーが発生しました。"メッセージ 私は何が間違っているのか分かりませんDCC機能を追加したいのですが。

+0

こんにちはParitosh、 私は私の答えで述べたように、MD5の代わりにSHA1を使用してください。 さらに、この「」は無効です。その行を削除してください。 この認証を送信する前に、DCCレート検索リクエストを処理していることをもう一度確認することはできますか? https://developer.realexpayments.com/#!/api/dcc/dcc-rate ショーン –

+0

こんにちはおかげで、私はあなたが.removedコメントで言及変更を加える必要がありxmlファイルと使用から「1」 sha1 '$ tmp =" $ timestamp。$ merchantid。$ orderid。$ amountinCents。$ currency。$ cardnumber "; $ sha1Hash = sha1($ tmp); $ tmp = "$ sha1Hash。$ secret"; $ sha1Hash = sha1($ tmp); 'とS \t \t <金額通貨= '$通貨'> $ amountinCents 'それはまだ私に同じエラーメッセージを表示** 'だけでなく fexcoをDCC情報を渡します[結果] => 320 [メッセージ] =>内部エラーが発生しました。** –

答えて

0

ご質問ありがとうございます。まず、MD5の代わりにトランザクションの詳細をハッシュするために、SHA1アルゴリズムを使用することを強くお勧めします。

第二に、あなたはあなたの要求のXMLを投稿しませんでしたが、それは次の形式に従う必要があります。

<?xml version='1.0' encoding='UTF-8'?> 
<request type='auth' timestamp='20171025141809'> 
<merchantid>Merchant ID</merchantid> 
<account>internet</account> 
<channel>ECOM</channel> 
<orderid>N6qsk4kYRZihmPrTXWYS6g</orderid> 
<amount currency='EUR'>1001</amount> 
<card> 
    <number>4263970000005262</number> 
    <expdate>0519</expdate> 
    <chname>James Mason</chname> 
    <type>VISA</type> 
    <cvn> 
     <number>123</number> 
     <presind>1</presind> 
    </cvn> 
</card> 
<autosettle flag='1'/> 
<comments> 
    <comment id='1'>Mobile Channel</comment> 
    <comment id='2'>Down Payment</comment> 
</comments> 
<sha1hash>87707637a34ba651b6185718c863abc64b673f20</sha1hash> 
</request> 

あなたが要求XMLでsha1hash要素を持っていることを確認してくださいすることができ、それが移入されていること適切な値で置き換えます。

ベスト、

ショーン

Realex支払い

+0

更新された質問がありますのでご覧ください。 –

+0

こんにちは、応答に感謝します。私のスクリプトは今うまく動いています。私はちょうど(dccのない)以前のものを確認したいのですが、dccの機能を追加した後、「batchid」という1つのパラメータが返されています。実際に必要とされるものであることから、応答から削除されたものもあります。ありがとうございました。 –

+0

私が使用したリクエストのように、より多くの情報が必要になります。承認のためには、常にバッチIDを受け取ります。 DCCレートルックアップリクエストの場合、バッチが含まれていないため、1つも受信しません。取得したレートを承認に使用するだけです。 –

関連する問題