在网站中实现支付系统时,保护个人信息和在处理支付卡交易时实施安全措施是责任。PayFlowPro Hosted Checkout Page 可以帮助满足PCI合规性标准。它在PayPal页面上进行支付,该页面位于网站之外,因此无需在网站上收集客户的支付相关信息,如信用卡号、有效期等。
首先,需要注册PayFlowPro账户。点击注册PayFlowPro账户。账户创建后,需要配置托管结账页面。请参阅文档,它包含了创建PayFlowPro沙箱账户和配置托管结账页面的完整信息。
以下是使用PayFlowPro托管结账页面进行支付的步骤:
在启动支付过程之前,需要向PayFlowPro提交支付信息。PayFlowPro提供了传递这些值的参数。
$parameters = array();
$parameters['AMT'] = '100';
$parameters['CURRENCY'] = 'USD';
$parameters['FIRSTNAME'] = '***';
$parameters['LASTNAME'] = '***';
$parameters['PHONENUM'] = '***';
$parameters['EMAIL'] = '***';
$parameters['STREET'] = '***';
$parameters['STATE'] = '***';
$parameters['CITY'] = '***';
$parameters['USER'] = '***';
$parameters['VENDOR'] = '***';
$parameters['PARTNER'] = '***';
$parameters['PWD'] = '***';
SECURETOKENID - 随机36个字母数字字符。SECURETOKENID - 应该对每个测试是唯一的,意味着需要为每次测试支付生成新的ID。
$parameters['SECURETOKENID'] = '***';
$parameters['CREATESECURETOKEN'] = 'Y';
$parameters['TRXTYPE'] = 'S';
如果想使用实时账户进行支付,请在下面的代码中使用URL https://payflowpro.paypal.com 而不是 https://pilot-payflowpro.paypal.com。
$curl_url = 'https://pilot-payflowpro.paypal.com';
$curl_param = array();
foreach($parameters as $key => $value) {
$curl_param[] = "$key=$value";
}
$curl_params = implode('&', $curl_param);
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_VERBOSE => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $curl_params,
);
$ch = curl_init($curl_url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$response_status = curl_getinfo($ch);
curl_close($ch);
if($content != '') {
$response = array();
foreach(explode('&', $content) as $item) {
$key_value = explode('=', $item);
$response[$key_value[0]] = $key_value[1];
}
if(isset($response['RESULT']) && $response['RESULT'] == '0') {
$securetoken = $response['SECURETOKEN'];
$securetokenid = $response['SECURETOKENID'];
} else {
print_r($content);
}
}
一旦从PayFlowPro获得安全令牌,重定向页面到托管结账页面。如果想使用实时账户进行支付,请在下面的代码中使用URL https://payflowlink.paypal.com 而不是 https://pilot-payflowlink.paypal.com。
if(!empty($securetoken) && !empty($securetokenid)) {
$querystring = array(
'SECURETOKEN' => $securetoken,
'SECURETOKENID' => $securetokenid,
);
header('Location: https://pilot-payflowlink.paypal.com?'. http_build_query($querystring, '', '&'));
exit;
}
完成支付过程后,PayFlowPro会将页面提交回网站。根据托管结账页面的设置,从 $_POST 或 $_GET 变量中读取响应。在感谢页面上打印PNREF唯一ID。
if($_POST['RESULT'] == 0) {
print 'Thank you for your payment, please note transaction number ' . $_POST['PNREF'];
}
1. 创建PayFlowPro账户并设置托管结账页面,记得将返回URL配置为 "response.php"(完整URL)。只有这样,PayPal才会重定向回自定义页面 "response.php"。
2. 在文件 testpayment.php 中更新适当的 '***' 值并保存文件,记得为 'SECURETOKENID' 使用唯一值,需要在每次测试支付中更改此参数的值。