Php facebook信用卡回调,订单id更改,移动到新服务器后格式更改

Php facebook信用卡回调,订单id更改,移动到新服务器后格式更改,php,facebook-credits,Php,Facebook Credits,我刚刚迁移到一个新服务器,仍然基于linux。 搬家后,我看到行为发生了变化——出于某种原因,facebook credits回调在有效负载中发送的订单id格式如下: 2.6040261734251E+14 而不是:143121239125639 (这些订单号不一定相同,请参考格式) 当从$\u请求获取格式时,在DB insert之前,格式直接到达。。。 有人知道为什么格式会这样改变/到达吗? 谢谢 ---编辑--- 我使用parse_signed_request函数从签名请求中获取变量:

我刚刚迁移到一个新服务器,仍然基于linux。 搬家后,我看到行为发生了变化——出于某种原因,facebook credits回调在有效负载中发送的订单id格式如下: 2.6040261734251E+14 而不是:143121239125639 (这些订单号不一定相同,请参考格式)

当从$\u请求获取格式时,在DB insert之前,格式直接到达。。。 有人知道为什么格式会这样改变/到达吗? 谢谢

---编辑--- 我使用parse_signed_request函数从签名请求中获取变量:

    function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    mail('example@example.com','server error','Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check signature
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}
正如Charley p.所注意到的,我实际上使用的是32位服务器,而不是以前的64位服务器。这会破坏上面使用的函数吗

json_decode(base64_url_decode($payload), true);

再次感谢…

您的旧服务器必须是64位的,而您的新服务器必须是32位的


尝试使用原始数字作为字符串

结尾处的
E+14
表示有14个尾随的0…非常奇怪。。。当输入到DB时,它实际上几乎正常,但如果是真的,最后一个数字变为0…谢谢你的回答。。。我没有对该值进行任何数字操作,我只是在从签名请求获取该值并对其进行解码时传递true facebooks parse_signed_request函数。。。你知道我有点死胡同吗…@Yanipan所以问题是你数据库中的最终数字?能否提供一个将数字插入表格的代码示例?