PHP第三方易宝支付对接

简言:

最近手头有个数字藏品的项目,需要对接第三方易宝支付,在此整理自己的对接经验,希望对大家有所帮助。

步骤

1,下载sdk

PHP第三方支付易宝支付最新sdk包,其中包含回调。-PHP文档类资源-CSDN下载

2,调起支付

注意将其中的appid、apiPrivateKey、apiPrivateKey、merchantNo等参数替换成自己的测试/正式参数。

public function unifiedorder($order_no, $user, $totalFee, $order_sale_id,$orderType,$payType) {
        
    // 跳转地址
    $return_url = config('base_h5_url'). "pages/order/index";
    // SDK 初始化文件加载
    vendor('yoppay.YopRequest');
    $request = new \YopRequest($this->appid, $this->apiPrivateKey);

    $notify_url = 'https://XXX.com/notice.php';
    //加入请求参数,参考手册
    $request->addParam("parentMerchantNo", $this->parentMerchantNo);                                        //发起方商户编号
    $request->addParam("merchantNo", $this->merchantNo);                //收款商户编号
    $request->addParam("orderId", $order_no);                          //订单号   
    $request->addParam("orderAmount", $totalFee);                      //订单金额  
    $request->addParam("goodsName", "testgoods");                       //商品信息
    $request->addParam("notifyUrl", $notify_url);//回调通知地址
    $request->addParam("redirectUrl", $return_url);//跳转地址    

    //提交Post请求,第一个参数为手册上的接口地址
    vendor('yoppay.YopRsaClient');	
    $response = \YopRsaClient::post("/rest/v1.0/trade/order", $request);
    // if($response->validSign==1){
    //      echo "返回结果签名验证成功!\n";
    // }

    $data=$this->object_array($response);
    $token=$data['result']['token'];

    $date=date_create();
    $cashter = array(
            "appKey"=> $this->appid,
            "merchantNo" => $this->merchantNo,
            "token" => $token,
            "timestamp" => date_timestamp_get($date),
            "directPayType" => "YJZF",
            "cardType" => "",
            "userNo" => "",
            "userType" => "ID_CARD",
            "ext" => "",
    ); 

    $getUrl = $this->getUrl($cashter, $this->apiPrivateKey);   
    $url = "https://cash.yeepay.com/cashier/std?" . $getUrl;
    return $url;
}

public function getUrl($response,$private_key){
    $content=$this->toString($response);
    include_once VENDOR_PATH . '/yoppay/Util/YopSignUtils.php';
    $sign=\YopSignUtils::signRsa($content,$private_key);
    $url=$content."&sign=".$sign;
    return  $url;
}

public function toString($arraydata){
    $Str="";
    foreach ($arraydata as $k=>$v){
       $Str .= strlen($Str) == 0 ? "" : "&";
        $Str.=$k."=".$v;
    }
    return $Str;
}

public function object_array($array) { 
    if(is_object($array)) { 
        $array = (array)$array; 
     } if(is_array($array)) { 
         foreach($array as $key=>$value) { 
             $array[$key] = YeePay::object_array($value); 
             } 
     } 
     return $array; 
}

成功标志:

 调起易宝支付,可以正常支付。

3,回调

public function notify() {
    include_once VENDOR_PATH . '/yoppay/Util/YopSignUtils.php';
    $source = $_REQUEST['response'];
    // 解密
    $result = \YopSignUtils::decrypt($source,$this->apiPrivateKey,$this->yeeversePublicKey);
    // 转化成数组
    $result = json_decode($result,'true');
    if ($result['status'] == 'SUCCESS') {
            // 订单支付成功业务处理
            $status = $model->onPaySuccess(PayTypeEnum::YEE_PAY, ['transaction_id' => $result['orderId']]);
            if ($status == false) {
                log_write('易宝业务处理失败:'.$model->getError(),'error');
                return 'FAILED';
            }
            return 'SUCCESS';
    }
    return 'FAILED';
}

成功标志:

订单支付状态更改为已支付状态 。

遇到的问题

1、回调不成功。

        首先要看自己的回调地址是否正确,要保证发起支付中回调地址参数传输正确。易宝支付只需要在发起支付的时候传递回调地址参数即可,不需要在易宝商户后台配置。

        如果回调不成功,就需要考虑自己服务器的问题,需要跟易宝支付的人对接沟通。详细问题描述,请移步易宝支付回调不成功问题处理

2、回调接收到信息无法解密。

        这里要考虑服务器配置问题,可能是接收信息被截取。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.文件列表说明 |-----------YeePayCommon.php(共通函数文件,不需要进行任何修改) |-----------merchantProperties.php(商家属性文件,商家可以在此文件中修改商家的ID和密钥和支付返回地址等信息) |-----------req.php (支付请求文件,通过此文件发起支付请求,商家可以在此文件中写入自己的订单信息等,然后把请求提交给易宝支付) |-----------callback.php(支付结果返回文件,通过此文件商家判断对应订单的支付成功状态,并且根据结果修改自己数据库中的订单状态) |-----------QueryOrder.php (易宝支付查询接口主程序) |-----------HttpClient.class.php (共通函数文件,用于服务器通讯) 2.商家测试可以先用易宝支付的测试商家测试成功再在merchantProperties.php文件中修改成自己的商家ID和密钥信息 $p1_MerId = "10001126856"; $merchantKey = "69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl"; 商家ID和密钥需要同时修改才有效 3.支付成功的返回URL请在merchantProperties.php文件中进行修改 $merchantCallbackURL = "http://localhost/callback.php"; 商家正式运行时,必须把自己的服务器部署在公网上的服务器上,这样支付成功后易宝支付的服务器才能支付结果及时返回给商家 为了商家技术工程师开发的方便,如果测试服务器在工程师自己的服务器上,可以把URL设定为localhost的方式,浏览器可以正式返回。 4.共通文件采用服务器包含的方式进行处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值