mip-inservice-pay 极速服务 支付组件

为mip站长 提供支付调起服务组件,支持百付宝、支付宝、微信  mip-inservice-pay 极速服务 支付组件件  - 图1

标题 内容
类型 通用
支持布局 N/S
所需脚本 https://c.mipcdn.com/static/v2/mip-inservice-pay/mip-inservice-pay.js

说明

需在传入属性pay-config数据配置

示例

  1. <mip-data>
  2. <script type="application/json">
  3. {
  4. "payConfig":{
  5. "subject":"支付商品",
  6. "fee": 300,
  7. "sessionId":"c8fbd3e0-a617-4eac-84b3-1f289c5ce857",
  8. "redirectUrl":"https://api.example.com/pay/verifypay",
  9. "endpoint":{
  10. "baifubao": "https://api.example.com/pay/baifubao",
  11. "alipay": "https://api.example.com/pay/alipay",
  12. "weixin": "https://api.example.com/pay/weixin"
  13. },
  14. "postData":{
  15. "orderId": 235,
  16. "token": "xxxx",
  17. "anydata":"anydata"
  18. }
  19. }
  20. }
  21. </script>
  22. </mip-data>
  23. <mip-inservice-pay m-bind:pay-config="payConfig" id="payDialog"></mip-inservice-pay>
  24. <button on="tap:payDialog.toggle">确定支付</button>

属性 pay-config

payConfig.subject

说明:订单名称 必选项:是类型:string示例:"蓝犀牛订单"

payConfig.fee

说明:订单金额 必选项:是类型:number示例:300元

payConfig.sessionId

说明:会话凭证, 请求支付接口时传入后台进行校验 必选项:是类型:string示例:300元

payConfig.redirectUrl

说明:微信内支付成功后跳转链接 必选项:是 类型:string示例:"http://www.baidu.com/"

payConfig.endpoint {#endpoint}

说明:后端源站支付接口链接,需要使用 https:// 或者 // 开头的源站地址,需要接口支持 HTTPS ,使用 POST 形式发送数据 必选项:是 类型:object示例:{"baifubao":"https://api.example.com/pay.php", alipay:xxx, weixin:xxx} 说明:后端跨域说明后端数据说明会话凭证 sessionId

注意事项

1.怎样 动态配置更改payConfig

因数据配置在mip-data中以及数据通过 props传递给 支付组件,故可通过 MIP.setData动态设置postDatasessionId等数据

2. 后端需要支持 CORS + withCredentials

  • CORS 文档
  • withCredentials 附带身份凭证的请求 支付组件(mip-simple-pay)已经在前端发送请求时处理了 withCredentials ,需要对应的接口服务响应头设置:

  • Access-Control-Allow-Credentials: true

  • Access-Control-Allow-Origin: 对应请求的 origin 注意:出于安全考虑请对来源的 origin 进行判断,并正确的返回 Access-Control-Allow-Origin 字段,不能为 *

3. 后端数据说明

请求:

名称 说明
请求链接 payConfig.endpoint
请求类型 POST
请求参数 {sessionId: '会话凭证', state: '需要在支付完成后回传给 MIP oob 回调链接中', …}

异常情况,status0 时为失败:

  1. {
  2. "status": 403,
  3. "msg":"支付错误信息"
  4. }

成功:

支付类型为 nomal|alipay

  1. {
  2. "status": 0,
  3. "data": {
  4. "url": "https://付款链接"
  5. }
  6. }

支付类型为 weixin

  • 微信外环境
  1. {
  2. "status": 0,
  3. "data": {
  4. "url": "https://付款链接"
  5. }
  6. }
  • 微信内环境

微信内判断方法

  1. {
  2. "status": 0,
  3. "data": {
  4. "appId": "wx3dxxxxxxxx",
  5. "timeStamp": "1527508907",
  6. "nonceStr": "ASDFWSACSDCDSGA",
  7. "package": "prepay_id=wx3dxxxxxxxx",
  8. "signType": "MD5",
  9. "paySign": "SADF98S0A9D00A9S09A0SDCASD",
  10. "timestamp": "1527508907"
  11. }
  12. }

注意:付款成功后回调链接应该为源站后端订单处理链接,如:https://支付链接?callback=urlencode('https://api.mipengine.org/order?id=1&#39;) ,回调链接(https://api.mipengine.org/order?id=1)在支付完成后处理完成订单数据后重定向到 统一支付成功页面

格式如:

  1. https://xiongzhang.baidu.com/opensc/wps/payment?id=熊掌号ID&redirect=显示支付完成页面,必须是MIP页面

4. 会话凭证 sessionId

由于在 iOS 对跨域透传 cooke 的限制(https://webkit.org/blog/7675/intelligent-tracking-prevention/),由登录组件统一记录会话标识,并透传给支付组件,在发送支付请求时携带,后端应该优先使用 cookie > sessionId 校验登录状态。

4. 百度搜索结果页降级处理

在百度搜索页打开使用该组件页面时,由于有些支付密码输入框在 iframe 框架下有问题,在调用提交支付接口时做了降级处理,处理方式为跳转源站。包括以下设备、浏览器:

  • iOS设备下的手百App

原文: https://www.mipengine.org/v2/components/dynamic-content/mip-inservice-pay.html