PHP构造HPP加密JSON时field_configuration嵌套格式报错问题
HPP配置嵌套PHP数组语法问题解决方案
你遇到的报错由两个常见问题导致:
- 你提供的目标JSON片段本身存在语法错误:
"body"对象闭合后多了一个冗余逗号,不符合JSON语法规范 - 编写PHP嵌套数组时,层级括号不匹配、数组元素末尾冗余逗号都会触发「期望]符号」的语法解析错误
正确嵌入写法
JSON结构和PHP数组的对应规则很简单:JSON的对象({}包裹的键值对)对应PHP关联数组,JSON的顺序数组([]包裹的有序值)对应PHP索引数组,按层级嵌套即可。
修正后完整的json_encode入参数组代码如下,可直接替换原有代码段:
$data = json_encode([ 'id' => '11e8052891d6420cb7a5ca18', 'stylesheet_url' => 'https://127.0.0.1/css/payform.css', 'redirect_url_on_approve' => 'https://some.full.url', 'redirect_url_on_decline' => 'https://www.bing.com', 'redirect_url_delay' => '15', 'parent_send_message' => 0, 'hide_optional_fields' => 0, 'min_payment_amount' => '10', 'max_payment_amount' => '20', // 嵌入field_configuration配置段 'field_configuration' => [ 'body' => [ 'fields' => [ [ 'id' => 'transaction_amount', 'label' => 'Amount', 'value' => '25.00' ] // 如需新增支付页字段,直接在该数组内追加关联数组即可 ] ] ] ]);
避坑提示
- PHP7.4以下版本不支持数组最后一个元素后加尾随逗号,写数组时注意最后一个元素后面不要留多余逗号,否则会直接触发语法错误
- 调试时可以先单独输出
echo json_encode($data, JSON_PRETTY_PRINT);,把输出的JSON和预期结构做比对,确认结构正确后再执行后续加密逻辑,能大幅降低排错成本 - 加密逻辑部分不需要做任何修改,只要传入
json_encode的数组结构正确,就能生成符合HPP要求的加密参数
内容的提问来源于stack exchange,提问作者Daniel Yeager
相关产品推荐
相关产品推荐

