简言:
最近手头有个数字藏品的项目,需要对接第三方易宝支付,在此整理自己的对接经验,希望对大家有所帮助。
步骤
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、回调接收到信息无法解密。
这里要考虑服务器配置问题,可能是接收信息被截取。