'tt07e3715e98c9aac0', // 抖音小程序 APPID 'secret' => 'your_secret_key', // 抖音支付密钥(盐值) 'sandbox' => false, // 是否沙盒环境 'notify_url' => 'https://your-domain.com/api/pay/notify', // 支付回调地址 ]; // 3. 创建抖音支付实例 $platform = 'DouyinMiniProgram'; // 平台标识 $channel = ChannelEnum::CHANNEL_DOUYIN_MINI_PROGRAM; // 'douyin_mini_program' $payService = new PayService('douyin', $platform, $channel); // 4. 支付订单数据示例 $orderData = [ 'out_trade_no' => 'P202312150001', // 商户订单号 'total_amount' => 100, // 支付金额(分) 'subject' => '商城订单支付', // 订单标题 'body' => '购买商品A', // 订单描述 'cp_extra' => 'extra_data', // 开发者自定义字段(可选) ]; try { // 发起支付 $result = $payService->pay($orderData, $config); // $result 是 Yansongda\Supports\Collection 对象 echo "支付请求成功:\n"; echo "order_token: " . $result['order_token'] . "\n"; echo "order_id: " . $result['order_id'] . "\n"; } catch (\Exception $e) { echo "支付失败: " . $e->getMessage() . "\n"; } // 5. 支付回调处理示例 class PayNotifyController { public function douyinNotify() { $payService = new PayService('douyin'); return $payService->notify(function($data, $originData) { // $data 是格式化后的回调数据 // $originData 是原始回调数据 echo "支付成功回调:\n"; echo "商户订单号: " . $data['out_trade_no'] . "\n"; echo "抖音订单号: " . $data['transaction_id'] . "\n"; echo "支付金额: " . $data['pay_fee'] . "分\n"; echo "用户信息: " . $data['buyer_info'] . "\n"; // 这里处理你的业务逻辑 // 1. 验证订单 // 2. 更新订单状态 // 3. 发送通知等 // 返回成功响应给抖音 return 'success'; }); } } // 6. 退款示例 $refundData = [ 'out_trade_no' => 'P202312150001', // 原订单号 'out_refund_no' => 'R202312150001', // 退款单号 'refund_amount' => 50, // 退款金额(分) 'reason' => '用户申请退款', // 退款原因 ]; try { $refundResult = $payService->refund($refundData, $config); echo "退款申请成功:\n"; print_r($refundResult->toArray()); } catch (\Exception $e) { echo "退款失败: " . $e->getMessage() . "\n"; } /** * 重要配置说明: * * 1. 抖音支付配置文件位置: * application/extra/pay.php 或相关配置文件中添加: * * 'douyin' => [ * 'default' => [ * 'app_id' => 'tt07e3715e98c9aac0', * 'secret' => 'your_secret_key', * 'mode' => \Yansongda\Pay\Pay::MODE_NORMAL, // 或 MODE_SANDBOX * 'notify_url' => 'https://your-domain.com/api/pay/notify/douyin', * ] * ] * * 2. 平台和渠道映射: * - 前端传入:platform = 'DouyinMiniProgram' * - 渠道标识:channel = 'douyin_mini_program' * - 支付方式:payment = 'douyin' * * 3. 金额单位: * - 抖音支付使用"分"作为金额单位 * - 传入金额时需要乘以100(1元 = 100分) * * 4. openid 获取: * - 抖音小程序支付需要用户的openid * - 通过抖音小程序API获取用户openid后传给后端 * * 5. 回调处理: * - 支付成功回调:/api/pay/notify/payment/douyin * - 退款成功回调:/api/pay/notifyRefund/payment/douyin */