当前位置: 首页 > 后端技术 > PHP

PHP微信支付开发(二)

时间:2023-03-29 16:20:28 PHP

前提条件回顾上一节微信支付的申请流程和准备工作。如果不知道如何申请,可以点击PHP微信支付开发(一)查看,做好准备工作;本节讲述如何使用PHP开发微信支付点。快速开发介绍一个微信支付点PHP,就是wechatpaypoint,可以点击链接查看它的github,然后说明使用方法:首先通过composer下载:$composerrequiremiposent/wechatpaypoint接下来初始化:'wx0f3a4b0dcafxxxx',//公众账号ID'mch_id'=>'157952xxxx',//支付商户ID'service_id'=>'0000200000000015984369xxxxxxxxxx',//服务ID'key'=>'009DA8BDD9A5AECFED72F3xxxxxxxxxx',//支付key'v3key'=>'1BA00441A40AD15D1D2C54xxxxxxxxxx',//支付v3key'serial_no'=>'3F389F9F2D414CF22E156Dxxxxxxxxxxxxxxxxx',//证书序号'private_key'=>'/cert/apiclient_key.pem',//证书'public_key'=>'/cert/apiclient_cert.pem',];$app=WxPayPointRequest::getInstance($config);注意:上面的appid是其中一个小程序/h5/app的appid;mch_id为微信支付商户号;service_id为微信支付的服务ID;key为微信支付的APIkey;v3key为微信支付的APIv3key;serial_no为证书编号;private_key和public_key是证书的路径。使用publicAPI创建支付订单API进行演示:$param=['out_order_no'=>'202009171036252525','service_introduction'=>'飞机租赁服务','time_range'=>['start_time'=>"OnAccept"],'risk_fund'=>['name'=>'存款','金额'=>9900,],'notify_url'=>'https://www.baidu.com'];$data=$app->createBill($param);注意:这样就创建成功了,获取到小程序或h5或app中需要的mch_id、package、timestamp、nonce_str、sign_type和sign,然后传递给前端。以上是基本操作。API需要的参数按照微信支付通用文档要求传入。我们不需要考虑参数是path、query、body,也不需要考虑参数是array还是object;我们把需要的path和query和body参数传入就可以了,比如下面这个查询支付子订单的API例子:$param=['out_order_no'=>'202009171036252525',];$data=$app->queryBill($param);注意:查询订单需要的参数都是query,因为SDK已经帮我们封装好了,所以我们不用考虑参数的类型和要求。本例中之所以没有传入service_id和appid,是因为我们在初始化的时候已经填好了,可以填也可以不填,影响不大。其他方法:免确认模式的具体API中创建和语句合并的API:$data=$app->directComplete($param);免确认模式具体接口中查询用户授权状态的接口(普通授权方式):$data=$app->userServiceState($param);商家在唯一免确认API(普通授权方式)中取消用户授权关系API:$data=$app->terminate($param);独有免确认API(预授权方式)商户预授权API在:$data=$app->permission($param);免确认唯一API(预授权方式)中查询和用户授权记录(授权协议号)API:$data=$app->authCodePermission($param);独有免确认API(预授权方式)中未授权用户授权关系(授权协议号)API:$data=$app->authCodeTerminate($param);独特的免确认API(预授权方式)查询和用户授权记录(openid)API:$data=$app->openidPermission($param);独有免确认API(预授权方式)中取消用户授权关系(openid)API:$data=$app->openidTerminate($param);在公共API中创建支付订单API:$data=$app->createBill($param);公共API查询支付订单API:$data=$app->queryBill($param);公共API中取消支付子订单API:$data=$app->cancelBill($param);公共API中修改订单金额API:$data=$app->modifyBill($param);API中public完成支付子订单API:$data=$app->completeBill($param);公共API商户发起收扣API:$data=$app->payBill($param);在公共APISync服务订单信息API中:$data=$app->syncBill($param);异步通知操作静态类异步通知参数解密:$data=NotifyHandle::notifyDecode($associatedData,$nonce,$ciphertext,$v3key);异步通知返回:#SuccessreturnNotifyHandle::sendSuccessReturn();#失败返回NotifyHandle::sendFailReturn("FAIL","ORDER_ERROR");更多信息请参考微信支付SDK和微信支付通用文档