Php 如何在本文档中应用一些关于按字母顺序连接变量的逻辑?

Php 如何在本文档中应用一些关于按字母顺序连接变量的逻辑?,php,variables,text,concatenation,payment,Php,Variables,Text,Concatenation,Payment,下面的文档解释了如何在PHP中生成用于消息身份验证的MAC代码: 它说,您需要按字母顺序连接变量,例如: // parameters and values $code = “merchant”; $action = “get_order”; $return = “json”; $merchant_order_id = “808”; // concatenate the parameter values in alphabetical order by parameter name $plain

下面的文档解释了如何在PHP中生成用于消息身份验证的MAC代码:

它说,您需要按字母顺序连接变量,例如:

// parameters and values
$code = “merchant”;
$action = “get_order”;
$return = “json”;
$merchant_order_id = “808”;

// concatenate the parameter values in alphabetical order by parameter name
$plain = $action.$code.$merchant_order_id.$return;
正如您在上面的示例中所看到的,变量在PHP中是按字母顺序排列的,但是我从来没有听说过您可以在执行时知道变量的名称,这个API如何检查变量是否按字母顺序连接?我不明白。

除非您使用名称,否则它基本上只是说api希望参数按这个特定的顺序排列,而这个顺序恰好是字母顺序。我觉得这实际上是非常聪明的,可以确保开发人员以非常特定的方式实现字符串需求,SDK将是一种替代方案

否则,您可以使用一组键并将它们

更新2018/02/20

他们的代码通过按特定顺序连接字符串来构建签名

// concatenate the parameter values in alphabetical order by parameter name
$plain = $action.$code.$merchant_order_id.$return;
// then add the private authkey
$plain.= $authkey;
// now generate the signature using the md5() function
$signature = md5($plain);
$signature将是来自MD5函数的32个字符的字符串

如果您更改了用于构建$plain的变量的顺序,您将从md5函数收到不同的签名

API将接受您提供的有限数量的参数,并以完全相同的顺序执行相同的MD5函数,以确保请求未被修改


这里没有聪明的地方,简单的字符串连接,他们所需要的只是开发人员以完全相同的顺序执行MD5函数。你的解释没有回答我的问题,这是一个很好的方法,但不是答案。您忽略了它们没有使用变量名,在我公开的示例中,您只看到以手动方式按字母顺序排序的普通变量。它们有$a、$c、$z、$q,并且它们内爆$a.$c.$q.$z,但是php或API将如何检查连接是否按字母顺序。我很难理解。你能解释得更清楚些吗?@CrishkCorporation,我在我的答案后面加了一句
// concatenate the parameter values in alphabetical order by parameter name
$plain = $action.$code.$merchant_order_id.$return;
// then add the private authkey
$plain.= $authkey;
// now generate the signature using the md5() function
$signature = md5($plain);