# wx.requestCommonPayment(Object object)

> 基础库 2.19.2 开始支持，低版本需做[兼容处理](1003706)。

> __以 [Promise 风格](/miniprogram/dev/framework/app-service/api.md#异步-API-返回-Promise) 调用__：不支持
> 
> __小程序插件__：不支持

## 功能描述

发起通用支付。目前该接口仅支持 B2b 支付类型。

## 参数

### Object object


```json
[
  {
    "属性": "mode",
    "类型": "string",
    "默认值": "",
    "必填": "是",
    "说明": "支付的类型",
    "子项": [
      {
        "合法值": "retail_pay_goods",
        "说明": "B2b支付"
      },
      {
        "合法值": "retail_pay_indirect_goods",
        "说明": "间接支付"
      },
      {
        "合法值": "retail_pay_combined_goods",
        "说明": "合单支付"
      },
      {
        "合法值": "retail_pay_goods_new",
        "说明": "多渠道B2b支付"
      }
    ]
  },
  {
    "属性": "signData",
    "类型": "Object",
    "默认值": "",
    "必填": "是",
    "说明": "具体支付参数见signData, 该参数需以string形式传递, 例如signData: '{\"mchid\":\"1234567890\",\"out_trade_no\":\"test1244\",\"description\":\"测试测试\",\"amount\":{\"order_amount\":1,\"currency\":\"CNY\"},\"attach\":\"test_attach\",\"env\":1}'",
    "子项": [
      {
        "结构属性": "mchid",
        "类型": "string",
        "默认值": "",
        "必填": "是",
        "说明": "由微信支付生成并下发的商户号。示例值：1230000109"
      },
      {
        "结构属性": "out_trade_no",
        "类型": "string",
        "默认值": "",
        "必填": "是",
        "说明": "商户系统内部订单号，只能是数字、大小写字母_-*且在同一个商户号下唯一，长度限制为[6,32]。示例值：1217752501201407033233368018"
      },
      {
        "结构属性": "description",
        "类型": "string",
        "默认值": "",
        "必填": "是",
        "说明": "商品描述。示例值：Image形象店-深圳腾大-QQ公仔"
      },
      {
        "结构属性": "amount",
        "类型": "Object",
        "默认值": "",
        "必填": "是",
        "说明": "订单金额信息。",
        "子项": [
          {
            "结构属性": "product_amount",
            "类型": "number",
            "默认值": "",
            "必填": "否",
            "说明": "订单所有商品的原价总和，单位为分。示例值：1000"
          },
          {
            "结构属性": "freight",
            "类型": "number",
            "默认值": "",
            "必填": "否",
            "说明": "订单运费，单位为分。示例值：200"
          },
          {
            "结构属性": "discount",
            "类型": "number",
            "默认值": "",
            "必填": "否",
            "说明": "订单总计优惠金额，单位为分。示例值：500"
          },
          {
            "结构属性": "other_fee",
            "类型": "number",
            "默认值": "",
            "必填": "否",
            "说明": "订单其他费用总金额，单位为分。示例值：600"
          },
          {
            "结构属性": "order_amount",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "订单总需支付金额，也即是真正下单总金额，单位为分。示例值：1300"
          },
          {
            "结构属性": "currency",
            "类型": "string",
            "默认值": "",
            "必填": "否",
            "说明": "货币类型。示例值：CNY",
            "子项": [
              {
                "合法值": "CNY",
                "说明": "人民币"
              }
            ]
          }
        ]
      },
      {
        "结构属性": "attach",
        "类型": "string",
        "默认值": "",
        "必填": "否",
        "说明": "附加数据，在查询API和支付通知中原样返回，可作为自定义参数使用，实际情况下只有支付完成状态才会返回该字段。示例值：test_attach"
      },
      {
        "结构属性": "product_info",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "订单详细商品信息列表。",
        "子项": [
          {
            "结构属性": "spu_id",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商户系统内该商品的spuid。示例值：spu123456"
          },
          {
            "结构属性": "sku_id",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商户系统内该商品的skuid。示例值：sku123"
          },
          {
            "结构属性": "title",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商品标题。示例值：QQ长鹅"
          },
          {
            "结构属性": "path",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商户商品详请页小程序路径。示例值：pages/index"
          },
          {
            "结构属性": "head_img",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商品主图的url，大小建议64*64。示例值：https://mp.weixin.qq.com/123"
          },
          {
            "结构属性": "category",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商户侧该商品所属的类目。示例值：玩偶"
          },
          {
            "结构属性": "sku_attr",
            "类型": "string",
            "默认值": "",
            "必填": "是",
            "说明": "商户系统内该商品的sku属性。示例值：50cm"
          },
          {
            "结构属性": "org_price",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "该商品原价，单位为分。示例值：5000"
          },
          {
            "结构属性": "sale_price",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "该商品售价，单位为分。示例值：4000"
          },
          {
            "结构属性": "quantity",
            "类型": "number",
            "默认值": "",
            "必填": "是",
            "说明": "用户购买该商品的数量。示例值：5"
          }
        ]
      },
      {
        "结构属性": "delivery_type",
        "类型": "number",
        "默认值": "",
        "必填": "否",
        "说明": "配送方式。示例值：2",
        "子项": [
          {
            "合法值": "1",
            "说明": "同城配送"
          },
          {
            "合法值": "2",
            "说明": "快递配送"
          },
          {
            "合法值": "3",
            "说明": "门店自提"
          },
          {
            "合法值": "4",
            "说明": "无需配送与提货"
          }
        ]
      },
      {
        "结构属性": "env",
        "类型": "number",
        "默认值": "",
        "必填": "是",
        "说明": "下单环境。示例值：0",
        "子项": [
          {
            "合法值": "0",
            "说明": "生产环境/现网环境"
          },
          {
            "合法值": "1",
            "说明": "沙箱环境/测试环境"
          }
        ]
      },
      {
        "结构属性": "requestPaymentInfo",
        "类型": "Object",
        "默认值": "",
        "必填": "否",
        "说明": "B2b间连支付场景下，调用requestPaymentInfo的参数",
        "子项": [
          {
            "结构属性": "timeStamp",
            "类型": "string",
            "默认值": "",
            "必填": "否",
            "说明": "时间戳，从 1970 年 1 月 1 日 00:00:00 至今的秒数，即当前的时间"
          },
          {
            "结构属性": "nonceStr",
            "类型": "string",
            "默认值": "",
            "必填": "否",
            "说明": "随机字符串，长度为32个字符以下"
          },
          {
            "结构属性": "package",
            "类型": "string",
            "默认值": "",
            "必填": "否",
            "说明": "统一下单接口返回的 prepay_id 参数值，提交格式如：prepay_id=***"
          },
          {
            "结构属性": "signType",
            "类型": "string",
            "默认值": "",
            "必填": "否",
            "说明": "签名算法，应与后台下单时的值一致"
          },
          {
            "结构属性": "paySign",
            "类型": "string",
            "默认值": "",
            "必填": "否",
            "说明": "签名，具体见微信支付文档"
          }
        ]
      }
    ]
  },
  {
    "属性": "paySig",
    "类型": "string",
    "默认值": "",
    "必填": "是",
    "说明": "支付签名, 详见[《签名详解》](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)"
  },
  {
    "属性": "signature",
    "类型": "string",
    "默认值": "",
    "必填": "是",
    "说明": "用户态签名, 详见[《签名详解》](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)"
  },
  {
    "属性": "success",
    "类型": "function",
    "默认值": "",
    "必填": "否",
    "说明": "接口调用成功的回调函数"
  },
  {
    "属性": "fail",
    "类型": "function",
    "默认值": "",
    "必填": "否",
    "说明": "接口调用失败的回调函数"
  },
  {
    "属性": "complete",
    "类型": "function",
    "默认值": "",
    "必填": "否",
    "说明": "接口调用结束的回调函数（调用成功、失败都会执行）"
  }
]
```

#### object.success 回调函数
##### 参数

###### Object res

| 属性 | 类型 | 说明 |
| ---- | ---- | ---- |
| errMsg  | string | 调用成功信息 |

#### object.fail 回调函数
##### 参数

###### Object err

| 属性 | 类型 | 说明 |
| ---- | ---- | ---- |
| errMsg  | string | 错误信息 |
| errno  | number | 错误码 |

## 错误
| 错误码 | 错误信息 | 说明 |
| -- | ---- | --- |
| 1000 |  | 系统错误 |
| 1022 |  | 参数json格式非法 |
| 702001 |  | 参数错误，具体原因见errMsg |
| 702002 |  | 用户态签名错误 |
| 702003 |  | 支付签名错误 |
| 702004 |  | mode不合法 |
| 702005 |  | out_trade_no重复，请更换新单号重试 |
| 702006 |  | 二级商户进件未完成 |
| 702007 |  | 用户未授权给品牌 |
| 702008 |  | 正式版小程序只能用生产环境下单 |
| 702009 |  | B2b授权关系校验不通过 |

## 注意事项：

## 示例代码

```js
  wx.requestCommonPayment({
    signData: JSON.stringify({
      mchid: '1234567890',
      out_trade_no: 'test1244',
    description: '测试测试',
    amount: {
      order_amount: 1,
      currency: 'CNY'
    },
    attach: 'test_attach',
    product_info: {
      product_list: [{
        spu_id: 'spu123456',
        sku_id: 'sku123',
        title: 'QQ长鹅',
        path: 'pages/index',
        head_img: 'https://mp.weixin.qq.com/123',
        category: '玩偶',
        sku_attr: '50cm',
        org_price: 5000,
        sale_price: 4000,
        quantity: 5
      }]
    },
    delivery_type: 2,
      env: 0
    }),
    paySig: 'd0b8bbccbe109b11549bcfd6602b08711f46600965253a949cd6a2b895152f9d',
    signature: 'd0b8bbccbe109b11549bcfd6602b08711f46600965253a949cd6a2b895152f9d',
    mode: 'retail_pay_goods',
    success(res) {
      console.log('requestCommonPayment success', res)
    },
    fail({ errMsg, errno }) {
      console.error(errMsg, errno)
    },
  })
```
