欢迎大家来到IT世界,在知识的湖畔探索吧!
支付接口对接技术做多了以后你会发现,基本上所有的第三方第四方支付接口的基本方法流程就是这样,至于有些签名方式不一样,配置参数不一样等等,按照其提供的技术文档要求修改一下即可
做支付接口主要就以下这几个步骤:
第一步:准备所需的对接文档
向第三方平台索取支付文档,商户号及密匙.
第二步:获取订单信息
调用后台PHP接口,获取发起支付所需要的参数
第三步:根据接口文档填写参数
$params = array( 'userId' => self::$userId, 'timestamp' => time().'000', 'orderNo' => $order['out_trade_no'], 'amount' => $order['amount']*100, 'bankCode' => $extend["bankCode"], // 'bankCode' => '6', 'bankName' => $extend['bankName'], // 'bankName' => '中国工商银行', 'cardType' => '2', 'payType' => 'KJ_WEB', 'callBackUrl' => 'http://'.C('site_url').'/index.php/Pay/RongYaoPay/fastPay_notify', );
欢迎大家来到IT世界,在知识的湖畔探索吧!
常见需要填写订单号,金额,金额可能有以分为单位.商户号,密匙,支付方式,常见的有快捷支付和网关支付等,获取到数据之后,对数据进行处理,可能需要md5加密;
欢迎大家来到IT世界,在知识的湖畔探索吧!private function createSign($params = []) { $validParams = []; foreach($params as $key => $val) { if ($val !== '') { $validParams[$key] = $val; } } ksort($validParams, 0); $string = ''; // concat query string foreach($validParams as $k=>$v) { $string .= '&'.$k.'='.$v; } $stringKey = substr($string, 1, strlen($string)).'&key='.$this->key; $sign = md5($stringKey); return $sign; }
签名加密步骤:1、按字典排序拼接参数
2、在字符串后拼接key
3、MD5加密
4、按需将字符串全部转成大写
根据所需进行操作.然后通过curl进行调用第三方接口.
function curlPost($url, $data = ''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSLVERSION, 1);//这个值不设置有时会出现error 35情况 return curl_exec($ch); }
关于curl自行网上查询.如果能跳转到第三方支付界面.则第三方直接调用成功.
第四步:回调
通常在下单参数里面有需要填写回调地址,如若没有则需要跟第三方支付报备回调地址.回调地址是支付成功系统执行的步骤,通常是修改订单状态,更改用户信息等.在进行这些操作可能需要获取对应参数.如订单号,金额,还得进行签名验证等.只有签名验证通过后才能证明订单已被支付等.
处理支付回调
第一步,验签:
在验签之前,根据支付宝返回的外部订单号(out_trade_no)其实就是我们系统自己的内部订单号,去查一遍,看看订单是否真的存在,不存在,就没必要进行下去了
第二步,改变订单状态:
找出自己的订单,把相应的信息填上去就好了,这一步很简单
第三步,写入自己的系统逻辑:
这一步,建议将自己系统的逻辑完整的封装成一个类,我们这里直接调用逻辑类的主方法就可以了,代码的逻辑层次尽量分明。
加上下面的代码就基本完工了:
欢迎大家来到IT世界,在知识的湖畔探索吧!function verify_result($result) { if ($result) { echo 'success'; } else { echo 'fail'; } }
注意!成功时一定要返回的是字符串“success”,否则支付宝将重复进行回调操作 ,就是不断的来访问你的服务器。
OK,支付接口就接好了
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/63605.html