• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PHP第三方易宝支付对接

武飞扬头像
蹦跶哒的王小哲
帮助1

简言:

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

学新通

步骤

1,下载sdk

2,调起支付

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

  1.  
    public function unifiedorder($order_no, $user, $totalFee, $order_sale_id,$orderType,$payType) {
  2.  
     
  3.  
    // 跳转地址
  4.  
    $return_url = config('base_h5_url'). "pages/order/index";
  5.  
    // SDK 初始化文件加载
  6.  
    vendor('yoppay.YopRequest');
  7.  
    $request = new \YopRequest($this->appid, $this->apiPrivateKey);
  8.  
     
  9.  
    $notify_url = 'https://XXX.com/notice.php';
  10.  
    //加入请求参数,参考手册
  11.  
    $request->addParam("parentMerchantNo", $this->parentMerchantNo); //发起方商户编号
  12.  
    $request->addParam("merchantNo", $this->merchantNo); //收款商户编号
  13.  
    $request->addParam("orderId", $order_no); //订单号
  14.  
    $request->addParam("orderAmount", $totalFee); //订单金额
  15.  
    $request->addParam("goodsName", "testgoods"); //商品信息
  16.  
    $request->addParam("notifyUrl", $notify_url);//回调通知地址
  17.  
    $request->addParam("redirectUrl", $return_url);//跳转地址
  18.  
     
  19.  
    //提交Post请求,第一个参数为手册上的接口地址
  20.  
    vendor('yoppay.YopRsaClient');
  21.  
    $response = \YopRsaClient::post("/rest/v1.0/trade/order", $request);
  22.  
    // if($response->validSign==1){
  23.  
    // echo "返回结果签名验证成功!\n";
  24.  
    // }
  25.  
     
  26.  
    $data=$this->object_array($response);
  27.  
    $token=$data['result']['token'];
  28.  
     
  29.  
    $date=date_create();
  30.  
    $cashter = array(
  31.  
    "appKey"=> $this->appid,
  32.  
    "merchantNo" => $this->merchantNo,
  33.  
    "token" => $token,
  34.  
    "timestamp" => date_timestamp_get($date),
  35.  
    "directPayType" => "YJZF",
  36.  
    "cardType" => "",
  37.  
    "userNo" => "",
  38.  
    "userType" => "ID_CARD",
  39.  
    "ext" => "",
  40.  
    );
  41.  
     
  42.  
    $getUrl = $this->getUrl($cashter, $this->apiPrivateKey);
  43.  
    $url = "https://cash.yeepay.com/cashier/std?" . $getUrl;
  44.  
    return $url;
  45.  
    }
  46.  
     
  47.  
    public function getUrl($response,$private_key){
  48.  
    $content=$this->toString($response);
  49.  
    include_once VENDOR_PATH . '/yoppay/Util/YopSignUtils.php';
  50.  
    $sign=\YopSignUtils::signRsa($content,$private_key);
  51.  
    $url=$content."&sign=".$sign;
  52.  
    return $url;
  53.  
    }
  54.  
     
  55.  
    public function toString($arraydata){
  56.  
    $Str="";
  57.  
    foreach ($arraydata as $k=>$v){
  58.  
    $Str .= strlen($Str) == 0 ? "" : "&";
  59.  
    $Str.=$k."=".$v;
  60.  
    }
  61.  
    return $Str;
  62.  
    }
  63.  
     
  64.  
    public function object_array($array) {
  65.  
    if(is_object($array)) {
  66.  
    $array = (array)$array;
  67.  
    } if(is_array($array)) {
  68.  
    foreach($array as $key=>$value) {
  69.  
    $array[$key] = YeePay::object_array($value);
  70.  
    }
  71.  
    }
  72.  
    return $array;
  73.  
    }
学新通

成功标志:

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

学新通

3,回调

  1.  
    public function notify() {
  2.  
    include_once VENDOR_PATH . '/yoppay/Util/YopSignUtils.php';
  3.  
    $source = $_REQUEST['response'];
  4.  
    // 解密
  5.  
    $result = \YopSignUtils::decrypt($source,$this->apiPrivateKey,$this->yeeversePublicKey);
  6.  
    // 转化成数组
  7.  
    $result = json_decode($result,'true');
  8.  
    if ($result['status'] == 'SUCCESS') {
  9.  
    // 订单支付成功业务处理
  10.  
    $status = $model->onPaySuccess(PayTypeEnum::YEE_PAY, ['transaction_id' => $result['orderId']]);
  11.  
    if ($status == false) {
  12.  
    log_write('易宝业务处理失败:'.$model->getError(),'error');
  13.  
    return 'FAILED';
  14.  
    }
  15.  
    return 'SUCCESS';
  16.  
    }
  17.  
    return 'FAILED';
  18.  
    }
学新通

成功标志:

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

遇到的问题

1、回调不成功。

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

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

学新通

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

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

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfecgh
系列文章
更多 icon
同类精品
更多 icon
继续加载