扫码支付(模式二)
优质
小牛编辑
136浏览
2023-12-01
说明
微信扫码支付(模式二)SDK。
调用接口,返回地址,生成二维码让用户扫描。
用户支付后,支付回调URL会接收到消息。
官方文档: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1
类
请求参数类
生成url的参数
类名:\Yurun\PaySDK\Weixin\Native\Params\Pay\Mode1Request
属性
名称 | 类型 | 说明 |
---|---|---|
$_apiMethod | string | 接口名称 |
$product_id | string | 商户定义的商品id 或者订单号 |
$time_stamp | int | 系统当前时间 |
$needSignType | boolean | 参数中需要带有sign_type |
$allowReport | boolean | 是否允许上报 |
$_method | string | 接口请求方法 |
$_isSyncVerify | boolean | 是否同步返回验证 |
支付参数
类名:\Yurun\PaySDK\Weixin\Native\Params\Pay\Request
属性
名称 | 类型 | 说明 |
---|---|---|
$scene_info | \Yurun\PaySDK\Weixin\Native\Params\SceneInfo | 场景信息 |
$openid | string | 微信用户在商户对应appid下的唯一标识 |
$sub_openid | string | 微信用户在子商户appid下的唯一标识 |
$_apiMethod | string | 接口名称 |
$device_info | string | 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB" |
$body | string | 商品简单描述,该字段须严格按照规范传递,具体请见https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_2 |
$detail | \Yurun\PaySDK\Weixin\Params\Detail | 商品详细描述,对于使用单品优惠的商户,改字段必须按照规范上传,详见https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_102&index=2 |
$attach | string | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 |
$out_trade_no | string | 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_2 |
$fee_type | string | 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_2 |
$total_fee | string | 订单总金额,单位为分,详见https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_2 |
$spbill_create_ip | string | 必须传正确的用户端IP APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。 |
$time_start | string | 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。 |
$time_expire | string | 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。 注意:最短失效时间间隔必须大于5分钟 |
$goods_tag | string | 订单优惠标记(商品标记) 商品标记,代金券或立减优惠功能的参数,说明详见https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=12_1 |
$notify_url | string | 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 |
$trade_type | string | 交易类型,取值如下:JSAPI,NATIVE,APP等 |
$limit_pay | string | 指定支付方式 no_credit--指定不能使用信用卡支付 |
$needSignType | boolean | 参数中需要带有sign_type |
$allowReport | boolean | 是否允许上报 |
$_method | string | 接口请求方法 |
$_isSyncVerify | boolean | 是否同步返回验证 |
场景信息
类名:\Yurun\PaySDK\Weixin\Native\Params\SceneInfo
属性
名称 | 类型 | 说明 |
---|---|---|
$id | string | 门店唯一标识 |
$name | string | 门店名称 |
$area_code | string | 门店所在地行政区划码,详细见https://pay.weixin.qq.com/wiki/doc/api/download/store_adress.csv |
$address | string | 门店详细地址 |
商品详细描述
类名:\Yurun\PaySDK\Weixin\Params\Detail
属性
名称 | 类型 | 说明 |
---|---|---|
$cost_price | int | 订单原价 1.商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。 2.当订单原价与支付金额不相等,则不享受优惠。 3.该字段主要用于限定同一张小票多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。 |
$receipt_id | string | 商家小票ID |
$goods_detail | array<\Yurun\PaySDK\Weixin\Params\GoodsDetail> | 单品列表 |
单品信息
类名:\Yurun\PaySDK\Weixin\Params\GoodsDetail
属性
名称 | 类型 | 说明 |
---|---|---|
$goods_id | string | 商品编码 |
$wxpay_goods_id | string | 微信侧商品编码 |
$goods_name | string | 商品名称 |
$quantity | int | 商品数量 |
$price | int | 商品单价 |
简单使用
调用接口生成url
// SDK实例化,传入公共配置
$pay = new \Yurun\PaySDK\Weixin\SDK($params);
// 支付接口
$request = new \Yurun\PaySDK\Weixin\Native\Params\Pay\Request;
$request->body = 'test'; // 商品描述
$request->out_trade_no = 'test' . mt_rand(10000000,99999999); // 订单号
$request->total_fee = 1; // 订单总金额,单位为:分
$request->spbill_create_ip = '127.0.0.1'; // 客户端ip
$request->notify_url = $GLOBALS['PAY_CONFIG']['pay_notify_url']; // 异步通知地址
// 调用接口
$result = $pay->execute($request);
$shortUrl = $result['code_url'];
var_dump($result, $shortUrl);
详见:test/Weixin/Native/unifiedorder.php