Silverstripe - 将数据发布到外部URL

时间:2016-06-10 08:02:25

标签: php forms post silverstripe

我在Silverstripe中设置了一个表单,在提交时将获取输入的所有数据,返回表单,然后向数据添加md5校验和。 完成所有操作后,需要发送到外部URL但我无法正常工作。

public function doPayment($data, Form $form) {
    $data['CHECKSUM'] = md5($data['NAME'].$data['SURNAME']);

有没有办法发送这个?

我试过

setFormAction 

但是一旦表单已经返回,它似乎不起作用。

由于

1 个答案:

答案 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!
    }
}