支付php
⑴ php怎么调用支付接口
由于各公司的支付接口虽说理论的架构相似,但是运用的技术还是不同的。不能混用的。。
一般大型的网店系统的接口部分的代码也都是根据CASE语句判断后,函数跳转到相应的公司的支付接口部分。把接口分开放置在不同的文件夹下面,之后判断调用。
例如:网银的接口一个文件夹、财付通的一个文件夹、支付宝的一个文件夹。
⑵ PHP开发Paypal支付,支付流程和接口实现方案
近期由于要开发公司外贸商城,需要对接Paypal支付。在开发过程中发现有好多坑。文档都是英文文档(主要还是自己英文水平不过关)、网上找的那些翻译过的文档老旧、沙箱环境网站卡的要让人崩溃。整个过程真是让人头大,经过各种翻天覆地的网络、google、论坛终于功夫不负有心人跑通了。下面就结合网上的文档给大家说说如何开发Paypal支付(一个Demo),避免大家在踩坑。
3.开启PDT设置同步回调地址(这步拿到at_token return回调使用)
3.项目根目录下创建return.php文件
4.项目根目录下创建cancel.php文件
目前网上的文档感觉没有一个整体流程详细的介绍,而且有些比较老。本篇文章是汇总整理并加入了一些自己的改造和踩坑分享而已。文介绍了paypal支付的其中一种方式,还有一种SDK的方式,这两种有点小区别但是整体的流程还是一样是。等后续会和大家分享另一种方式。还请各位大佬多多指教。
⑶ PHP对接第三方支付渠道之微信支付v3版本
文接上篇 PHP如何更科学地接入第三方渠道 ,既然已经写到这了,索性创建了一个gitee仓库,地址: https://gitee.com/wuzhh/tp6-payment ,有需要的可以去看看。
言归正传,微信支付v3版本刚推出不久,鉴于微信官方一贯语焉不详的尿性,论坛上自然仍旧一片哀嚎,鄙人一路踩坑下来,倒也还算顺利,把过程分享给大家参考~
在微信商户平台中找到API安全,这一步按照官方提示操作即可,比较简单不再赘述
注意,第1步中导出的证书有三个文件,以我的经验只有apiclient_key.pem是有用的,apiclient_cert.pem则没什么用(没发现它有什么用),拿到apiclient_key.pem的路径之后:
上面是官方提供的命令,此处:
apiV3key = 设置的v3秘钥
mchId = 商户号
mchPrivateKeyFilePath = apiclient_key.pem的路径
mchSerialNo = 商户API证书序列号
outputFilePath = 微信支付平台证书的存储路径
你可能会问,-c参数填啥?这里需要说一下这个参数是验证证书用的,填的是微信支付平台证书的路径,因为我们现在是 第一次创建证书,所以-c参数不需要填写 ,需要特别注意一下。
这样就能确保上文注入的支付实例都有共同的支付和回调方法
有部分方法文中没上,我个人的项目中用上了,就暂且保留吧
通知部分过段时间再更,明天就算端午节就更到这了,有需要的小伙伴可以留言,我争取尽快补上~
⑷ 如何利用PHP语言开发平台第三方支付接口
第一步:签订合约通过第三方拿到接口(可以邮件形式发送、也可以在第三方系统下载),拿到接口后,要确认下接口类型,是否是自己需要的接口,比如B2C接口、B2B接口等类型。
第二步:支付接口分很多语言版本,比如ASP、JSP、PHP、.NET语言版本,所以要选择与自己网站语言匹配的接口进行安装。商城网站的技术一般比较清楚商城的开发语言。
第三步:拿到的支付接口一般包括接口文档和接口代码示例,选择合适的接口代码示例,进行联调,比如自己网站是PHP开发的,就选择PHP代码示例联调。
第四步:接口联调的时候,需要第三方支付提供联调测试账号,方可以联调。联调除了需要联调账号除外,还需要该账号的支付密钥,联调过程中,有什么问题,可以直接找第三方支付技术支持给予协调处理。
第五步:接口联调通过后,可先换成生产环境账号,进行交易测试,测试没问题后,可以放到商城网站进行交易。
⑸ 如何利用PHP实现 APP端微信支付功能
一丶PHP后台后台生成预支付交易单,返回正确的预支付交易回话标识后再在APP里面调起支付!官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
根据文档拼接微信需要的参数,这里需要几个方法,直接上代码!
传输给微信的参数要组装成xml格式发送,传如参数数组!
publicfunctionToXml($data=array())
{
if(!is_array($data)||count($data)<=0)
{
return'数组异常';
}
$xml="";
foreach($dataas$key=>$val)
{
if(is_numeric($val)){
$xml.="<".$key.">".$val."";
}else{
$xml.="<".$key.">";
}
}
$xml.="";
return$xml;
}
2.生成随机字符串,微信所需参数!这里方法很多,看自己爱好都行!
functionrand_code(){
$str='';//62个字符
$str=str_shuffle($str);
$str=substr($str,0,32);
return$str;
}
3.这里是微信比较重要的一步了,这个方法会多次用到!生成签名
privatefunctiongetSign($params){
ksort($params);//将参数数组按照参数名ASCII码从小到大排序
foreach($paramsas$key=>$item){
if(!empty($item)){//剔除参数值为空的参数
$newArr[]=$key.'='.$item;//整合新的参数数组
}
}
$stringA=implode("&",$newArr);//使用&符号连接参数
$stringSignTemp=$stringA."&key="."************************";//拼接key
//key是在商户平台API安全里自己设置的
$stringSignTemp=MD5($stringSignTemp);//将字符串进行MD5加密
$sign=strtoupper($stringSignTemp);//将所有字符转换为大写
return$sign;
}
4.传递参数给微信,生成预支付订单!接收微信返回的数据,在反给APP端,APP端调用支付接口,完成支付!APP端所需参数见微信文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2
publicfunctionwx_pay(){
$nonce_str=$this->rand_code();//调用随机字符串生成方法获取随机字符串
$data['appid']='wxdbc5dc*******';//appid
$data['mch_id']='1493*****';//商户号
$data['body']="APP支付测试";
$data['spbill_create_ip']=$_SERVER['HTTP_HOST'];//ip地址
$data['total_fee']=1;//金额
$data['out_trade_no']=time().mt_rand(10000,99999);//商户订单号,不能重复
$data['nonce_str']=$nonce_str;//随机字符串
$data['notify_url']='https://www.5wx.org/';接收支付后的通知,必须为能直接访问的网址,不能跟参数
$data['trade_type']='APP';//支付方式
//将参与签名的数据保存到数组注意:以上几个参数是追加到$data中的,$data中应该同时包含开发文档中要求必填的剔除sign以外的所有数据
$data['sign']=$this->getSign($data);//获取签名
$xml=$this->ToXml($data);//数组转xml
//curl传递给微信方
$url="https://api.mch.weixin.qq.com/pay/unifiedorder";
//header("Content-type:text/xml");
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
if(stripos($url,"https://")!==FALSE){
curl_setopt($ch,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
}else{
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
}
//设置header
curl_setopt($ch,CURLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1);
curl_setopt($ch,CURLOPT_HEADER,FALSE);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
//设置超时
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch,CURLOPT_POST,TRUE);
//传输文件
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);
//运行curl
$data=curl_exec($ch);
//返回结果
if($data){
curl_close($ch);
//返回成功,将xml数据转换为数组.
$re=$this->FromXml($data);
if($re['return_code']!='SUCCESS'){
json("201",'签名失败');
}
else{
//接收微信返回的数据,传给APP!
$arr=array(
'prepayid'=>$re['prepay_id'],
'appid'=>'wxdbc5dc*****',
'partnerid'=>'14937****',
'package'=>'Sign=WXPay',
'noncestr'=>$nonce_str,
'timestamp'=>time(),
);
//第二次生成签名
$sign=$this->getSign($arr);
$arr['sign']=$sign;
json('200','签名成功',$arr);
}
}else{
$error=curl_errno($ch);
curl_close($ch);
json('201',"curl出错,错误码:$error");
}
}
5.将xml数据转换为数组,接收微信返回数据时用到.
publicfunctionFromXml($xml)
{
if(!$xml){
echo"xml数据异常!";
}
//将XML转为array
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
$data=json_decode(json_encode(simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA)),true);
return$data;
}
二.APP支付成功后,会调用你填写的回调地址.返回参数详见微信文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3
//微信支付回调
functionwx_notify(){
//接收微信返回的数据数据,返回的xml格式
$xmlData=file_get_contents('php://input');
//将xml格式转换为数组
$data=$this->FromXml($xmlData);
//用日志记录检查数据是否接受成功,验证成功一次之后,可删除。
$file=fopen('./log.txt','a+');
fwrite($file,var_export($data,true));
//为了防止假数据,验证签名是否和返回的一样。
//记录一下,返回回来的签名,生成签名的时候,必须剔除sign字段。
$sign=$data['sign'];
unset($data['sign']);
if($sign==$this->getSign($data)){
//签名验证成功后,判断返回微信返回的
if($data['result_code']=='SUCCESS'){
//根据返回的订单号做业务逻辑
$arr=array(
'pay_status'=>1,
);
$re=M('order')->where(['order_sn'=>$data['out_trade_no']])->save($arr);
//处理完成之后,告诉微信成功结果!
if($re){
echo'';exit();
}
}
//支付失败,输出错误信息
else{
$file=fopen('./log.txt','a+');
fwrite($file,"错误信息:".$data['return_msg'].date("Y-m-dH:i:s"),time()." ");
}
}
else{
$file=fopen('./log.txt','a+');
fwrite($file,"错误信息:签名验证失败".date("Y-m-dH:i:s"),time()." ");
}
}
在这里,微信APP支付流程就成功走完了!谢谢支持!
---------------------
⑹ 如何用PHP实现微信支付,求教。新手!说明详细点
以PHP语言为例,对微信支付的开发流程进行一下说明:
1.获取订单信息。
2.根据订单信息和支付相关的账号生成sign,并且生成支付参数。

