PHP第三方易宝支付对接
简言:
最近手头有个数字藏品的项目,需要对接第三方易宝支付,在此整理自己的对接经验,希望对大家有所帮助。
步骤
1,下载sdk
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、回调接收到信息无法解密。
这里要考虑服务器配置问题,可能是接收信息被截取。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfecgh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01