我已经在我的应用程序中使用alredy启用未来的付款权限,并使用开发人员dashboard.but但不工作,请找到错误
http://developer.paypal.com/并登录
https://developer.paypal.com/developer/accountStatus在那里你可以看到你有什么允许.
$data = array(
                "intent" => "authorize","payer" => array(
                    "payment_method" => "paypal"
                ),"transactions" => array(
                    array("amount" => array(
                        "currency" => "USD","total" => "1.88"
                    ),"description" => "future of sauces")
                ));

        $data_string = json_encode($data);
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,"https://api.sandBox.paypal.com/v1/payments/payment");
        $headers = array(
            'Content-Type: application/json','PayPal-Client-Metadata-Id: d6743cbb53ea4470a53bfe458f0cb885','Authorization: Bearer A103.B7d5318JDS6NA1zGh02avjCx16oxnBPadUat5z9SlGVGEiOhoAeMuqyz0anGSICS.FAkzECypTS1IXfemHcpVa5yyrGu',);
        curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
        //curl_setopt($ch,CURLINFO_HEADER_OUT,true);
        curl_setopt($ch,CURLOPT_POST,CURLOPT_POSTFIELDS,$data_string);
        $result = curl_exec($ch);
        $information = curl_getinfo($ch);
        curl_close($ch);
        print_r($information);
        die;

放在这里

{"name":"PERMISSION_DENIED","message":"No permission for the requested operation","information_link":"https://developer.paypal.com/docs/api/#PERMISSION_DENIED","debug_id":"5b39efd4cf370"}Array
(
    [url] => https://api.sandBox.paypal.com/v1/payments/payment
    [content_type] => application/json
    [http_code] => 403
    [header_size] => 592
因为我没有得到任何人的任何解决方案,所以我逐步挖掘我的代码,并找到解决方案.
function paypalFuturePayment($userID,$amount)
{
    $amount=number_format($amount,2);
    /* paypal App truxx dev client and secret key*/
    if($userID && $amount){
    $userData = selectById('tbl_users','*',"id='".$userID."'");
    $refresh_token = $userData['paypal_refresh_tokens'];
    $Metadata_id = $userData['paypal_Metadata_id'];
    if($refresh_token && $Metadata_id){
        if ($_SERVER['SERVER_NAME'] == 'syonserver.com') {

            $clientId = "xxxxx";
            $secret = "xxx";

            $url1="https://api.sandBox.paypal.com/v1/oauth2/token";
            $url2="https://api.sandBox.paypal.com/v1/payments/payment";

        }else{
            $account = 0; // 0 for sandBox,1 for live
            if ($account == 1) {
                //client live
                $clientId = "xxx";
                $secret = xxx";
                $url1 = "https://api.paypal.com/v1/oauth2/token";
                $url2 = "https://api.paypal.com/v1/payments/payment";
            } else {
                //client sandBox
                $clientId = "xxx";
                $secret = "xxx";
                $url1 = "https://api.sandBox.paypal.com/v1/oauth2/token";
                $url2 = "https://api.sandBox.paypal.com/v1/payments/payment";
        }
    }



//print_r($refresh_token);die;

        $ch = curl_init();
        curl_setopt($ch,$url1);
        curl_setopt($ch,CURLOPT_HEADER,"Content-Type: application/x-www-form-urlencoded");
        curl_setopt($ch,CURLOPT_USERPWD,$clientId . ":" . $secret);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,"grant_type=refresh_token&refresh_token=" . $refresh_token);
        $result = curl_exec($ch);
        curl_close($ch);
        $result=json_decode($result);

       //11111111   for payment Authorize: For example,to first authorize the payment,use a request similar to this:

        $access_token =  $result->access_token;
        $data = array(
            "intent" => "authorize","payer" => array(
                "payment_method" => "paypal"
            ),"transactions" => array(
                array("amount" => array(
                    "currency" => "USD","total" => $amount
                ),"description" => "future of sauces")
            ));

        $data_string = json_encode($data);
        $ch1 = curl_init();
        curl_setopt($ch1,$url2);
        $headers = array(
            'Content-Type: application/json','PayPal-Client-Metadata-Id: '.$Metadata_id,'Authorization: Bearer '.$access_token,'Content-Length: ' . strlen($data_string)
        );
        curl_setopt($ch1,$headers);
        curl_setopt($ch1,true);
        curl_setopt($ch1,1);
        curl_setopt($ch1,$data_string);
        $result1 = curl_exec($ch1);
        curl_close($ch1);

        $result1=json_decode($result1);
        $message  = $result1->message;

       if($result1->state=='approved'){
           $access_id=  $result1->transactions[0]->related_resources[0]->authorization->id;

       }else{
           if(empty($message)){
               $message ='Authorization error,Please try again.';
           }
           return array('response' => '','success' => '0','message'=>$message);
       }

       // print_r($result1);die;

      //2222222   capture the payment:
        $data =  array("amount" => array(
            "currency" => "USD","total" => $amount
        ),"is_final_capture" => "true"
        );
        $data_string = json_encode($data);
        $ch2 = curl_init();
        if ($_SERVER['SERVER_NAME'] == 'syonserver.com') {
            curl_setopt($ch2,"https://api.sandBox.paypal.com/v1/payments/authorization/$access_id/capture");
        }else {
            $account = 0; // 0 for sandBox,1 for live
            if ($account == 1) {
                //client live
             curl_setopt($ch2,"https://api.paypal.com/v1/payments/authorization/$access_id/capture");
        }else{
                curl_setopt($ch2,"https://api.sandBox.paypal.com/v1/payments/authorization/$access_id/capture");
            }
        }

        $headers = array(
            'Content-Type: application/json','Content-Length: ' . strlen($data_string)
        );
        curl_setopt($ch2,$headers);
        curl_setopt($ch2,true);
        curl_setopt($ch2,1);
        curl_setopt($ch2,$data_string);
        $response = curl_exec($ch2);
        curl_close($ch2);

        $response_a = json_decode($response,true);
        $state = $response_a['state'];
        $message = $response_a['message'];
        if(!empty($response_a)){
            if($state=='completed') {
                return array('response' => $response_a,'success' => '1','message'=>'Data received');
            }else{
                if(empty($message)){
                    $message ='Payment authorization error,Please try again.';
                }
                return array('response' => '','message'=>$message);
             }
        }
       else{
           return array('response' => '','success'=>'0','message'=>'Response nil');
           }
        }
      else
        {
            return array('response' => '','message'=>'Authorization code not available.');
        }
}else{

        return array('response' => '','message'=>'Unauthorize request.');

    }
}

