paypal作为国际在线支付的一种比较常用的收款工具,在现在的国际电子商务中使用的非常多,这里将就paypal支付接口与企业自己的网上电子商务系统之间沟通作一详细描述。
常见的电子商务系统实现的流程如下:
客户在系统内下订单 -> 将订单的金额信息提交到paypal网站 -> 客户在paypal上付款 -> paypal将客户的付款完成信息发送给电子商务系统 -> 系统收到paypal信息后确定客户订单已经付款 -> 进行发货等后续流程。
问题:在centos7.0下安装的php5.6+Apache2.4每次去提交订单的信息就会有CURL报错,明明是安装过的,后来安装了php5.4就可以了,一直不明白是什么原因;代码如下:
1、这是前端页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>paypal在线支付演示下载PHP版</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta content="php paypal演示下载,paypal源码下载" name="keywords"/>
<meta content="PHP payal在线演示源码下载,paypal信用卡支付,paypal银联支付" name="description"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" />
</head>
<body>
<div class="head">
<div class="head_inner clearfix">
<ul id="nav">
<li><a 页</a></li>
<li><a
<li><a
<li><a
</ul>
</div>
</div>
<div class="container">
<div class="demo">
<h2 class="title"><a
<div class="content">
<div class="table-responsive">
<table class="table_parameters" width="100%">
<thead>
<tr class="tr_head">
<th>订单号</th>
<th>交易号</th>
<th>付款金额</th>
<th>付款时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<foreach name="lists" item="row">
<tr>
<td align="left">{$row.order_no}</td>
<td align="center">{$row.trade_no}</td>
<td align="center">{$row.order_money} {$row.unit_name}</td>
<td align="center"><if condition="$row.update_time gt 0">{$row.update_time|date="m-d H:i",###}</if></td>
<td align="center"> <a class="green" target="_blank">付款</a></td>
</tr>
</foreach>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="foot">
Powered by erdangjiade.com 本站皆为作者原创,转载请注明原文链接:<a target="_blank">www.erdangjiade.com</a>
</div>
</body>
</html> 2、这是主控代码
<?php
namespace Home\Controller;
use Think\Controller;
class PaypalController extends Controller {
public function get_token() {
$config = C("paypal");
$order_no = I("get.order_no");
if (empty($order_no)) {
echo json_encode(array("code" => "order_no_null", "result" => "订单号参数为空"));
exit;
}
$order_info = M("order")->field("unit_name,order_money")->where("order_no = '" . $order_no . "'")->find();
if (empty($order_info)) {
echo json_encode(array("code" => "order_null", "result" => "订单为空"));
exit;
}
$order_money = $order_info['order_money'];
if ($order_money > 0) {
} else {
echo json_encode(array("code" => "money", "result" => "订单金额有误"));
exit;
}
$currency = get_paypay_currency($order_info['unit_name']);
$data = array(
'USER' => $config['USER'],
'PWD' => $config['PWD'],
'SIGNATURE' => $config['SIGNATURE'],
'VERSION' => $config['VERSION'],
"PAYMENTREQUEST_0_PAYMENTACTION" => "Sale",
"L_PAYMENTREQUEST_0_AMT0" => $order_money,
"L_PAYMENTREQUEST_0_QTY0" => "1",
"PAYMENTREQUEST_0_ITEMAMT" => $order_money,
"PAYMENTREQUEST_0_AMT" => $order_money,
"PAYMENTREQUEST_0_AMT" => $order_money,
"RETURNURL" => "" . C("SITE_URL") . "Paypal/checkout/order_no/" . $order_no . "",
"CANCELURL" => "http://localhost/test/paypal/cancel.php",
"METHOD" => "SetExpressCheckout",
"NOSHIPPING" => 1,
// "L_PAYMENTREQUEST_0_NAME0" => "商品名称1",
// "L_PAYMENTREQUEST_0_DESC0" => "商品描述2",
"PAYMENTREQUEST_0_CURRENCYCODE" => $currency, //货币符号EUR,美元USD,https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/
);
$curl_token_arr = curl_post($config['URL_NVP'], $data); //获取token
if ($curl_token_arr['ACK'] != 'Success') {
echo json_encode(array("code" => "token_fail", "result" => "获取token失败"));
exit;
}
$token = $curl_token_arr['TOKEN'];
header("Location: https://www.paypal.com/checkoutnow?token=" . $token . "");
}
public function checkout() {
$config = C("paypal");
$token = $_REQUEST['token'];
$PayerID = $_REQUEST['PayerID'];
$detail = array(
'USER' => $config['USER'],
'PWD' => $config['PWD'],
'SIGNATURE' => $config['SIGNATURE'],
'VERSION' => $config['VERSION'],
"PAYMENTREQUEST_0_PAYMENTACTION" => "Sale",
"TOKEN" => $token,
"METHOD" => "GetExpressCheckoutDetails"
);
$curl_detail = curl_post($config['URL_NVP'], $detail); //获取买家的信息
$data = array(
'USER' => $config['USER'],
'PWD' => $config['PWD'],
'SIGNATURE' => $config['SIGNATURE'],
'VERSION' => $config['VERSION'],
"PAYMENTREQUEST_0_PAYMENTACTION" => "Sale",
"PAYERID" => $PayerID,
"TOKEN" => $token,
"PAYMENTREQUEST_0_AMT" => $curl_detail['PAYMENTREQUEST_0_AMT'],
"PAYMENTREQUEST_0_CURRENCYCODE" => $curl_detail['PAYMENTREQUEST_0_CURRENCYCODE'],
"L_PAYMENTREQUEST_0_NAME0" => "商品名称1",
"L_PAYMENTREQUEST_0_DESC0" => "商品描述2",
"METHOD" => "DoExpressCheckoutPayment"
);
$curl_token_arr = curl_post($config['URL_NVP'], $data); //获取token
// print_r($curl_token_arr);
if ($curl_token_arr['PAYMENTINFO_0_PAYMENTSTATUS'] != 'Completed') {
echo "付款失败";
exit;
}
$order_no = $_REQUEST['order_no'];
$data['pay_type'] = $curl_token_arr['PAYMENTINFO_0_PAYMENTTYPE'];
$data['state'] = 1;
$data['update_time'] = time();
$data['trade_no'] = $curl_token_arr['PAYMENTINFO_0_TRANSACTIONID'];
M("order")->where("order_no = '" . $order_no . "'")->save($data);
// echo M("order")->getLastSql();
$order_info = M("order")->field("id,order_money,order_no,unit_name,update_time,trade_no")->where("order_no = '" . $order_no . "'")->find();
$this->assign("order_info", $order_info);
$this->display();
}
}
?>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
大神不太懂,求教
$config['VERSION']
$config['URL_NVP']
这两个参数从哪里获取的?