拉卡拉支付进行中

This commit is contained in:
qinzexin 2025-08-09 18:32:09 +08:00
parent d88aeb6621
commit 47f0ba1119
5 changed files with 163 additions and 14 deletions

View File

@ -56,8 +56,8 @@ class Demo extends Api
// 主扫交易参数
$request = new \Lakala\OpenAPISDK\V3\Model\TransPreorderRequest();
// 必填参数
$request->setMerchantNo('822290059430BFA');
$request->setTermNo('D9261078');
$request->setMerchantNo('82249307372005M');
$request->setTermNo('L4678871');
$request->setOutTradeNo(date('YmdHis', time()));
$request->setAccountType('WECHAT');
$request->setTransType('71');
@ -109,20 +109,27 @@ class Demo extends Api
try {
$response = $api->transPreorder($request);
if ($response->getRespData()) {
print_r($response->getRespData());
print_r($response->getAccRespFields());
}
else {
print_r($response);
}
echo $response->getCode();
# 响应头信息
print_r($response->getHeaders());
// if ($response->getRespData()) {
// print_r($response->getRespData());
// print_r($response->getAccRespFields());
// }
// else {
// print_r($response);
// }
$bbs_code = $response->getCode();
$responsedata = json_decode($response->getOriginalText(),true);
if($bbs_code != "BBS00000"){
var_dump($responsedata["msg"],$responsedata["code"]);
}else{
# 响应原文
echo $response->getOriginalText();
}
//
// # 响应头信息
// print_r($response->getHeaders());
} catch (\Lakala\OpenAPISDK\V3\ApiException $e) {
echo $e->getMessage();
}

View File

@ -325,6 +325,15 @@ class Activity extends BaseModel
public function lakala()
{
return $this->belongsTo(LakalaBusiness::class, 'user_id', 'user_id', [], 'LEFT')->setEagerlyType(0);
}
/** 更新或新增后判断
* @param $classes_activity_id
* @return void

View File

@ -3,6 +3,7 @@
namespace app\common\model\school\activity\order;
use addons\epay\library\Service;
use addons\third\model\Third;
use app\admin\model\Admin;
use app\admin\model\Manystore;
use app\common\model\BaseModel;
@ -2734,6 +2735,127 @@ class Order extends BaseModel
}
/** 得到拉卡拉订单支付参数
* @param $order_no
* @return void
*/
public static function getLakalaOrderPayParams($order_no,$platform ="wechat",$open_id = null){
$order = self::getOrder($order_no);
$detail = $order->detail;
if(!$detail)throw new \Exception("找不到活动!");
$lakalaBusiness = LakalaBusiness::where("user_id",$detail["user_id"]);
$lakala = $lakalaBusiness->where("status",config("site.lakala_test_switch")? '2':'1' )->find();
if(!$lakala)throw new \Exception("商户未开通拉卡拉钱包不具备收款能力!");
//金额需大于0
if($order["totalprice"] <= 0)throw new \Exception("金额需大于0");
// 单位分
$totalAmount = (int)bcmul(100,$order["totalprice"] ,0);
//lakala
//拼装支付参数
$lakala = lakala_sdk();
$tradeLocationInfo = new \Lakala\OpenAPISDK\V3\Model\TradeLocationInfo($lakala->getClientIp());
// 主扫交易Api
$api = $lakala->v3(\Lakala\OpenAPISDK\V3\Api\TransPreorderApi::class);
// 主扫交易参数
$request = new \Lakala\OpenAPISDK\V3\Model\TransPreorderRequest();
// 必填参数
$request->setMerchantNo($lakala["merchant_no"]);
$request->setTermNo($lakala["online_scanning_terminal_no"]);
$request->setOutTradeNo($order["order_no"]);
$request->setAccountType('WECHAT');
$request->setTransType('71');
$request->setTotalAmount($totalAmount); // 单位分
$request->setLocationInfo($tradeLocationInfo);
$request->setSubject('多样青春搭+活动:'.$detail["title"].'报名支付');
$type = "lakala";
$method = "miniapp";
// 非必填参数
// $request->setBusiMode('');
// $request->setPayOrderNo('');
$notifyurl = request()->root(true) . '/api/school.newactivity.pay/notifyx/paytype/' . $type. '/platform/' . $method;
$request->setNotifyUrl($notifyurl);
// $request->setSettleType('');
// $request->setRemark('');
// $request->setPromoInfo('');
// $request->setOutOrderNo('');
// $request->setPnrInsIdCd('');
// 没有 openid 默认拿下单人的 openid
$oauth = Third::where([
'user_id' => $order->user_id,
'platform' => $platform,
'apptype' => $method
])->find();
if(!$open_id)$openid = $oauth ? $oauth->openid : '';
if (!$openid) {
// 缺少 openid
throw new \Exception("请您重新授权登录再下单");
}
// 微信主扫场景 - 账户端业务信息
$acc_busi_fields = $lakala->getTradePreorderWechaAccBusiFields($openid);
// $acc_busi_fields->setTimeoutExpress('');
// $acc_busi_fields->setSubAppid('wxd7e2deffbaa22254');
// $acc_busi_fields->setUserId('ohjUL7XWERU9rDfeNdvbxxil8jZY');
// $acc_busi_fields->setDetail('');
// $acc_busi_fields->setGoodsTag('');
// $acc_busi_fields->setAttach('');
// $acc_busi_fields->setDeviceInfo('');
// $acc_busi_fields->setLimitPay('');
// $acc_busi_fields->setSceneInfo('');
// $acc_busi_fields->setLimitPayer('');
// $detail = new \Lakala\OpenAPISDK\V3\Model\TradePreorderWechaDetail;
// $detail->setCostPrice('1.00');
// $detail->setReceiptId('');
// $goods_detail = new \Lakala\OpenAPISDK\V3\Model\TradePreorderWechaGoodsDetail;
// $goods_detail->setGoodsId('3452234');
//// $goods_detail->setWxpayGoodsId('');
//// $goods_detail->setGoodsName('测试商品1');
// $goods_detail->setQuantity(1.0);
// $goods_detail->setPrice(1.0);
// $detail->setGoodsDetail([$goods_detail]);
//
// $acc_busi_fields->setDetail($detail);
//
//// 账户端业务信息
$request->setAccBusiFields($acc_busi_fields);
// try {
$response = $api->transPreorder($request);
if ($response->getRespData()) {
print_r($response->getRespData());
print_r($response->getAccRespFields());
}
else {
print_r($response);
}
echo $response->getCode();
# 响应头信息
print_r($response->getHeaders());
# 响应原文
echo $response->getOriginalText();
// } catch (\Lakala\OpenAPISDK\V3\ApiException $e) {
// echo $e->getMessage();
// }
return $response->getOriginalText();
}

View File

@ -3,6 +3,7 @@
namespace app\common\model\school\activity\order;
use app\common\model\BaseModel;
use app\common\model\manystore\LakalaBusiness;
use app\common\model\school\activity\Activity;
use think\Model;
use traits\model\SoftDelete;
@ -206,6 +207,12 @@ class OrderDetail extends BaseModel
}
public function lakala()
{
return $this->belongsTo(LakalaBusiness::class, 'user_id', 'user_id', [], 'LEFT')->setEagerlyType(0);
}
public function order()
{
return $this->belongsTo(Order::class, 'activity_order_id', 'id', [], 'LEFT')->setEagerlyType(0);

View File

@ -4,6 +4,10 @@ namespace bw\lakala;
/**
* 拉卡拉服务工厂
* @package bw\lakala
* @author 焦钰锟
* @date 2025/08/06
*
*/
class LakalaService
{