我在Silverstripe中设置了一个表单,在提交时将获取输入的所有数据,返回表单,然后向数据添加md5校验和。 完成所有操作后,需要发送到外部URL但我无法正常工作。
public function doPayment($data, Form $form) {
$data['CHECKSUM'] = md5($data['NAME'].$data['SURNAME']);
有没有办法发送这个?
我试过
setFormAction
但是一旦表单已经返回,它似乎不起作用。
由于
答案 0 :(得分:0)
你真的不应该重新加载表单来添加MD5。这样,用户仍然可以在提交表单数据之前修改表单数据(从而使表单无效)。
您应该做的是获取表单数据,计算哈希并将所有内容直接发送到服务器(例如,支付提供商)。您可以使用curl来电或guzzle库。
使用guzzle,您的代码可能如下所示:
use GuzzleHttp\Client;
public function doPayment($data, Form $form)
{
$data['CHECKSUM'] = md5($data['NAME'].$data['SURNAME']);
$client = new Client([
'base_uri' => 'https://paymentprovider.tld'
]);
$response = $client->request('POST', 'https://paymentprovider.tld/pay', [
'form_params' => $data
]);
if ($response->getStatusCode() === 200) {
// sucesss!
}
}