0

誰でもこれを設定するのを手伝ってもらえますか?

これは役に立ちます: https://developers.fortumo.com/cross-platform-mobile-payments/

秘密鍵とウィジェットがセットアップされているので、クエリでコイン + 1 などをデータベースに追加する必要がありますが、成功した支払いビットに挿入されたコードは実行されません。だから、新たにやり直す時が来ました。

どんな助けでも大歓迎です。

<?php

  // check that the request comes from Fortumo server
  if(!in_array($_SERVER['REMOTE_ADDR'],
array('1.2.3.4', '2.3.4.5'))) {
header("HTTP/1.0 403 Forbidden");
die("Error: Unknown IP");
  }

  // check the signature
  $secret = ''; // insert your secret between ''
  if(empty($secret) || !check_signature($_GET, $secret)) {
header("HTTP/1.0 404 Not Found");
die("Error: Invalid signature");
      }

  $sender = $_GET['sender'];//phone num.
  $amount = $_GET['amount'];//credit
  $cuid = $_GET['cuid'];//resource i.e. user
  $payment_id = $_GET['payment_id'];//unique id
  $test = $_GET['test']; // this parameter is present only when the payment is a test payment, it's value is either 'ok' or 'fail'

  //hint: find or create payment by payment_id
  //additional parameters: operator, price, user_share, country

  if(preg_match("/completed/i", $_GET['status'])) {
// mark payment as successful
  } 

  // print out the reply
  if($test){
echo('TEST OK');
  }
  else {
echo('OK');
  }

  function check_signature($params_array, $secret) {
ksort($params_array);

$str = '';
foreach ($params_array as $k=>$v) {
  if($k != 'sig') {
    $str .= "$k=$v";
  }
}
$str .= $secret;
$signature = md5($str);

return ($params_array['sig'] == $signature);
  }
?>
4

1 に答える 1

0

コード例の最初の行は、リクエストが Fortumo IP アドレスからのものであることを検証します。そうでない場合、スクリプトは終了します。

// check that the request comes from Fortumo server
if(!in_array($_SERVER['REMOTE_ADDR'],
    array('1.2.3.4', '2.3.4.5'))) {
    header("HTTP/1.0 403 Forbidden");
    die("Error: Unknown IP");
}

検証する最新の IP アドレスを取得するには、support@fortumo.com に連絡してください (例の値 1.2.3.4 をそれらに置き換えます)。

その間、ip チェックをコメントアウトして、スクリプトの作成を続けることができます。

于 2016-04-12T08:10:35.030 に答える