| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- namespace app\api\complex;
- use ComplexThree\JuLe\joloRsa;
- /**
- * 233乐园
- */
- class Twothreethree implements ComplexInterface
- {
- private $channel = 'twothreethree';
- /**
- * ## 登陆 - 校验
- *
- * @param $data
- * @param $polyChannelGame
- *
- * @return false
- */
- public function getSpecialParam($data, $polyChannelGame = [])
- {
- return $data['user_id'];
- }
- // ## 登陆 - 登陆
- public function checkLogin($data, $polyChannelGame = [])
- {
- // 参数:user_id = uid, extparam = sid
- if (!isset($data['user_id']) || !isset($data['extparam'])) {
- return false;
- }
- if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
- return false;
- }
- $param = [
- 'uid' => $data['user_id'],
- 'sid' => $data['extparam'],
- ];
- ksort($param);
- $string = "";
- foreach ($param as $k => $v) {
- if($k == 'sign' || $v === '' || $v === null){
- continue;
- }
- if ($string) {
- $string .= "&{$k}={$v}";
- } else {
- $string = "{$k}={$v}";
- }
- }
- $string .= "&key=".$channelConfig['appSecret'];
- $sign = strtoupper(md5($string));
- $header = [
- 'Content-Type: application/json',
- 'APPKEY: '.$channelConfig['appKey'],
- 'SIGN: '.$sign,
- ];
- $param = json_encode($param);
- $res = getHttpPost('https://openapi.metaapp.cn/v2/user/auth', $param, $header);
- $res = json_decode($res, true);
- if ($res['code'] == 200) {
- return true;
- } else {
- return false;
- }
- }
- // ## 回调 - 效验
- public function paySign($data, $polyChannelGame = [])
- {
- $param = [
- 'tradeNo' => $data['tradeNo'], // 233平台对应的交易订单编号(具备唯一性)
- 'cpOrderId' => $data['cpOrderId'], // 供应商交易订单id(由供应商下单后出传入)
- 'productCode' => $data['productCode'], // 商品编号(供应商下单时提供)
- 'productName' => $data['productName'], // 商品名称(供应商下单时提供)
- 'productPrice' => $data['productPrice'], // 商品单价(单位:分【人民币分】)
- 'count' => $data['count'], // 订单购买购买数量
- 'nonce' => $data['nonce'], // 随机安全码(无业务意义,增加接口安全随机性)
- 'amount' => $data['amount'], // 订单原值金额(单位:分【人民币】),建议服务端做一下金额校验,避免被刷
- 'couponDeductAmount' => $data['couponDeductAmount'], // 优惠券抵扣金额(因优惠券而优惠的金额)(单位:分【人民币】),当该笔交易未使用优惠券时,值为0
- 'extra' => $data['extra']??'', // 扩展透传参数,当CP交易系统下单未提供扩展字段时,该字段为空
- 'sign' => $data['sign']
- ];
- if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
- return false;
- }
- ksort($param);
- $param['secret'] = $channelConfig['appSecret'];
- $string = "";
- foreach ($param as $k => $v) {
- if($k == 'sign' || $v === '' || $v === null){
- continue;
- }
- if ($string) {
- $string .= "&{$k}={$v}";
- } else {
- $string = "{$k}={$v}";
- }
- }
- $sha1 = sha1($string);
- $last32Chars = substr($sha1, -32);
- $sign = strtoupper($last32Chars);
- if ($param['sign'] == $sign) {
- return true;
- }
- return false;
- }
- // ## 回调 - 下单参数获取
- public function getData($data)
- {
- if (!isset($data['cpOrderId']) || !isset($data['amount']) || !isset($data['tradeNo'])) {
- return false;
- }
- return [
- 'orderid' => $data['cpOrderId'], // 我方聚合订单
- 'amount' => formatFenToYuan($data['amount']),// 充值金额(单位:元)
- 'sub_orderid' => $data['tradeNo'], // 渠道订单
- ];
- }
- // ## 回调 - 成功返回
- public function getSuccess($msg = '')
- {
- echo json_encode(['code' => 200, 'message' => 'SUCCESS']);
- exit();
- }
- // ## 回调 - 失败返回
- public function getFail($msg = '')
- {
- echo json_encode(['code' => 22101, 'message' => '接口参数验证不通过']);
- exit();
- }
- }
|