家政小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RewardController.php 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Models\Reward;
  5. use Carbon\Carbon;
  6. class RewardController extends Controller
  7. {
  8. public function reward(Request $request) {
  9. $wechat_id = $request->header("openid");
  10. if($wechat_id) {
  11. $price = 0.01;
  12. $order_type = "reward";
  13. $reward = new Reward;
  14. $reward->status = 0;
  15. $reward->price = $price;
  16. $reward->wechat_id = $wechat_id;
  17. $reward->save();
  18. $order = CommonController::getRecord($order_type, $reward->id);
  19. // 先判断微信交易是否失效,失效的话需要重新生成份新的系统内部订单,再重新统一下单
  20. if ($wechat_id && $order) {
  21. // 判断微信交易是否失效
  22. if(Carbon::now()->subHour()->gt($order->created_at)) {
  23. $order_new = clone $order;
  24. $order_new->id = null;
  25. $order_new->exists = false;
  26. $order_new->save();
  27. $order->delete();
  28. $order_id = $order_new->id;
  29. }
  30. $out_trade_no = $order_type . "-" . $order_id;
  31. $app = app('wechat.payment');
  32. $result = $app->order->unify([
  33. 'body' => '玥子轩家政',
  34. 'out_trade_no' => $out_trade_no,
  35. 'total_fee' => $order->price * 100,
  36. 'trade_type' => 'JSAPI',
  37. 'openid' => $wechat_id,
  38. 'notify_url' => 'https://wechat.sotype.com/api/payments/wechat-notify',
  39. 'time_expire' => Carbon::now()->addHour()->format('YmdHis')
  40. ]);
  41. if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') {
  42. //第二次签名
  43. //$result = $app->jssdk->appConfig($result['prepay_id']);
  44. //$config = $app->configForAppPayment($result['prepay_id']);
  45. $config = $app->jssdk->sdkConfig($result['prepay_id']);
  46. return response()->json([
  47. "status" => 0,
  48. "code" => "success",
  49. "msg" => $config,
  50. "out_trade_no" => $out_trade_no
  51. ]);
  52. } else {
  53. return response()->json([
  54. "status" => -1,
  55. "message" => '微信支付签名失败:' . var_export($result, 1)
  56. ]);
  57. }
  58. }
  59. }
  60. }
  61. }