有高手用ThinkPHP集成过paypal快速支付吗?有很急的问题请教,急急!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有高手用ThinkPHP集成过paypal快速支付吗?有很急的问题请教,急急!相关的知识,希望对你有一定的参考价值。

各位 我是集成的自己网站,在集成快速支付的时候,点击继续!没产生交易记录,我是想解决这个问题,我就是问有高手集成过PayPal快速支付的吗?给解答下技术难点!求技术人员解答!顾问的别骚扰了

Paypal有两种支付接口方式:Auto return和IPN方式. pp代收
IPN方式通过服务器端直接提交信息的方式,最大限度的避免了由于用户中途关闭浏览器等引起的掉单

但如果您是个人免费PAYPAL帐户,就只能使用Auto Return方式.
IPN只对Business 或 Premier PayPal account开放

下面分别说一下两种支付接口方式下分别如何操作

Auto return 方式 代收Paypal

1.进入paypal后台,
2.开启Auto Return及Payment Data Transfer
点击 My Account标签.
点击the Profile 子标签.
点击Website Payment Preferences链接
点击Auto Return节的On单选项
点击Payment Data Transfer节的On单选项
点击save按钮进行保存
3在保存后,你可以看到在Payment Data Transfer小节的下方出现了一串名为Identity Token的字符串,把它记录下来备后用;
4.进入温州网上商城后台进入支付方式设置
选择PAYPAL支付(Auto return方式) ---在某些版本下可能误为Auto reply
填入您的PAYPAL帐号
在私钥位置填入您前面记录的Identity Token字符串
(注:请查看一下,由于原来我们的私钥数据库字段长为40,但PAYPAL的Identity Token达到了60位,因此请先更新一下数据库)
选择您愿意接受的货币种类
保存.
参考技术A 你好追问

哎 你们是无处不在啊!!加上你们解决不了问题!!

追答

有关paypal的疑问可以扣扣我用户名,若有必要,可以协助申请技术支持。
paypal顾问

参考技术B 哈,我顶一下楼主的帖子。

Thinkphp整合添加paypal sdk进行支付的测试

添加一个支付扩展,首先第一步我们需要找到文档,如果有相关的sdk最好。

paypal的文档和sdk地址:

https://github.com/paypal/PayPal-PHP-SDK

https://github.com/paypal/PayPal-PHP-SDK/wiki

示例代码:https://github.com/paypal/PayPal-PHP-SDK/tree/master/sample

支付流程:https://developer.paypal.com/docs/api/quickstart/payments/

第二步,我们需要开发者账号。

https://www.paypal.com/注册一个账号,然后到https://developer.paypal.com登陆

接下来我们需要sandbox账号,一个是买家一个是卖家。(注意,不要创建两个中国区的账号,因为Paypal规定中国之间的账户无法实现支付,据说是外汇监管的问题)

有了账号后,我们现在创建一个应用,生成Client IDSecret

 

------------------------

然后我们下载一个thinkphp框架,使用composer安装php的sdk,在框架根目录下运行

composer require paypal/rest-api-sdk-php:*

安装成功后,我们接下来怎么使用。

看了文档https://github.com/paypal/PayPal-PHP-SDK/wiki

他基本上要做的事情有两样,

1,生成一个跳转的支付链接。

2,做一个回调地址接收数据。

支付流程:

---------------------------------------------------

我们在thinkphp中建一个pay的应用

添加控制器Index.php

<?php
namespace app\\pay\\controller;
use think\\Controller;
class Index extends Controller

    public function index()
    
        $apiContext = new \\PayPal\\Rest\\ApiContext(
		        new \\PayPal\\Auth\\OAuthTokenCredential(
		            'AYSq3RDGsmBLJE-otTkBtM-jBRd1TCQwFf9RGfwddNXWz0uFU9ztymylOhRS',     // ClientID
		            'EGnHDxD_qRPdaLdZz8iCr8N7_MzF-YHPTkjs6NKYQvQSBngp4PTTVWkPZRbL'      // ClientSecret
		        )
		);
		/*sandbox 模式*/
		$apiContext->setConfig(array('mode' => 'sandbox'));


		$payer = new \\PayPal\\Api\\Payer();
		$payer->setPaymentMethod('paypal');

		$amount = new \\PayPal\\Api\\Amount();
		$amount->setTotal('1.00');
		$amount->setCurrency('USD');

		$transaction = new \\PayPal\\Api\\Transaction();
		$transaction->setAmount($amount);

		$redirectUrls = new \\PayPal\\Api\\RedirectUrls();
		$sn=time();
		$redirectUrls->setReturnUrl("http://t1.com/pay/Index/returnUrl/sn/".$sn)
		    ->setCancelUrl("http://t1.com/pay/Index/cancelUrl/sn/".$sn);

		$payment = new \\PayPal\\Api\\Payment();
		$payment->setIntent('sale')
		    ->setPayer($payer)
		    ->setTransactions(array($transaction))
		    ->setRedirectUrls($redirectUrls);

		try 
		    $payment->create($apiContext);
		    echo $url=$payment->getApprovalLink();
		    echo "<br><a href='".$url."'>点击支付</a>\\n";
		
		catch (\\PayPal\\Exception\\PayPalConnectionException $ex) 
		    echo $ex->getData();
		
    

    public function returnUrl()
    	$apiContext = new \\PayPal\\Rest\\ApiContext(
		        new \\PayPal\\Auth\\OAuthTokenCredential(
		            'AYSq3RDGsmBLJE-otTkBtM-jBRd1TCQwFf9RGfwddNXWz0uFU9ztymylOhRS',     // ClientID
		            'EGnHDxD_qRPdaLdZz8iCr8N7_MzF-YHPTkjs6NKYQvQSBngp4PTTVWkPZRbL'      // ClientSecret
		        )
		);
		/*sandbox 模式*/
		$apiContext->setConfig(array('mode' => 'sandbox'));


        // Get payment object by passing paymentId
		$paymentId = $this->request->param('paymentId');
		$payment = new \\PayPal\\Api\\Payment();
		$payment = $payment->get($paymentId, $apiContext);
		$payerId = $this->request->param('PayerID');

		// Execute payment with payer ID
		$execution = new \\PayPal\\Api\\PaymentExecution();
		$execution->setPayerId($payerId);

		try 
			// Execute payment
			$result = $payment->execute($execution, $apiContext);
			if ($result && isset ( $result->state ) && $result->state == 'approved') 
				echo "支付成功";
			else
				echo "支付失败";
				var_dump($result);
			
		 catch (PayPal\\Exception\\PayPalConnectionException $ex) 
		  echo $ex->getCode();
		  echo $ex->getData();
		  die($ex);
		 catch (Exception $ex) 
		  die($ex);
		
    
    public function cancelUrl()
    	echo '取消支付';
    

运行http://t1.com/pay得到一个支付的跳转链接,点击

登陆进行支付

 

 

支付成功后,跳转到我们原来设置的url.

 

到这里我们就把paypal在thinkphp走了一遍过程。

 

以上是关于有高手用ThinkPHP集成过paypal快速支付吗?有很急的问题请教,急急!的主要内容,如果未能解决你的问题,请参考以下文章

Paypal 与 java 的集成

Thinkphp整合添加paypal sdk进行支付的测试

Thinkphp整合添加paypal sdk进行支付的测试

Thinkphp各大支付平台在线支付集成源码

网站支付标准和 PayPal 支付 Pro 之间的快速结帐差异

Thinkphp各大支付平台在线支付集成源码