有做过H5的支付 最近在做小程序的支付相关 就趁机来整理一波叭
首先在这里我们使用的是onemipay
先在composer下载如下类包

然后 我们接下来 写微信支付 支付宝支付相关,可以把这些方法封装一下。我们先讲接入微信支付
1:首先具当前小程序的对应的 APP_ID,SECRET,MCH_ID,API_KEY,记得登录商家后台 添加回对应的 授权回调目录
这里先构造支付网关,项目里的H5支付,小程序支付,APP,支付都可以根据此来延伸开。这里目前只有支付宝支付 微信支付两种方式


2:注意 小程序支付使用的是WechatPay_Js支付方式,在这里设置好 app_id ,mch_id _api_key等信息,对啦 再次还有一个微信回调地址 不要忘记设置哦

3:接下来就是支付宝支付,构造对应网关,设置相关信息,因为是在小程序中进行支付宝支付,不能直接跳转到支付宝,所以在这里是生成相应支付链接,到支付宝进行支付。此有一点是 ,由于项目中链接过长(请求参数/用户标识token) ,可进行一次短连接转化,这一部分可放在前端处理,也可以放在后端进行处理,根据项目实际情况来定。
支付接口贴代码
/**
* 支付
* @param Request $request
*/
public function pay(Request $request)
{
if (!$request->has('order_id'))
return new TheParameterIsEmpty();
$au_id = $request->get('au_id');
$orderId = $request->input('order_id');
$payGenre = $request->input('pay_gateway');
$WeChat_type = $request->input('WeChat_type', 2);//默认 JSAPI
$return_url = $request->input('return_url', '');
$order = ActivityOrder::getActivityOrder($orderId, $au_id);
if (!$order instanceof ActivityOrder) return response_json(11029, config('code.11029'));
$ActivityMarketing = ActivityMarket::getActByAmId($order->am_id);
if (!$ActivityMarketing instanceof ActivityMarket) return response_json(11010, config('code.11010'));
if ($ActivityMarketing->join_stint != 0 && $ActivityMarketing->join_stint <= $ActivityMarketing->join_stint_num)
return response_json(11011, config('code.11011'));
ActivityOrderRepository::setPayGenre($order, $payGenre);
$gateway = PayGateFactory::getPayGate($payGenre);
try {
return $this->getPayParameter($order, $gateway, $return_url ,$WeChat_type);
} catch (Exception $exception) {
Log::error($exception);
return response_json(500, '服务器错误');
}
}
/**
* @param ActivityOrder $order
* @param GatewayInterface $gateway
* @param $return_url //支付宝网页支付成功跳转地址
* @param $WeChat_type 2:JSAPI 3:H5
* @return \Illuminate\Http\JsonResponse
*/
protected function getPayParameter(ActivityOrder $order, GatewayInterface $gateway, $return_url, $WeChat_type)
{
$pay_type = $gateway instanceof AliPay ? 'AliPay' : 'WeChatPay';
$parameter = 1;
if ($pay_type == 'AliPay'){
$parameter = 2;//支付宝网页支付
} elseif ($pay_type == 'WeChatPay') {
$parameter = $WeChat_type;
}
$gateway->getGateway($parameter);
$gateway->setNotifyUrl('shop-ay/ny');
if ($pay_type == 'AliPay') $gateway->setReturnUrl($return_url);
$gateway->setGatewayOrder($order);
// if ($pay_type == 'WeChatPay') $gateway->setTimeExpire(date('yymdHms', time()+300));
$data = $gateway->response();
return response_json($data);
}
最后如果成功的话 请求返回应该是

注意:前端在对应调微信支付时 字段顺序要后对应后端加密的顺序一致哦 不然会出问题的
好啦 就到此为止啦
本文详细介绍了如何在小程序中实现微信支付和支付宝支付,包括网关构造、参数设置和回调处理,重点在于微信JSAPI支付和支付宝链接生成的方法。
1万+

被折叠的 条评论
为什么被折叠?