3.将支付参数信息POST到微信服务器,获取返回信息。
4.根据返回信息生成相应的支付代码(微信内部)或是支付二维码(非微信内),完成支付。
⑺ 对接的易支付服务器里生成的php是干什么的
获取服务器端数据。易支付插件是基于PHP开发的一款新风格快捷易支付系统源码,为了获取服务器端数据。易支付是广东易支付网络科技有限公司的简称,是一家以第三方支付模式开展银行卡收单业务的专业拓展机构。
⑻ php开发微信支付要多久
1到5天。使用php开发微信支付时,由于审核速度较慢,需要花费1到5天的时间。微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全、便捷、专业的在线支付服务。
⑼ php为什么支付成功了返回fail
php支付成功了返回fail是因为后台处理成功了,但是页面报错导致提示错误。
<?php
$service = isset( $_GET [ 'service' ]) ? $_GET [ 'service' ] : 'create_direct_pay_by_user' ;
$services = array( //交易类型
'create_direct_pay_by_user' => '即时到账' ,
'create_partner_trade_by_buyer' => '担保交易' ,
);
if(! array_key_exists ( $service , $services )) exit( '错误的交易类型' );
?>
<p style="border:2px dotted blue;width:auto;">
<label>请选择交易类型:</label>
<?php foreach ( $services as $key => $val ): ?>
<?php if( $service == $key ): ?>
<b style="color:red"><?php echo $val ; ?> </b>
<?php else: ?>
<b><a href="<?php echo url (array( 'service' => $key )); ?> "><?php echo $val ; ?> </a></b>
<?php endif; ?>
<?php endforeach; ?>
</p>
<?php
//php支付宝支付接口参数 主要如下
//(合作商户编号,加密串,返回url, 默认编码,商品名称,商品简介,商户订单号,物流配送费用)
function getRequestUrl ( $partner , $scode , $return_url , $charset , $subject , $body , $order , $lfee ) {
global $data , $service ;
# 支付宝交易类型
$data [ 'service' ] = $service ; //create_partner_trade_by_buyer[担保交易]create_direct_pay_by_user[即时到账]
# 合作商户编号
$data [ 'partner' ] = $partner ;
# 请求返回地址
$data [ 'return_url' ] = $return_url ;
# 默认编码
$data [ '_input_charset' ] = $charset ;
# 默认支付渠道
$data [ 'paymenthod' ] = 'bankPay' ;
# 默认的网银
$data [ 'defaultbank' ] = 'ICBCB2C' ;
# 商品名称
$data [ 'subject' ] = $subject ;
# 商品展示URL
$data [ 'show_url' ] = ’‘ ;
# 异步通知返回
$data [ 'notify_url' ] = ’‘ ;
# 商品简介
$data [ 'body' ] = $body ;
# 商户订单号
$data [ 'out_trade_no' ] = $order ;
# 物流配送费用
$data [ 'logistics_fee' ] = $lfee ;
# 物流费用付款方式
$data [ 'logistics_payment' ] = 'SELLER_PAY' ; //SELLER_PAY(卖家支付)、BUYER_PAY(买家支付)、BUYER_PAY_AFTER_RECEIVE(货到付款)
# 物流配送方式
$data [ 'logistics_type' ] = 'POST' ; //物流配送方式:POST(平邮)、EMS(EMS)、EXPRESS(其他快递)
# 价格
$data [ 'price' ] = '10.00' ;
#$data['total_fee'] = '10.00';
# 付款方式
$data [ 'payment_type' ] = '1' ;
# 商品数量
$data [ 'quantity' ] = '1' ;
# 卖家email
$data [ 'seller_email' ] = '[email protected]' ;
$data = array_filter ( $data );
ksort ( $data ); reset ( $data );
$data [ 'sign' ] = md5 ( urldecode ( http_build_query ( $data )). $scode );
$data [ 'sign_type' ] = 'MD5' ;
$url = 'https://www.alipay.com/cooperate/gateway.do?' . http_build_query ( $data );
return $url ;
}
//把支付宝接口的参数 带入进去测试
$url = getRequestUrl ( '2010101908738750' , '' , 'http://www.c1991.com/demo/pay/callback.php?gateway=alipay' , 'UTF-8' , '测试商品' , '测试内容' , uniqid (), '0.00' );
⑽ PHP 支付方式
对form表单的auction进行控制例如
switch(this.getAttribute('pay-form')){
case'ali':form.action="/wrap/pay/dopay";break;
case'wx':form.action="/wrap/pay/wxpay";break;
default:form.action="/wrap/pay/dopay";
}
