paypal支付后台部分代码,框架用的thinkphp,有些代码不能直接复制,后台有几个坑要注意一下,生产模式填的不是production,是LIVE,四个字母都要大写(这个我吃了亏,查了好多外国资料才知道),并且切换调试CLIENT_ID和CLIENT_SECRET也要更换,调试模式为sanbox。
还有一点就是支付选的币种,你正式上线的时候,paypal的账号里面也必须拥有相应币种的支付
<?php
namespace PayApi\Controller;
vendor('PayPal.autoload');
use Think\Controller;
use Think\Log;
class TestController extends Controller {
private $CLIENT_ID = '你的CLIENT_ID';
private $CLIENT_SECRET = '你的CLIENT_SECRET';
public function getToken(){
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential($this->CLIENT_ID,$this->CLIENT_SECRET)
);
$apiContext->setConfig(
array(
'mode' => 'LIVE',
// 'log.LogEnabled' => true,
// 'log.FileName' => '../PayPal.log',
// 'log.LogLevel' => 'DEBUG', // PLEASE USE `INFO` LEVEL FOR LOGGING IN LIVE ENVIRONMENTS
// 'cache.enabled' => true,
//'cache.FileName' => '/PaypalCache' // for determining paypal cache directory
// 'http.CURLOPT_CONNECTTIMEOUT' => 30
// 'http.headers.PayPal-Partner-Attribution-Id' => '123123123'
//'log.AdapterFactory' => '\PayPal\Log\DefaultLogFactory' // Factory class implementing \PayPal\Log\PayPalLogFactory
)
);
return $apiContext;
}
// 创建PayPal付款账单
public function createPay(){
$money = I('post.money');
$user_id = I('post.user_id');
if (empty($money) || empty($order['user_id']) ) {
$result['msg'] = 'Parameter Error';
$result['code'] = 0;
}else{
$apiContext = $this->getToken();
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');
// 设置币种
$amount = new \PayPal\Api\Amount();
$amount->setTotal($money);
$amount-