前言
第三方支付接口nicepay是印度的一个聚合支付接口。
对接过程
组织参数->签名->提交->处理返回->跳转支付链接->支付->处理异步和同步返回
提交函数
代码语言:javascript复制采用post/json方式提交数据
public function http_post($url, $sendInfo)
{
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 不直接输出,返回到变量
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // 连接超时(秒)
curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 执行超时(秒)
curl_setopt($ch, CURLOPT_POSTFIELDS, $sendInfo);
$curl_result = curl_exec($ch);
curl_close($ch);
return $curl_result;
} catch (Exception $e) {
return null;
}
}
组织签名
代码语言:javascript复制提交订单数据之前,为保证安全性需要签名
//签名
public function get_sign($srcArray, $merKey){
if(null == $srcArray){
return "123456";
}
//先干掉sign字段
$keys = array_keys($srcArray);
$index = array_search("sign", $keys);
if ($index !== FALSE) {
array_splice($srcArray, $index, 1);
}
//对数组排序
ksort($srcArray);
//生成待签名字符串
$srcData = "";
foreach ($srcArray as $key => $val) {
if($val === null || $val === "" ){
//值为空的跳过,不参与加密
continue;
}
$srcData .= "$key=$val" . "&";
}
$srcData = substr($srcData, 0, strlen($srcData) - 1);
//生成签名字符串
$sign = md5($srcData.$merKey);
return $sign;
}