河南刘贵商务服务有限公司
企业网站建设 , 网页制作 , 网站策划 , 商城网站设计 , 团购网站策划
在线发卡系统对接第三方支付的客户案例

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



步骤

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; 

}

成功标志:


 调起汇聚支付,可以正常支付。


633042594.jpg


3,回调

public function notify() {

    $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、回调接收到信息无法解密。

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

展开全文
优质商家推荐 拨打电话