外贸独立站之国外支付接口Paypal对接

2023-02-08    分类: 网站建设

1.首先去开发者平台注册测试账号,注册网站是
2.好了之后再进入Sandbox建立测试用的Paypal虚拟帐号(至少应该建立一个Business的和一个Personal的),这个虚拟帐号可以建一个商家号和一个支付号,可用于测试,里面的金额可以自由设定。
3.商家号那里一般填写的是邮箱(测试的时候,正式的商家号不是邮箱)。
4.需要注意的是:
5.1、把相关配置信息尽量放到数据库中。
6.2、测试帐号下的支付完成后是不会触发异步回调地址的,需要到开发者平台的去模拟相关触发。
7.3、为了回调支付准确,增加了一个可以自定义的验证密钥,参与加密验证。
8.基本配置信息:
function__construct(){
parent::__construct();
$testConfig=array(
'payUrl'=>'https://www.sandbox.paypal.com/cgi-bin/webscr',//支付地址
'business'=>'3HSV6******',//商家号
'currency_code'=>'USD',//支付币种具体代码可参考:https://developer.paypal.com/docs/classic/api/currency_codes/
'lc'=>'US',//支付页面的语言具体代码可参考:https://developer.paypal.com/docs/classic/api/country_codes/
'key'=>'siteape',//个人加密字符串
);
$prodConfig=array(
'payUrl'=>'https://www.paypal.com/cgi-bin/webscr',//支付地址
'business'=>'3HSV6******',//商家号
'currency_code'=>'USD',//支付币种具体代码可参考:https://developer.paypal.com/docs/classic/api/currency_codes/
'lc'=>'US',//支付页面的语言具体代码可参考:https://developer.paypal.com/docs/classic/api/country_codes/
'key'=>'siteape',//个人加密字符串
);
$payConfig=$testConfig;//这里切换测试环境和生产环境
$this->payConfig=$payConfig;
}
9.paypal支付提交处理
publicfunctionpaypalpay(){
$oid=I('oid');
//数据信息
$order=M('order')->find($oid);//订单信息
if(!$order){
$this->display('Public:404');
exit();
}
$data=$this->payConfig;
//订单详情信息
$orderDetail=M('order_detail')->where(array('oid'=>$oid))->select();
$goodsInfo='';
foreach($orderDetailas$k=>$v){
$product=M($v['name'])->field('title')->find($v['pid']);
$product_color=M($v['name'].'_colors')->field('title')->find($v['color_id']);
$goodsInfo.=$product['title'].'-'.$product_color['title'].'-'.$v['diameter'].'-'.$v['number'].'-';
}
//加密传值
$signSrc='';
$signArr=array(
'invoice'=>$order['order_num'],//自定义订单号
'key'=>$data['key'],//自定义的加密字符串
);
foreach($signArras$k=>$v){
$signSrc.=$v;
}
$signInfo=strtoupper(hash("sha256",$signSrc));
//表单提交
$formData=array(
'cmd'=>'_xclick',
'business'=>$data['business'],
'item_name'=>string_replace($goodsInfo),
'currency_code'=>$data['currency_code'],
'amount'=>$order['real_money'],
'notify_url'=>C('PROTOCOL').$_SERVER['SERVER_NAME'].U('Pay/paypalnotifyurl'),
'return'=>C('PROTOCOL').$_SERVER['SERVER_NAME'].U('Order/info',array('order_num'=>$order['order_num'],'paypal'=>1)),//支付成功后网页跳转地址把order_num带上
'cancel_return'=>C('PROTOCOL').$_SERVER['SERVER_NAME'].U('Order/info',array('order_num'=>$order['order_num'])),//用户取消支付后跳转的地址
'invoice'=>$order['order_num'],//自定义订单号
'no_shipping'=>1,
'custom'=>$signInfo,//自定义变量原样返回订单id号
'charset'=>'utf8',
'lc'=>$data['lc'],
);
header("Content-type:text/html;charset=utf-8");
//输出提交表单
$payForm=''.inputs($formData).'';
echo$payForm;
}
10.paypal回调地址
publicfunctionpaypalnotifyurl(){
$data=$this->payConfig;
//加密接收值
$getData=array(
'invoice'=>I('post.invoice'),
'key'=>$data['key'],
);
//键名和键值和上面的原加密字符串一致
$payment_status=I('post.payment_status');
$custom=I('post.custom');//接收的加密字符串
$signSrc='';
foreach($getDataas$k=>$v){
$signSrc.=$v;
}
$signInfo=strtoupper(hash("sha256",$signSrc));
//验证与修改
if($signInfo==$custom&&$payment_status=='Completed'){
//改变订单的状态为已支付
$saveData=array(
'pay_create_time'=>time(),
'pay_sign_info'=>$signInfo,
'status'=>2,
);
$re=M('order')->where(array('order_num'=>$getData['invoice']))->data($saveData)->save();
$payResult="Congratulations,paymentissuccessful!";
}else{
$payResult="Datavalidationfailed";
}
/*支付的异步记录备查*/
$logData=I('post.');
$logfile=.'/payPalLog_c451f8e6e53014.txt';
import("Org.Util.File");
$logObj=new\File($logfile);
$logfile=$logObj->getRealFile();
file_put_contents($logfile,serialize($logData),FILE_APPEND);
}
}
11.组装表单域
functioninputs($data){
$inputs='';
foreach($dataas$k=>$v){
$inputs.='';
}
return$inputs;
}

标题名称:外贸独立站之国外支付接口Paypal对接
分享网址:https://www.cdcxhl.com/news/235937.html

成都网站建设公司_创新互联,为您提供全网营销推广企业建站网站维护商城网站面包屑导航定制开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化