长话短说:前一篇文档我们采用了存储微信统一支付订单(2小时有效期),用户可以在有效期内再次发起支付,这次我们采用用户每次重新支付,重新生成新的统一订单
更新立即付款接口:
//立即付款接口
public function pay(Request $request){
$order = Order::find($request->order_id);
//数据验证
//生成新的订单号,用于生成新的微信统一订单
if(str_contains($order->code, 'X')){
$order->code = str_before($order->code, 'X').'X'.(str_after($order->code, 'X')+1);
}else{
$order->code = $order->code.'X1';
}
$order->save();
$app = app('easywechat.payment');
$unify = $app->order->unify([
'body' => $order->orderItem[0]->good->title . ' ' . $order->orderItem[0]->num . '...',
'out_trade_no' => $order->code,
'total_fee' => ($order->price_express+$order->price_good)*100,
'trade_type' => 'JSAPI',
'openid' => Customer::find($request->customer_id)->open_id, // 用户的openid
]);
if ($unify['return_code'] === 'SUCCESS' && !isset($unify['err_code'])) {
$jssdk = $app->jssdk;
$pay = $jssdk->bridgeConfig($unify['prepay_id'], false);// 返回数组
$type = $order->type;
} else {
//$unify['return_code'] = 'FAIL';
Log::info($unify);
return response()->json([
'info' => false,
'errmsg'=> '支付订单创建失败',
]);
}
return response()->json([
'info' => true,
'pay'=>$pay,
'type'=>$type,
]);
}