php – 在我的代码沙箱PayPal的未来付款是什么问题的更多相关文章

  1. PhoneGap / iOS上的SQLite数据库 – 超过5mb可能

    我误解了什么吗?Phonegap中的sqlitedbs真的有5mb的限制吗?我正在使用Phonegap1.2和iOS5.解决方法您可以使用带有phonegap插件的原生sqliteDB,您将没有任何限制.在iOS5.1中,Websql被认为是可以随时删除的临时数据…

  2. ios – 使用带有NodeJs HTTPS的certificates.cer

    我为IOS推送通知生成了一个.cer文件,我希望将它与NodeJSHTTPS模块一起使用.我发现HTTPS模块的唯一例子是使用.pem和.sfx文件,而不是.cer:有解决方案吗解决方法.cer文件可以使用两种不同的格式进行编码:PEM和DER.如果您的文件使用PEM格式编码,您可以像使用任何其他.pem文件一样使用它(有关详细信息,请参见Node.jsdocumentation):如果您的文件使

  3. 如何使用iOS SDK保存LinkedIn访问令牌?

    我在我的iOS应用程序中使用LinkedIn.我想保存访问令牌以供将来使用.令牌属于非属性类型,无法直接保存在NSUserDefaults中.我尝试使用NSKeyedArchiver,但我得到了输出:令牌中的文本即将到来,但值将为空.代码段1:我也尝试像这样保存,但结果是一样的:代码段2:我的编码或访问令牌有什么问题需要一些特殊技术来保存吗?请建议.解决方法这就是我拯救的方式.它对我有用.希望它有所帮助以这种方式使用保存的responseBody我希望这次我很清楚

  4. ios – CFNetwork内部错误:URLConnectionLoader.cpp:289

    当我在一段时间后打开我的应用程序时,我收到了日志:440:CFNetworkinternalerror(0xc01a:/buildroot/Library/Caches/com.apple.xbs/Sources/CFNetwork/CFNetwork-758.4.3/Loading/URLConnectionLoader.cpp:289)它从未出现在过去.我的项目使用网络库AFNetworkin

  5. ios – 使用大写符号在字符串swift中获取URL的正则表达式

    我尝试在文本中获取URL.所以,在此之前,我使用了这样一个表达式:但是当用户输入带有大写符号的URL时(例如Http://Google.com,它与它不匹配)我遇到了问题.我试过了:但什么都没发生.解决方法您可以使用正则表达式中的i内联标志关闭区分大小写,有关可用正则表达式功能的详细信息,请参阅FoundationFrameworkReference.(?ismwx-ismwx)Flagsetti

  6. ios – 如何处理退款/取消应用内购买

    我正在尝试处理iOS的退款应用内购买.但我找不到明确的指导方针来做到这一点.所以我有一个会员类型的应用程序内购买功能,其中用户凭据不一定与itunes帐户绑定.当有人进行购买时,我可以参考哪种标识符,并且当他们通过苹果申请退款时具有相同的标识符?我需要立即取消会员资格.谢谢!解决方法我最终存储了收据字符串并运行cron来完成事务并查找取消字段.

  7. ios – xcode在更新可可豆荚后出现体系结构错误的重复符号

    编辑:执行下面显示的解决方案后,我的项目只编译iPadAir,我不能再存档,我仍然得到相同的错误…

  8. ios – UIWebView中的WebSQL / SQLite数据库的最大大小(phonegap)

    我知道一般来说,Web应用程序的本地存储空间有5MB的限制.本地网页浏览应用程式是否也有这个限制?

  9. IOS Facebook身份验证使用node.js passport-facebook-token

    我正在尝试使用来自IOS应用程序的passport-facebook-token对node.jsapi进行身份验证.我有用户名和密码验证设置,并通过护照和护照-facebook-token设置正常工作.我只是无法弄清楚将访问令牌发送到API所需的HTTP请求语法.任何帮助都将受到大力赞赏.谢谢.解决方法确定设法从passport-facebook-token的策略文件中找出答案这个需要:http://URL?access_token=[访问令牌]从IOS我只是用以下方法测试:希望这有助于其他人.

  10. 解析条纹iOS main.js

    我真的很难让ParseStripe在我的项目中工作.此时,我想要最简单的工作版本,允许我向用户收费.我找到答案的最接近的事情如下:SimplestExampleI’veFound当我使用上面链接中的更正代码时,我的秘密得到以下错误:请帮助=**(这太令人沮丧了.————-更新—————-其他一些帖子也有类似的错误,看起来最新版本的ParseCloud代码应该归咎于:1.6.0.在控制台视图中使用以

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部