laravel 微信小程序支付处理 - 后记

当我们有这个需求:用户下单以后不付款,客服改价格然后客户付钱。前一篇文档会和这个需求有冲突

Posted by 昆山吴彦祖 on 2019.04.26

长话短说:前一篇文档我们采用了存储微信统一支付订单(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,
	]);
}


easy_wechat 微信支付