如何在PHP网站中实现支付服务

在网站中实现支付系统时,保护个人信息和在处理支付卡交易时实施安全措施是责任。PayFlowPro Hosted Checkout Page 可以帮助满足PCI合规性标准。它在PayPal页面上进行支付,该页面位于网站之外,因此无需在网站上收集客户的支付相关信息,如信用卡号、有效期等。

创建PayFlowPro账户

首先,需要注册PayFlowPro账户。点击注册PayFlowPro账户。账户创建后,需要配置托管结账页面。请参阅文档,它包含了创建PayFlowPro沙箱账户和配置托管结账页面的完整信息。

PHP中的支付服务

以下是使用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' 使用唯一值,需要在每次测试支付中更改此参数的值。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485